Skip to content
GridCapacityAPI.com

Using the API

Rate limits and plans

Per-second limits, monthly quotas, the RateLimit headers and what each plan unlocks.

Two limits

  • A rate limit per second, per account (every key of the account shares it): exceeding it is 429 rate_limit_exceeded with Retry-After in seconds.
  • A monthly quota per calendar month in UTC: exceeding it is 429 quota_exceeded, with Retry-After pointing at the start of next month.

Test keys count against the same quota and the same rate limit as live keys: they reach the same data. Live and test are labels, so you can tell your own systems apart in the dashboard.

Without a key, the open routes (coverage, the map points and tiles, plans, health) are limited per client address, with a ceiling over all anonymous traffic together.

Headers on every keyed response

So the remaining budget is on every answer, and the wall is visible before you hit it.

HeaderMeaning
RateLimit-LimitRequests allowed in the current quota window: this calendar month.
RateLimit-RemainingRequests left in it, counting the one being answered.
RateLimit-ResetSeconds until the window rolls over.
X-Quota-Limit, X-Quota-RemainingThe monthly quota and what is left of it.
X-Request-IdThe request's id, the same as meta.request_id and error.request_id. Quote it when you write to us.

An unlimited plan omits the limit rather than reporting a very large number, because a very large number is still a number that eventually surprises somebody.

Plans

PlanRequests / monthPer secondKeysPage sizeNearby radiusIncludes
Free250112025 kmcurrent data
Developer10,0005310050 kmcurrent data
Pro100,0001510200250 kmhistory, change feed, as_of
Business500,0005050200500 kmhistory, change feed, as_of, exports, webhooks
Enterpriseunlimited2005002001,000 kmhistory, change feed, as_of, exports, webhooks

Capabilities, not plan names

A route checks a capability — history, change_feed, as_of, bulk_exports, webhooks — never a plan’s name. A refusal says which capability was missing and which plan has it.

Staying under the limits

  • Page with cursors, one page at a time, rather than fetching pages in parallel.
  • Use the change feed or webhooks to keep a copy current, instead of re-reading everything.
  • Most sources change monthly or less often; caching for an hour loses nothing.