Rate limits are shared across all 25+ sports APIs. Your daily quota applies to your combined usage of Football, Basketball, Tennis, and every other sport.
Plan Limits
All daily quotas reset at midnight UTC (00:00 UTC). The reset timestamp is included in every response via the
X-RateLimit-Reset header.Need more? Contact us for custom enterprise plans with higher limits, dedicated servers, and SLA guarantees.
Rate Limit Headers
Every API response includes rate limit headers:Example Response Headers
Checking Your Usage
Use the/status endpoint on any sport’s API:
Rate Limit Exceeded
When you exceed your daily quota, the API returns429 Too Many Requests:
Best Practices
Use Built-In TTL Caching
Use Built-In TTL Caching
Every API response includes a
ttl field (seconds). Respect this value — the data won’t change before the TTL expires.Monitor Usage in Code
Monitor Usage in Code
Check rate limit headers in every response:
Implement Retry with Backoff
Implement Retry with Backoff
For
429 errors, wait and retry:Prioritize Live Data
Prioritize Live Data
During peak usage, prioritize live score updates over less time-sensitive data like standings or historical stats. Different sports have different update frequencies — NBA games have more scoring events than football matches.
What Counts as a Request?
- Each API call counts as 1 request, regardless of sport
- V2 image endpoint calls (
/images/...) count as requests. V1 image endpoints are free and do not count /statusendpoint calls count as requests- WebSocket traffic is unmetered. Neither the connection handshake nor any frame you receive counts against your quota — subscriptions, snapshots, and all real-time updates are free. The internal NATS-triggered fetches behind
match:{matchId}:odds,:incidents, and:statsrun server-side and are never billed to your key. Only REST calls are metered
Upgrading Your Plan
View Plans
Compare plan features and pricing
Contact Sales
Discuss custom enterprise solutions