| Budget | Limit |
|---|---|
| General | 120 requests / minute |
Search (/search + search_topics) | 30 requests / minute, a dedicated extra budget — search calls also consume the general one |
| Daily | 10,000 requests / day |
| Active keys per user | 5 |
Response headers
Every REST response carries the state of the binding minute window (the one that would reject you first):X-RateLimit-Reset is seconds until the window resets (not a Unix
timestamp).
When you hit 429
Retry-After: 22 header.
- Wait
retry_afterseconds, then retry. Add jitter if you run several workers on one key. - Prefer exponential backoff for repeated 429s.
- Over MCP, a rate-limited call surfaces as a tool error naming the retry delay — agents should read it and pause rather than hammer.
Staying under the limits
- Use
limit(up to 100) and cursors instead of many small pages. - Cache stable data (zones, contest schedules) on your side.
- Use
list_topicsfor browsing; savesearch_topics(the tighter budget) for actual keyword lookups.