The quotas
Full detail on the rate limits page. Plans are on pricing.
What a stream actually costs
Streams are pushed only when a value changes, so cost tracks the asset’s update rate, not the number of connections you hold open. That rate varies enormously.What sets the update rate
Prices are derived from swaps, so an update happens when a swap moves the price. Two things bound that:- Swap activity. The dominant factor, and in practice the binding one. A heavily traded asset produces a steady stream of price-moving swaps; a thinly traded one produces almost none.
- The recompute cadence. Our pricing pipeline recomputes on a sub-second cycle, which sets an upper bound. No asset streams faster than that, and almost none get close.
/networks reports roughly 24.8M transactions on Solana against 6,773 on Cronos, and the streams reflect that almost exactly: about 52 updates a minute versus about 1.3. So the useful mental model for capacity planning is that you pay for how actively the asset trades, not for how long you stay connected.
These are real measurements from a single 90 second sample of /sse/prices, taken 2026-07-31. Treat them as the right order of magnitude rather than a guarantee, since trading activity changes hour to hour:
Two things fall out of this table immediately.
A single busy asset can dominate a plan. One continuous SOL price subscription is roughly 2.25M requests a month, about 45% of everything Pro includes. Two such assets is 90%.
The free tiers are not built for continuous streaming. At 52 updates a minute, SOL exhausts the 200,000 free allowance in under three days, and the 500,000 registered allowance in about a week. A quiet asset like WCRO would run for months on the same allowance.
The connection caps are separate from quota and unchanged: 25 subscriptions per connection, 10 concurrent streams per IP. Those limit concurrency, not spend.
Stream or poll
The honest answer: streaming saves you credits only when you would otherwise poll faster than the asset changes. Streaming’s real benefit is latency and freshness, not cost. Polling costs exactly what you choose:
Now compare against the measured rates. The crossover is simply whether the asset’s update rate is above or below your poll rate:
- SOL at 52 updates a minute. Streaming costs 2.25M a month. Polling once a minute costs 43,200. Polling is 52 times cheaper, at the price of being up to 60 seconds stale.
- WETH on ethereum at 7.1 a minute. Streaming costs 306k. Polling every 10 seconds costs 259k. Roughly break even, and streaming wins on freshness.
- WCRO at 1.3 a minute. Streaming costs 56k. Polling every 10 seconds costs 259k. Streaming is about 5 times cheaper and fresher.
- If you need sub second freshness, stream. Nothing else gets you there, and the cost is the cost.
- If a minute of staleness is acceptable and the asset is busy, poll. It is far cheaper.
- If the asset is quiet, stream. You pay almost nothing and get instant updates.
Four worked models
1. Price ticker on 10 assets
A dashboard streaming 10 mixed assets, say 3 busy and 7 quiet, averaging about 15 updates a minute each:2. Portfolio refresh, 50 tokens, every 5 minutes
Batch endpoints cut latency, not quota: each token still bills as one request.3. Drain detection on 25 pools
Reserve streams emit per block in which reserves change, which is far less often than prices tick. Assume about 4 updates a minute per pool:4. Backfill plus live
Size these separately. A one off historical pull is a fixed cost:Cutting real time spend without losing freshness
- Subscribe to fewer, higher signal assets. Cost scales with what you watch, not with connections. Ten idle assets on one connection still bill for every update.
- Split “must be live” from “can be stale.” Stream the price your UI shows in real time; cache names, decimals, pool pairs and completed candles. Completed OHLCV candles never change.
- Filter server side.
liquidity_usd_minand the other threshold filters keep pages small so you pull fewer rows overall. - Poll the boring ones. A stablecoin pinned to $1.00 does not need a live stream.
- Disconnect when nobody is watching. A dashboard nobody has open still bills for every update it receives.
Check your own numbers
Usage is visible in console.dexpaprika.com, where the unit is labelledCredits. It is the same count this page calls requests.
The reliable way to size a workload is to measure it: subscribe to exactly what you intend to run, leave it for ten minutes, and multiply. The table above was produced this way, and a ten minute sample of your own assets will beat any estimate on this page.
Which plan do I need?
Take your total from the models above, then:- Under 200,000 a month: the free tier, no key required.
- 200,000 to 500,000: register a free key.
- 500,000 to 5M: Pro.
- Over 5M: Pro plus per-1M overage, or talk to us about Enterprise if streaming volume is the driver, since Enterprise limits are set to the workload.
FAQs
Does a streaming update really cost the same as a REST call?
Does a streaming update really cost the same as a REST call?
Yes. One request equals one credit, and each update delivered over a stream counts as one request. Connections themselves are free; what you pay for is updates delivered.
Is streaming cheaper than polling?
Is streaming cheaper than polling?
Only if the asset updates less often than you would poll. On a busy asset like SOL, streaming can cost 50 times more than polling once a minute. On a quiet asset it costs a fraction. Stream for freshness, poll for thrift.
Does batching save me credits?
Does batching save me credits?
No. Batch endpoints collapse several round trips into one HTTP call, which cuts latency and connection overhead, but each token still bills as one request. Ten tokens cost ten requests either way.
Do idle connections cost anything?
Do idle connections cost anything?
No. Updates are pushed only when a value changes, so an idle market costs nothing. The cost is entirely a function of how often what you subscribed to moves.