Rate limits
Two limits, with different windows and different remedies. Every response tells you where you stand on both.
The two limits
| Per-key rate limit | Monthly quota | |
|---|---|---|
| Scope | One key | Your whole account, across every key |
| Window | Rolling, short | Calendar month, UTC |
| On exceeding | 429 rate_limit_exceeded | 429 quota_exceeded |
| Remedy | Slow down and retry | Upgrade, or wait for the reset |
| Headers | X-RateLimit-* | X-Quota-* |
They are separate on purpose. Collapsing them into one set of numbers would leave you unable to tell a burst you should back off from a monthly allowance you have spent. Both are enforced.
Headers
Sent on every response once your key has been accepted — including errors, so you can read your budget without a successful call.
X-RateLimit-Limit: 1000 # requests allowed in the current window
X-RateLimit-Remaining: 984 # left in it
X-RateLimit-Reset: 1786240000 # unix seconds; when the window lapses
X-Quota-Limit: 10000 # or "unmetered"
X-Quota-Remaining: 8412
X-Quota-Reset: 1788220800 # unix seconds; first of next month, UTC
Retry-After: 37 # on 429 only, whole secondsThe rate-limit window slides
X-RateLimit-Reset is not a fixed clock tick. The key's window resets after a period of inactivity, so the reset instant moves forward with every call you make. A continuously busy key will never see it arrive — that is accurate, not a bug. Use Retry-After when you get a 429; it is computed from the real remaining window.Monthly quota
- Counted per account, not per key. Holding five keys does not give you five allowances — otherwise the limit would mean nothing.
- Resets at midnight UTC on the first of each month.
- Your allowance follows your plan. Changing plan re-tiers every key you hold immediately, with nothing to reissue.
| Plan | Monthly quota |
|---|---|
| Free | 10,000 |
| Premium | 100,000 |
| Pro | 1,000,000 |
| Enterprise | Custom |
Exceeding it returns 429 with quota_exceeded until the reset. You do not have to track this yourself — X-Quota-Remaining is on every response.
Backing off well
Retry 429 with exponential backoff and jitter, and honour Retry-After in preference to your own schedule. Retrying immediately in a tight loop keeps you throttled and is the most common reason a key looks broken.
On quota_exceeded the Retry-After is the time until the month rolls, which may be days. Do not poll it — that is a signal to upgrade or to wait, not to wait-and-retry.
If you are pulling a large set, prefer a larger limit (up to 100) over more requests — see pagination. One request for 100 rows costs a hundredth of what a hundred single-row requests cost against both limits.
Need more
Higher limits come with the paid plans on pricing. For volumes beyond those, or a bulk feed instead of per-request access, talk to us — a nightly feed is usually cheaper for both of us than a million calls.