Skip to main content

Rate Limits

Rate limits control how many requests you can make within a time window. Each plan has a specific request limit per minute.

Limits by plan

PlanRequests per minute
Free10
Starter30
Growth100
Scale250

How rate limiting works

Each API request checks your remaining allowance in the current 1-minute window:
  1. Request allowed → Process request and decrement remaining count
  2. Limit exceeded → Return 429 error with retry-after time
The 1-minute window slides continuously. Old requests drop out of the window after 1 minute, freeing up capacity for new requests.

Rate limit headers

Every API response includes headers indicating your rate limit status:
HeaderDescription
X-RateLimit-LimitRequests per minute for your plan
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetISO timestamp when window resets

Handling rate limits

When you exceed your rate limit, the API returns a 429 status code with the following response:
{
  "error": "rate_limit_exceeded",
  "errorDescription": "Rate limit exceeded. Try again at 2025-01-10T12:34:56Z",
  "retryAfter": 45
}
FieldDescription
errorError code identifier
errorDescriptionHuman-readable message with reset timestamp
retryAfterSeconds to wait before making another request

Best practices

  • Implement exponential backoff - Wait longer between retries when rate limited
  • Respect retry-after - Use the retry-after value to delay retries
  • Monitor headers - Track X-RateLimit-Remaining to anticipate limits
  • Cache aggressively - Use cached results to avoid unnecessary requests

See also