Rate Limits
Free tier limits by IP. Pro tier limits by API key. Enterprise is unlimited.
Limits by tier
Tier Limit Window Tracked by
Free (v1) 100 requests Per minute IP address
Pro (v2) 10,000 requests Per day (UTC) API key
Enterprise (v2) Unlimited — API key
The free tier window resets every minute. The Pro daily limit resets at 00:00 UTC.
Rate limit headers
Every API response includes headers so you can track your usage:
Header Description Example
X-RateLimit-Limit Max requests for this window 100 X-RateLimit-Remaining Requests remaining this window 87 X-RateLimit-Reset ISO timestamp when window resets 2026-03-18T05:12:59.999Z X-API-Key-Tier Your key tier (Pro only) pro Enterprise keys do not include X-RateLimit-* headers (no limit to track).
Handling 429 responses
When you hit the limit, the API returns HTTP 429 with a JSON error body:
JSON
{
"error": "Rate limit exceeded. Max 100 requests per minute."
} For free tier (per-minute): wait until the next minute boundary (X-RateLimit-Reset).
For Pro tier (per-day): limit resets at 00:00 UTC, or upgrade to Enterprise for unlimited access.
Retry logic
TS
async function fetchWithRetry(url: string, key?: string) {
const headers = key ? { Authorization: `Bearer ${key}` } : {};
const res = await fetch(url, { headers });
if (res.status === 429) {
const reset = res.headers.get('X-RateLimit-Reset');
const wait = reset
? Math.max(0, new Date(reset).getTime() - Date.now())
: 60_000;
await new Promise(r => setTimeout(r, wait + 100));
return fetch(url, { headers });
}
return res;
} Tips for staying under limits
- Cache responses on your side. Tool scores update once daily — caching for 1 hour loses nothing.
- Use the batch endpoint (
POST /api/v2/batch) to fetch up to 50 tools in one request instead of 50 separate calls. Pro only. - Use
limitandoffsetfor pagination rather than fetching everything at once. - If you're building an integration that will exceed 10,000 req/day, contact us about Enterprise pricing.