What is the amplitude range of a spectrogram?
Recall how a spectrogram is computed. You place a window of length $N$ around a sample of interest in your signal $x$ and then compute its DFT. This corresponds to one column of the spectrogram. In symbols, a fixed column is given by a DFT operation:

$$
X(k) = \sum_{n=0}^{N-1} x(n) w(n) e^{\frac{-j 2 \pi k n}{N}}.
$$

I believe you want an upper and lower bound on the magnitude of the spectrogram. An obvious lower bound is $0$. To find an upper bound:

\begin{eqnarray}
|X(k)| &amp;=&amp; \left | \sum_{n=0}^{N-1} x(n) w(n) e^{\frac{-j 2 \pi k n}{N}} \right|\\
&amp;\leq&amp; \sum_{n=0}^{N-1} |x(n)||w(n)|\cdot 1\\
&amp;\leq&amp; \sum_{n=0}^{N-1} 1\\
&amp;=&amp; N.
\end{eqnarray}
where I assumed that the window function has a maximum value of $1$.

This means that the magnitude of any element in the spectrogram matrix must be between $0$ and $N$ where $N$ is the window length.

Note that there are other ways of scaling a spectrogram which will change these calculations. Some people plot squared magnitude instead of magnitude, or $20\;\log_{10}(\cdot)$ of the magnitude. Some people like putting a $\frac{1}{N}$ normalization. Matlab provides 'psd' and 'power' options and scipy provides 'density' and 'spectrum' options which scale things differently.