Empirical Analysis of Ollama Cloud Pro Usage Quotas

Decided to go on a quick 20-minute adventure. In and out.
Ended up sitting here the entire day.

I was trying to estimate the actual pricing of Ollama Cloud Pro in dollars per million tokens ($/1M), knowing that the weekly quota is worth roughly $4.59.

TL;DR:

  1. This is a pretty tedious endeavor.
  2. GLM-5.2 in Ollama Cloud is roughly 20x cheaper than official non-discounted pricing (assuming you squeeze the quota bone-dry): Miss = $0.072/1M
  3. Hit = $0.013/1M
  4. Output = $0.237/1M
  5. DeepSeek v4 pro is extremely cheap, provided you keep sending it the exact same text and don't ask it any questions: Miss = $0.133/1M
  6. Hit = $0.005/1M
  7. Output = $0.396/1M
  8. GLM-5.3 took the worst of both worlds: Miss = $0.173/1M
  9. Hit = $0.032/1M
  10. Output = $0.429/1M
  11. In a weekly quota there are 5.6 five-hour quotas.
  12. I could have mixed up a plus and a minus in the code and all of this might be complete nonsense.

Methodology:

I sent 3 types of requests:

  1. <new uuid with each request> + <large text> With response length limited to 1 token, virtually the entire request goes towards cache miss.
  2. <saved uuid from last cache_miss request> + <the exact same large text> Response length limited to 1 token again. If the server didn't mess up the cache (which I verified by comparing request cost against miss requests and other hit requests), the entire request is a cache hit.
  3. A small prompt instructing the model to write a large answer. Almost the entire cost of the response goes towards output.

I wrapped this core logic into a system that kept sending requests until sufficient statistical precision was reached (1.5% of the weekly quota per request type; 7.5% total weekly quota, since miss and hit probes were run across two different large texts of different sizes, P1 and P2, where P2 is roughly 5x larger than P1).

TOTAL:

GLM-5.2

=== linearity (miss) ===
  P1: a=8.64e-06  delta5h=9.2%  total_pec=1065394
  P2: a=8.67e-06  delta5h=11.9%  total_pec=1373246
  spread = 0.4%  err = 1.3%
  VERDICT: linear (spread < err)

=== linearity (hit) ===
  P1: b=1.61e-06  delta5h=8.6%  total_pec=5326895
  P2: b=1.62e-06  delta5h=8.9%  total_pec=5492984
  spread = 0.4%  err = 1.6%
  VERDICT: linear (spread < err)

=== ratio r = 5h / week ===
  miss: r=5.55  err=+/-8%  range=[5.13, 5.97]
  hit: r=5.83  err=+/-10%  range=[5.28, 6.39]
  output: r=5.27  err=+/-14%  range=[4.55, 5.98]
  cross-probe: min=5.27 max=5.83 spread=0.57
  pooled: r=5.60  err=+/-5%

=== prices ($/1M tokens, from weekly quota) ===
  b/a = 17.8%  (cache discount = 82.2%)
  c/a = 3.31  (output vs input)

  Miss = $0.072/1M  err=+/-7%  range=[$0.066, $0.077]
  Hit = $0.013/1M  err=+/-9%  range=[$0.012, $0.014]
  Output = $0.237/1M  err=+/-13%  range=[$0.205, $0.269]

Completely unsurprising.

Quota consumption for input tokens looks completely linear.
Cache gives a discount of just over 80%.
Output is 3.3x more expensive than un-cached input.

To burn through the weekly $4.59 using only input tokens without cache you'd need to feed the model roughly 64 million tokens. Sounds pretty plausible to me.

Just in case, a reminder of official prices without discounts:
Miss = $1.4/1M
Hit = $0.26/1M
Output = $4.4/1M

DeepSeek v4 pro

=== linearity (miss) ===
  P1: a=1.65e-05  delta5h=9.0%  total_pec=546711
  P2: a=1.65e-05  delta5h=13.7%  total_pec=832374
  spread = 0.0%  err = 1.2%
  VERDICT: linear (spread < err)

=== linearity (hit) ===
  P1: b=5.42e-07  delta5h=8.2%  total_pec=15125422
  P2: b=5.45e-07  delta5h=8.4%  total_pec=15398919
  spread = 0.6%  err = 1.7%
  VERDICT: linear (spread < err)

=== ratio r = 5h / week ===
  miss: r=5.67  err=+/-7%  range=[5.27, 6.08]
  hit: r=5.53  err=+/-10%  range=[5.00, 6.06]
  output: r=5.67  err=+/-14%  range=[4.90, 6.43]
  cross-probe: min=5.53 max=5.67 spread=0.14
  pooled: r=5.62  err=+/-5%

=== prices ($/1M tokens, from weekly quota) ===
  b/a = 3.4%  (cache discount = 96.6%)
  c/a = 2.97  (output vs input)

  Miss = $0.133/1M  err=+/-7%  range=[$0.124, $0.143]
  Hit = $0.005/1M  err=+/-9%  range=[$0.004, $0.005]  
  Output = $0.396/1M  err=+/-13%  range=[$0.343, $0.448]

Here I was moderately surprised. When trying it out, it felt like it was just slightly more expensive than GLM-5.2, which is only partly true.

On one hand, it turned out to be significantly more expensive on cache miss and output, but on the other hand, caching is impressive. If you need a model that will silently re-read the exact same thing over and over again — this is your choice.

GLM-5.3

=== linearity (miss) ===
  P1: a=2.61e-05  delta5h=11.9%  total_pec=456593
  P2: a=1.75e-05  delta5h=12.0%  total_pec=686623
  spread = 39.4%  err = 1.2%
  VERDICT: non-linear (spread > err)

=== linearity (hit) ===
  P1: b=4.82e-06  delta5h=8.8%  total_pec=1826364
  P2: b=3.53e-06  delta5h=9.7%  total_pec=2746492
  spread = 30.8%  err = 1.5%
  VERDICT: non-linear (spread > err)

=== ratio r = 5h / week ===
  miss: r=5.56  err=+/-7%  range=[5.19, 5.93]
  hit: r=5.78  err=+/-9%  range=[5.26, 6.30]
  output: r=5.87  err=+/-14%  range=[5.07, 6.66]
  cross-probe: min=5.56 max=5.87 spread=0.31
  pooled: r=5.69  err=+/-5%

=== prices ($/1M tokens, from weekly quota) ===
  b/a = 18.6%  (cache discount = 81.4%)
  c/a = 2.48  (output vs input)

  Miss = $0.173/1M  err=+/-7%  range=[$0.161, $0.184]
  Hit = $0.032/1M  err=+/-9%  range=[$0.029, $0.035] 
  Output = $0.429/1M  err=+/-13%  range=[$0.371, $0.486]

Here I was surprised a lot.

The first thing that catches your eye: if you send this model a huge request, the price per input token turns out to be lower. Noticeably lower. When I set up this check, I expected the exact opposite effect. Maybe the price for the model changed between the runs of the first (small) and second (large) texts. Maybe I made a mistake somewhere (which is definitely not out of the question) . But it looks strange.

The second wave of surprise hit when I looked at the final prices, which unexpectedly ended up much closer to DeepSeek than I would have liked, and without the god-tier caching.

To be fair, I should mention that while collecting logs for GLM-5.3, one request expected to be a cache hit ended up slightly more expensive than the others. Most likely, the cache had a minor hiccup at some point. However, this deviation is small enough that my conscience let me ignore it; it barely affected the final result, and I had no quota left anyway.

That's basically it.
Draw your own conclusions.
Here is the repository: https://github.com/Username7539/ollama_quota_analyze

There are raw logs and scripts

If you decide to dig into this as well, I'd be curious to hear what you find.

Posted Aug 29, 2026, 3:08 AM UTC

20
Loading comments…