Rate limits
Monthly credit allowances reset each billing month. When you exceed the per-minute rate, requests return HTTP 429; retry after a short pause. When the monthly allowance runs out, requests return HTTP 402.
Requests and credits
An HTTP call is a request. What it spends is a credit. One request costs one credit, with no compute units and no per-endpoint weights: a light call and a heavy call cost the same. Credits are the customer-facing unit, and they are what console.dexpaprika.com, invoices and the pricing page count. Two places the distinction matters. The per-minute limit counts requests, so 30 per minute means 30 HTTP calls per minute. Batch endpoints charge one credit per item, so one HTTP call for 10 tokens is 1 request and 10 credits.Pagination rules
The search endpoints page with a cursor.GET /networks/{network}/dexes and GET /networks/{network}/pools/{pool_address}/transactions are the two that still page with numbers.
Reduce API calls
Use batch pricing
Instead of making one request per token:Use streaming for real-time data
If you need live prices, don’t poll the REST API in a loop. Open one streaming connection instead:/sse/prices connection accepts up to 25 assets. Each IP can hold 10 concurrent SSE streams; the 11th returns 429 ip stream limit exceeded.
Streaming is billed the same way as REST: each update delivered over the stream costs one credit. Because updates are pushed only when a swap moves the price, an idle market costs nothing, but a fast-moving one draws on your monthly allowance much as polling would. Budget for the update rate of what you subscribe to, not the number of connections.
Cache static data
Some data changes rarely and can be cached:
Data that changes frequently and should be fetched fresh:
- Token prices
- Pool volumes and transaction counts
- Recent transactions
- Current OHLCV candle (incomplete)
Request only what you need
- Use
limitto control page size. Do not fetch 100 items if you need 5 - Use
order_byandsortto get the most relevant results first - Use the filter endpoint for targeted queries instead of fetching all pools and filtering client-side
Handle errors gracefully
Implement exponential backoff
When requests fail, don’t retry immediately in a tight loop:Don’t retry client errors
- 400: fix the request parameters
- 404: verify the network ID and addresses
- 410: use the replacement endpoint
Streaming best practices
Validate before streaming
The streaming API rejects the entire request if any asset is invalid. Always verify tokens exist via REST first:Use batched POST for multiple tokens
Instead of opening multiple GET connections:Reconnect with backoff
Streaming connections can drop (network issues, server restarts). Always implement auto-reconnection:Parse prices as decimals
The streamingp field is a string, not a number. Use decimal parsing to avoid floating-point precision issues:
Production checklist
Before going to production
Before going to production
- Cache network and DEX lists
- Use batch pricing where possible
- Use streaming instead of polling for live prices
- Implement exponential backoff for retries
- Handle all HTTP status codes (200, 400, 404, 410, 429, 500)
- Parse streaming prices as decimals, not floats
- Validate tokens before adding to streaming connections
- Monitor monthly credit spend in console.dexpaprika.com against your tier’s allowance (streaming updates included)
- Consider Pro if approaching your monthly limit
FAQs
Is there a per-minute rate limit?
Is there a per-minute rate limit?
Yes. The free tier allows 30 requests a minute and Pro allows 300, alongside the monthly credit allowance. Exceeding the per-minute rate returns HTTP 429; retry after a short pause.
What is the difference between a request and a credit?
What is the difference between a request and a credit?
A request is one HTTP call. A credit is what it spends. One request costs one credit on every plan, with no compute units or per-endpoint multipliers, so the two numbers match except on batch endpoints, where one request charges one credit per item.
Do streaming updates count toward my credits?
Do streaming updates count toward my credits?
Yes. Each price update delivered over an SSE stream costs one credit, the same as a REST call. Updates are pushed only when a swap moves the price, so an idle subscription costs nothing, but an active one draws on your monthly allowance.
Can I increase the free tier limit?
Can I increase the free tier limit?
Registering for a free API key raises the keyless 50,000 credits a month to 300,000. Beyond that, Pro includes 5,000,000 credits a month with per-1M overage.