Quotas and Rate Limits

What is capped

Two budgets per account, both reset at the start of every UTC month:

PlanRequests / monthBytes / monthPer-second burst
Free— (no API access)
Pro1 000 00050 GiB~16 req/s
Enterpriseper-account overrideper-account overrideper-account

Quotas are hard caps. When you cross either the request or byte limit, every subsequent call returns 429 quota_exceeded — with a Retry-After header — until the calendar month rolls over. There is no overage billing.

Enterprise limits are negotiated per contract and stored on the subscription. Both /v1/me and /v1/me/usage reflect the actual numbers your key resolves to.

The per-second burst limit is best-effort and may be disabled at the edge; the monthly request and byte budgets are the authoritative limits.

Reading your usage

Every response includes the current state in headers:

http
X-RateLimit-Limit: 16
X-RateLimit-Remaining: 15
X-RateLimit-Reset: 1714512000
X-Quota-Requests-Used: 1234
X-Quota-Requests-Limit: 1000000
X-Quota-Requests-Remaining: 998766
X-Quota-Bytes-Used: 58432111
X-Quota-Bytes-Limit: 53687091200
X-Quota-Bytes-Remaining: 53628659089
X-Quota-Resets-At: 2026-05-01
X-Request-Id: req_01HT...

The X-RateLimit-* headers are present only when per-second limiting is enabled.

Or query /v1/me/usage for a JSON snapshot:

json
{
"month": "2026-04",
"resets_at": "2026-05-01",
"requests": { "used": 1234, "limit": 1000000 },
"bytes": { "used": 58432111, "limit": 53687091200 },
"plan": "pro"
}

What counts

  • A successful 2xx response increments requests by 1 and bytes by the served body length.
  • A 4xx or 5xx response increments requests by 1 and bytes by 0.
  • A 429 rate_limited response (per-second burst) is not counted — it is pre-admission.
  • A 401 invalid_api_key response is not counted — there is no authenticated user to charge.

Reducing your bill

  1. Use TOON for AI-agent traffic. 30–60 % fewer served bytes.
  2. Use the side field when you only need one side of a side-bearing metric — halves the row size.
  3. Pull wider date ranges per request instead of many small requests. Pagination is opt-in (see below).

Per-second rate limit

Independent from monthly quotas. Token-bucket per account, refills at the rate above. Hitting it returns 429 rate_limited with a Retry-After header — back off and try again. These do not count against your monthly request budget.

Pagination

Time-series endpoints return every row in your requested date range in a single response by default — even ten years of daily data fit comfortably in one call. Row caps: daily defaults to 10 000 and hard-maxes at 50 000; hourly is capped at 744 rows (31 days × 24 h).

If you exceed the cap, the response carries meta.truncated: true and meta.next_cursor — pass that cursor back in the request body's cursor field to continue.

List endpoints (/v1/meta/symbols, /v1/meta/tokens) always paginate; default limit=200, max 1000.

See the API Explorer for per-endpoint specifics.