Developers / Rate limits
Two independent budgets: how fast you may call, and how much you may call in a month.
Rate limit — requests per minute. Exceed it and you get 429. Clears in 60 seconds.
Credits — your monthly allowance. Exhaust it and you get 402. Retrying will never clear it; it resets on the 1st of each calendar month at 00:00 UTC.
| Plan | Price | Requests / minute |
|---|---|---|
| Free | $0 | 30 |
| Hobby | $9/mo | 60 |
| Racing | $19/mo | 150 |
| Starter | $29/mo | 120 |
| Pro Plus | $99/mo | 300 |
| Unlimited | $249/mo | 2000 |
Racing allows more requests per minute than Starter because it is the racing-focused entry tier — higher throughput over a narrower endpoint set. Pick on which endpoints you need, not on price order. Full allowances on pricing.
A 60-second sliding window per API key — not a fixed clock minute. Sixty requests at 10:00:59 and sixty more at 10:01:01 will trip the limit on a 60/min plan, because the window looks back 60 seconds from now, not to the top of the minute.
Sandbox endpoints under /v1/demo/ are limited separately, by IP, at 30 requests/minute — they need no key, so there is no key to meter.
HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
Content-Type: application/problem+json
Retry-After is in seconds. Honour it rather than retrying immediately — a tight retry loop keeps the window full and you stay limited.
/v1/racing/next-to-go returning many races costs 2 credits; fetching each race separately costs far more of both budgets./v1/sports changes rarely.quality object with age_seconds — if the price you hold is as fresh as the one you would fetch, skip the call.If your workload genuinely needs more throughput than Unlimited's 2000/min, get in touch rather than sharding across keys — we would rather size a plan to the use case.