Quotas and rate limits
Requests, units, rows, and concurrency — all aggregated per client, all reported in headers.
Limits
All limits are aggregated per client. Creating or rotating multiple API keys does not multiply them.
| Limit | Starter v1 | Scope |
|---|---|---|
| Requests | 15 / minute | client_id |
| Commercial units | 500 / hour and 3 000 / day | client_id |
| Concurrency | 2 admitted requests | client_id |
| Returned match rows | 10 000 / day | client_id |
Authenticated admitted requests count, including business errors and 304 Not Modified
responses. A standard call costs 1 unit; bulk is priced by blocks — see
Bulk and units.
Quota headers
Responses can include the headers below. Read them instead of guessing your remaining budget.
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed in the current window. |
X-RateLimit-Remaining | Requests left in the current window. |
X-RateLimit-Reset | Unix time when the window resets. |
X-Quota-Units-Remaining-Hour | Commercial units left this hour. |
X-Quota-Units-Remaining-Day | Commercial units left today. |
X-Match-Rows-Remaining-Day | Match rows left today. |
Retry-After | On 429, seconds to wait before retrying. |
When a limit is reached
The API returns 429 with a business code: rate_limit_exceeded,
hourly_unit_limit_exceeded, daily_unit_limit_exceeded,
daily_match_row_limit_exceeded, or concurrency_limit_exceeded.
These are capacity limits, not a guaranteed throughput.