Consider locating all multi-outlet components as nodes; Where possible using relative locations, not absolute as in my code, I did it to nest them in a for loop, to do so you can use help lines, then you can start creating the connections with the corresponding bipoles using the coordinates of each node created, Also add the code to be able to place 2 lines in the names of the components. For the rest such as the use of endings, changing the size of each family of components consult the manual of course. I also recommend that you consult the visual manual of tikz so that you can see how to use relative locations, in midpoints and intersections.
RESULT:

MWE:
\documentclass[tikz,border=1cm]{standalone}
\usepackage[american currents]{circuitikz}
% This code is from Claudio Fiandrino https://tex.stackexchange.com/a/65792/154390
% Ads new label styles to allow aditional labels like two line descriptions.
\makeatletter
\ctikzset{lx/.code args={#1 and #2}{
\pgfkeys{/tikz/circuitikz/bipole/label/name=\parbox{1cm}{\centering #1 \\ #2}}
\ctikzsetvalof{bipole/label/unit}{}
\ifpgf@circ@siunitx
\pgf@circ@handleSI{#2}
\ifpgf@circ@siunitx@res
\edef\pgf@temp{\pgf@circ@handleSI@val}
\pgfkeyslet{/tikz/circuitikz/bipole/label/name}{\pgf@temp}
\edef\pgf@temp{\pgf@circ@handleSI@unit}
\pgfkeyslet{/tikz/circuitikz/bipole/label/unit}{\pgf@temp}
\else
\fi
\else
\fi
}}
\ctikzset{lx^/.style args={#1 and #2}{
lx=#2 and #1,
\circuitikzbasekey/bipole/label/position=90 }
}
\ctikzset{lx_/.style args={#1 and #2}{
lx=#1 and #2,
\circuitikzbasekey/bipole/label/position=-90 }
}
\makeatother
\begin{document}
\begin{tikzpicture}[]
%Size adjust
\ctikzset{nodes width/.initial=0.05}
\ctikzset{transistors/arrow pos=end}
\ctikzset{bipoles/thickness=0.75}
\ctikzset{sources/scale=0.75}
\ctikzset{diodes/scale=0.5}
% Canvas help lines.
\def\wcanvas{15}
\def\hcanvas{12}
\draw[red!5,step=0.25] (0,0) grid (\wcanvas,-\hcanvas);
\draw[cyan!40,step=1,line width=1] (0,0) grid (\wcanvas,-\hcanvas);
\foreach \x in {0, ..., \wcanvas} {%
\node[anchor=-90] at (\x,0) {\tiny\x};
\node[anchor=90] at (\x,-\hcanvas) {\tiny\x};
}
\foreach \y in {0, ..., \hcanvas} {%
\node[anchor=0] at (0,-\y) {\tiny-\y};
\node[anchor=180] at (\wcanvas,-\y) {\tiny-\y};
}
%Create each transistor by type, orientation, ID,name,xposition,yposition.
%
\foreach \nodetype/\xscal/\alias/\name/\px/\py in {
npn/1/Q1/Q1/2/-3,
npn/-1/Q2/\ctikzflipx{Q2}/5/-3,
pnp/-1/Q3/\ctikzflipx{Q3}/2/-4.25,
pnp/1/Q4/Q4/5/-4.25,
npn/-1/Q5/\ctikzflipx{Q5}/2/-9,
npn/1/Q6/Q6/5/-9,
npn/1/Q16/Q16/7/-8.25,
npn/1/Q17/Q17/9/-9,
npn/1/Q22/Q22/11/-8.25,
npn/1/Q14/Q14/13/-4,
npn/1/Q20/Q20/13/-7%%
}{\node[\nodetype,xscale=\xscal](\alias) at (\px,\py) {\name};}
\draw[color=black!40!red]
(6,-1.5)
node[anchor=-90,inner sep=7pt]{$V_{CC}$}
to [short,o-*] ++(0,-0.5) coordinate (lineVcc)
-| (Q1.C)
(Q1.B)
to [short,-o] ++ (-0.25,0)
node[anchor=0,inner sep=7pt]{$V_{P}$}
(Q3.B)
-- (Q4.B)
($(Q3.B)!0.5!(Q4.B)$)
to [I,*-o,lx_=$Q_{10}$ and $I_1$] ++ (0,-1.5)
node[anchor=90,inner sep=7pt]{$V_{EE}$}
(Q3.C)
-- (Q5.C)
to [short,*-] ++ (1.5,0) coordinate (temp)
to [short,-*] (Q5.B-|temp)
(Q5.B)
-- (Q6.B)
(Q5.E)
|- (6,-10) coordinate (lineVee)
to [short,*-o] ++ (0,-0.5)
node[anchor=90,inner sep=7pt]{$V_{EE}$};
\draw[color=black!40!green]
(Q2.C)
to [short,-*] (Q2.C|-lineVcc)
(Q2.B)
to [short,-o] ++ (0.25,0)
node[anchor=180,inner sep=7pt]{$v_{N}$}
(Q4.C)
-- (Q6.C)
to [short,*-](Q16.B)
(Q4.C)
(Q6.E)
to [short,-*](Q6.E|-lineVee)
(Q16.C)
to [short,-o]++(0,0.25)
node[anchor=-90,inner sep=7pt]{$V_{CC}$}
(Q16.E)
-- (Q17.B)
(Q17.C|-lineVcc)
to [I,*-,lx_=$Q_{13A}$ and $I_2$] (Q17.C|-Q14.B)
to [short,-*] (Q17.C)
to [short] (Q22.B)
(Q17.E)
to [short,-*](Q17.E|-lineVee);
\draw[color=black!40!blue]
(lineVcc)
-| (Q14.C)
(Q14.E)
-- (Q20.C)
($(Q14.E)!0.5!(Q20.C)$) coordinate (mid1)
to [short,*-o]++(0.5,0)
node[anchor=180,inner sep=7pt]{$v_{O}$}
(Q20.E)
|- (lineVee)
(Q22.C|-lineVcc)
to [I,*-*,lx_=$Q_{13B}$ and $I_3$] (Q22.C|-Q14.B) coordinate (inter)
to [short] (Q14.B)
(inter)
to [D,l_=$Q_{18}$](inter|-mid1)
to [D,l_=$Q_{19}$,-*](inter|-Q20.B)
(Q20.B)
-| (Q22.C)
(Q22.E)
to [short,-*](Q22.E|-lineVee);
\end{tikzpicture}
\end{document}