API basics
Rate limits
Each Client Account can make a set number of requests per day. The limit comes from the content-access tier on its API Key.
- Standard
- 250 requests per day
- Enterprise
- 5,000 requests per day
- Window
- Calendar day, UTC
- Resets
- 00:00 UTC
Daily limits
| Content-access tier | Limit | Archive depth |
|---|---|---|
| Standard | 250 requests per day | Last 30 days |
| Enterprise | 5,000 requests per day | Full archive |
- Counted per Client Account. Every request your account makes counts toward one total, and the total carries over when a key is rotated or reissued. A new key does not reset it.
- A calendar day in UTC. The count starts again at 00:00 UTC, not 24 hours after your first request.
- Set by the tier. The same tier decides how far back your key can read. See Authentication.
- A tier change applies on the next request. It is measured against what you have already used today.
What counts
The limit covers the three report endpoints: GET /reports, GET /reports/{id} and GET /reports/search.
- Every authenticated request counts, including one that ends in
404or400. - A request with an invalid or revoked key does not count. It gets
401. - A request answered with
429does not count. Retrying a spent limit cannot push it further.
Rate-limit headers
Every response from these endpoints carries three headers, a 429 included.
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per UTC day on your tier. |
X-RateLimit-Remaining | Requests left today. 0 on the last permitted request. |
X-RateLimit-Reset | Unix timestamp, in seconds, of the next 00:00 UTC, when the count restarts. |
When you reach the limit
The next request returns 429 with no report content and the standard error body:
{
"statusCode": 429,
"code": "RATE_LIMIT_EXCEEDED",
"message": "Daily request limit of 250 reached. The limit resets at 00:00 UTC."
}
The Retry-After header holds the seconds until 00:00 UTC. Wait that long, or until X-RateLimit-Reset, before sending another request. Every request in between gets the same 429.
Stay within the limit
Checking the feed once an hour is 24 requests a day, and fetching ten new reports in full adds ten more: well inside even the Standard limit. These habits keep the count low:
- Read the feed incrementally.
GET /reportsreturns the newest reports first. Stop paging when you reach a report you already stored, instead of walking the whole feed each time. See Ingest the report feed. - Ask for full pages. Send a larger
pageSize. The server clamps it to its maximum and returns the size it used, so fewer pages cover the same reports. - Fetch each report once. Store the body and images when you retrieve a report, as Retrieve a report does, rather than requesting it again.
- Filter on the server. Narrow the feed or a search with taxonomy filters instead of downloading everything and filtering on your side.
- Watch
X-RateLimit-Remaining. Slow down or stop as it approaches0, rather than finding out from a429. - Don't retry what cannot succeed. A
401or403gives the same answer every time. Fix the key, or skip the report. A429will not clear untilRetry-Afterhas passed.