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 limitMonthly quota
ScopeOne keyYour whole account, across every key
WindowRolling, shortCalendar month, UTC
On exceeding429 rate_limit_exceeded429 quota_exceeded
RemedySlow down and retryUpgrade, or wait for the reset
HeadersX-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.

Response headers
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 seconds

The 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.
PlanMonthly quota
Free10,000
Premium100,000
Pro1,000,000
EnterpriseCustom

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.