Skip to main content
Pro includes 500,000 requests per UTC calendar month, and Max includes 2,000,000. Both plans include 100 requests per minute and 2,500 batch items per minute. API keys and OAuth tokens on the same account share these allowances. Read the response headers to see what remains. When a request returns 429, check its reason and Retry-After before sending another request.

Account allowances

A batch can contain up to 25 items, so 100 full batches fit both minute allowances. You still need to handle either limit, including near a window boundary.

Monthly quota and pay as you go

Enable pay as you go on Developers if you need more than your plan’s included requests. It is off by default. Read the account’s returned ceiling instead of assuming a limit from its plan name. If unavailable_reason is usage_price_reconciliation_required, billing needs reconciliation before additional requests can be billed. Open Billing or contact support; repeated requests do not repair that setting. A quota error’s Retry-After and error.retry_at identify the next monthly reset. Repeated short retries cannot clear it; enable pay as you go, arrange a higher ceiling when needed, or schedule the next request for the reset.

Check usage

GET /api/v1/usage returns monthly_quota without spending the normal request allowance:

Response headers

These illustrative headers describe the request and monthly allowances:
A batch adds X-Request-Cost for its item count and X-Batch-RateLimit-Limit, X-Batch-RateLimit-Remaining, and X-Batch-RateLimit-Reset for its item allowance. Browser JavaScript can read these headers. X-Request-Id also appears on errors, timeouts, and 304 responses. Supplying your own header of the same name does not choose the response ID.

Special limits

On a 401 or 402, RateLimit-* describes the IP allowance, rather than the account’s request allowance. An exhausted IP allowance produces reason ip_rate_limited; sustained excess traffic can produce ip_throttled with a longer cooldown.

Handle a 429

This example makes at most 3 attempts and waits at most 60 seconds between attempts. Longer delays are returned to the caller for scheduling:

Reduce repeated reads

  • Use the largest supported page size and follow pagination.
  • Batch up to 25 wallet or market lookups in one request.
  • Share polling work across processes that use the same account.
  • Reuse ETag values with If-None-Match where supported. A 304 saves the response body but still counts as 1 request.

Endpoints with ETags

The current endpoints with ETag support are:

Limits

Reports, search, event replay, streams, usage, account identity, exports, and webhooks do not return an ETag. The sandbox does not use an account quota and contains no production data.