Each API key has a daily request quota. Limits reset at midnight UTC.
Plans
| Plan | Price | Daily limit |
|---|
| Free | $0 | 500 |
| Indie | $49/mo | 10,000 |
| Pro | $149/mo | 50,000 |
| Intelligence | $349/mo | 200,000 |
| Team | $799/mo | 500,000 |
Every authenticated response includes rate limit headers:
RateLimit-Limit: 10000
RateLimit-Remaining: 9987
RateLimit-Reset: 1711235414
X-RateLimit-Tier: indie
| Header | Description |
|---|
RateLimit-Limit | Your daily quota |
RateLimit-Remaining | Requests left today |
RateLimit-Reset | Unix timestamp when the quota resets |
X-RateLimit-Tier | Your plan name |
Retry-After | Seconds until you can retry (only on 429) |
Legacy X-RateLimit-* variants are included for backward compatibility.
Handling 429
When you exceed your limit, the API returns 429 Too Many Requests with a Retry-After header. Respect it — don’t retry in a loop.
import time
import requests
def fetch(url, headers, params=None, retries=3):
for _ in range(retries):
resp = requests.get(url, headers=headers, params=params)
if resp.status_code != 429:
return resp
time.sleep(int(resp.headers.get("Retry-After", 60)))
return resp
Each paginated page counts as one request. Fetching 10,000 rows at limit=1000 uses 10 requests, not 10,000.