Rate Limits & Quotas
The API enforces per-endpoint rate limits that reset at UTC midnight. Limits vary by tier.
Rate limit headers
Section titled “Rate limit headers”Every response includes rate limit information:
X-RateLimit-Limit: 1000X-RateLimit-Remaining: 987X-RateLimit-Reset: 2026-05-21T00:00:00ZTier limits
Section titled “Tier limits”| Endpoint group | Sharp | Admin |
|---|---|---|
| Picks & data reads | 1000/day | Unlimited |
| Research endpoints | 500/day | Unlimited |
| Odds snapshots | 500/day | Unlimited |
| Export jobs | 10/day | Unlimited |
| Webhook management | 100/day | Unlimited |
When you’re rate-limited
Section titled “When you’re rate-limited”A 429 Too Many Requests response includes when your quota resets:
{ "type": "https://nbaproplab.com/errors/rate-limit-exceeded", "title": "Rate limit exceeded", "status": 429, "detail": "Daily limit of 1000 requests exceeded for /data/picks", "resetAt": "2026-05-21T00:00:00Z"}Checking your usage
Section titled “Checking your usage”curl -H "X-API-Key: $NBAV3_DATA_TOKEN" \ https://nbaproplab.com/api/v1/data/usageReturns current usage counters across all endpoint groups.
Best practices
Section titled “Best practices”- Cache responses — picks for a given date don’t change after settlement
- Use sparse fields — request only the fields you need to reduce payload size
- Prefer webhooks — instead of polling for new picks, subscribe to
picks.scoredevents - Use bulk exports — for historical analysis, one export job is cheaper than thousands of paginated requests