429 response with machine-readable headers that tell you exactly when you can retry. Understanding how these limits work — and which endpoints count against them — lets you design efficient integrations that never get blocked unexpectedly.
Limits by tier
Special limits for bulk snapshot endpoints
POST /prices and POST /bids stream a full NDJSON snapshot of current listings/bids across specified providers. Each call counts as one request against your monthly quota (like any core endpoint) and is additionally subject to a rolling 24-hour cap on successful stream starts per API key — 50/day on Pro, 300/day on Quant, tracked per endpoint. Only one stream may be active per API key per endpoint; a second concurrent request returns 409. Only successful starts count toward the 24-hour cap; pace loops with X-RateLimit-Remaining and X-RateLimit-Reset.
Which endpoints consume monthly quota
Monthly quota applies to public core market-data endpoints — prices, bids, candles, history, sales, items, providers, FX, and market analytics. These are the endpoints that drive the most data volume. The following route categories are exempt from monthly quota (they still have burst protection, but they do not count against your 1,000 / 50,000 / 500,000 / 1,000,000 monthly total):- Account and billing management routes
- Email verification and account recovery routes
- Alert creation, listing, and management routes
- Webhook configuration routes
Rate limit response headers
When you are approaching or have exceeded a limit, the API includes the following headers on the response:Example 429 response headers
On the bulk streaming endpoints the
X-RateLimit-* headers describe that endpoint’s 24-hour stream-start quota (not the monthly quota) and appear on successful 200 responses too.Error codes
Both rate limit conditions return HTTP429 with a machine-readable code field in the response body.
Best practices
- Check
X-RateLimit-Remainingproactively. If your remaining monthly quota is low, throttle your request rate rather than waiting for a hard block. - Batch requests wherever possible. Use
POST /prices/batchandPOST /bids/batch(Starter, Pro, and Quant) to fetch up to 100 items in a single request instead of making one request per item. - Use
POST /pricesfor bulk data. One call returns the entire catalog. Pace your scheduler against the rolling 24-hour stream-start quota (50/day Pro, 300/day Quant, per endpoint) and don’t run two streams of the same endpoint at once. - Treat monthly quota as a budget. Allocate quota across your use cases. On Free (1,000 requests/month), keep calls exploratory; on Starter (50,000 requests/month), use batch lookups for known item sets instead of per-item polling loops.
- Handle
429with exponential backoff whenRetry-Afteris not present, adding jitter to avoid synchronized retry storms across multiple keys.