Rate limits
API requests are rate limited per API key, using a per-minute sliding window. The limit scales with your plan.
Limits by plan
| Plan | Requests per minute |
|---|---|
| Advanced | 30 |
| Business | 60 |
| Business 200K | 90 |
| Business 300K | 120 |
| Unlimited | 180 |
info
There are no per-call charges and no overage fees — ever. If you need more throughput, the limit rises with your plan tier rather than billing you per request.
Rate-limit headers
Every /v1 response includes an X-RateLimit-Limit header with your key's
per-minute ceiling. When you exceed the limit, the response is 429 Too Many Requests and includes a Retry-After header, in seconds — wait that long, then
retry.
X-RateLimit-Limit: 60
Retry-After: 12
note
Only X-RateLimit-Limit (on every response) and Retry-After (on a 429) are
provided. There are no X-RateLimit-Remaining or X-RateLimit-Reset headers, so
pace your requests against the per-minute limit rather than a live remaining
count.
Handling a 429
When you get a 429, read the Retry-After value and sleep for that many
seconds before retrying. A small helper keeps this out of your query code:
- JavaScript
- Python
- cURL
Staying under the limit
- Batch your reporting into fewer, larger queries rather than many small ones —
one
GROUP BY storequery returns every store at once. - Cache results you re-use within the same minute instead of re-querying.
- Spread scheduled jobs out over the minute rather than firing them all at once.