Skip to content

Rate Limits

API rate limits are based on your subscription plan:

PlanRequests per MinuteDaily Limit
Free6010,000
Pro300100,000
Enterprise1,000Unlimited

Limits are applied per API key using a sliding window algorithm.

Every API response includes rate limit information:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 297
X-RateLimit-Reset: 1705312800
HeaderDescription
X-RateLimit-LimitMaximum requests per window
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets

When you exceed the rate limit, the API returns HTTP 429:

{
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests. Please retry after 45 seconds.",
"retry_after_secs": 45
}

The Retry-After header is also included (in seconds).

async function apiCallWithRetry(url: string, options: RequestInit, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '60', 10);
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}
  1. Cache responses — Reduce API calls by caching data that doesn’t change frequently
  2. Use webhooks — Subscribe to events instead of polling for changes
  3. Batch operations — Use bulk endpoints when available
  4. Respect Retry-After — Always wait the indicated time before retrying