Skip to main content

Rate limits

The daily limit resets on a rolling 24-hour window. There is no per-second or per-minute throttle — only the daily cap. When you exceed the limit, requests return HTTP 429.
Need unlimited access? The Pro API removes all rate limits. Contact support@coinpaprika.com.

Pagination rules

All paginated endpoints follow the same rules:

Reduce API calls

Use batch pricing

Instead of making one request per token:
Use batch pricing for up to 10 tokens at once:
That’s a 3x reduction — or up to 10x when you need prices for 10 tokens.

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:
A single POST /sse/prices connection accepts up to 25 assets. Each IP can hold 10 concurrent SSE streams; the 11th returns 429 ip stream limit exceeded.

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 limit to control page size — don’t fetch 100 items if you need 5
  • Use order_by and sort to 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
Only retry on 429 (rate limit) and 500 (server error).

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:
Use one POST connection:

Reconnect with backoff

Streaming connections can drop (network issues, server restarts). Always implement auto-reconnection:

Parse prices as decimals

The streaming p field is a string, not a number. Use decimal parsing to avoid floating-point precision issues:

Production checklist

  • 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 daily request count against the 10,000 limit
  • Consider Pro API if approaching limits

FAQs

No. Only a daily cap of 10,000 requests. You can burst as fast as you want within that daily budget.
Opening a streaming connection counts as a request. The individual SSE events within the stream do not count.
The free tier is fixed at 10,000/day. For higher limits, use the Pro API.