Rollout status. Plan enforcement is planned and rolls out in stages.
Today every key has access to the current-data endpoints under the existing
route limits. When enforcement ships, the quotas on this page apply and the
response headers described in
Rate limits and headers become
available. Follow the changelog for effective
dates.
Compare plans
Prices are in USD and exclude tax. Upgrade, downgrade, and see live usage in the developer console. Billing settings are under Billing.
Technical access is not a right to redistribute
Every plan grants technical access to the data. Rights to use the data are governed by the API terms:- Community and Builder cover use inside your own product or organization. You may display LLM Stats data to your users, with attribution when the plan requires it.
- Neither Community nor Builder lets you resell, sublicense, or ship the dataset (or a substantial extract of it) as a product, dataset, or API of your own.
- Redistribution, white-label use, private or early data, and contractual support or service guarantees are only available on Commercial. Paying for Builder never implies redistribution rights.
When to move from Builder to Commercial
Move to Commercial when you need any of:- More than 5,000 data responses per day or a burst limit above 300 requests per minute.
- History older than 12 months, or scheduled snapshots beyond the latest one.
- Push delivery with webhooks.
- Redistribution, resale, or embedding the dataset in a product you sell.
- A signed data-processing agreement, uptime commitment, or named support.
How the daily quota works
1
One pool per organization
All API keys in your organization, plus official MCP connections, draw from one pool. Projects and workspaces do not split the pool.
2
Successful data responses count
A data response is any
2xx response from a data route under /stats/v1/*. Cache hits count the same as fresh responses. Each unit is one HTTP response regardless of page size, so fetch the largest page that suits you.3
Failures do not count
4xx and 5xx responses do not consume daily quota. Rate-limited (429) and quota-exceeded requests do not consume it either. A 3xx response counts only when it delivers a data result: 304 Not Modified never counts, while the 302 from a snapshot download counts as one data response because it hands you the file.4
Reset at midnight UTC
Usage resets at
00:00:00 UTC every day. X-Quota-Reset carries the Unix timestamp of the next reset.Exempt requests
These never consume daily quota, though they still count toward the burst limit once authenticated:- Meta routes such as
GET /v1/account. - Health, OpenAPI, and documentation routes.
- Requests rejected before authentication completes (missing or invalid key).
Burst protection
Separately from the daily quota, every authenticated request — successful or not — increments a rolling per-minute counter for your organization. Exceeding it returns429 with error.code: "rate_limit_exceeded" and a Retry-After header. Burst limits protect the service; the daily quota is what your plan sells. See Rate limits and headers.
Retries and idempotency
Retrying a request that failed with429 or 5xx costs nothing, because failures do not count. Retrying a request that succeeded but whose response you lost (a timeout on your side, for example) would normally count twice. To avoid that, send an Idempotency-Key header (up to 128 characters, unique per logical request). Within the same day, repeated requests with the same key from the same organization and API key reserve quota only once.
Verified-attribution bonus
Community and Builder organizations earn +250 data responses per day for each verified integration, up to two integrations (+500 per day). The bonus is fixed and does not scale with traffic. Integrations become verified once the LLM Stats badge or source link is observed on your declared public URL. See Attribution for the lifecycle and evidence rules.Stay within quota
Use conditional requests
Use conditional requests
Data routes will return
ETag and Last-Modified (planned, ships with plan enforcement). Send If-None-Match (or If-Modified-Since) on repeat fetches. A 304 Not Modified costs no quota.Fetch large pages
Fetch large pages
One response is one unit whatever its size. Use the maximum
limit a route allows rather than many small pages.Cache on your side
Cache on your side
Scores and rankings change at most a few times a day. Respect the
Cache-Control header and cache responses for at least the returned max-age.Sync instead of poll (Builder and Commercial)
Sync instead of poll (Builder and Commercial)
Pull a bulk snapshot once, then apply incremental updates from a cursor. A daily sync typically costs a handful of responses instead of thousands of polls.
Watch the headers
Watch the headers
X-Quota-Remaining tells you how much is left today. Alert when it drops below the amount you expect to need before X-Quota-Reset.What happens at the limit
When the organization has used its daily quota, data routes return429 with error.code: "quota_exceeded", limit_type: "daily_quota", and reset_at set to the next UTC midnight. Meta routes keep working so you can still read your account state. Upgrade from the developer console to lift the limit immediately; the new plan’s quota applies from the next request.
Migration for existing keys
If you created a key before plan enforcement launched:- Your organization starts on Community unless you subscribe to Builder or sign a Commercial agreement.
- Access is not interrupted at launch. During the migration window, quota headers appear on responses so you can measure your usage before limits are enforced. The exact enforcement date is announced in the changelog and by email to the address on your developer account.
- Organizations whose observed usage exceeds Community limits at launch receive a grace period before enforcement. Grace terms are communicated individually and are not permanent grandfathering.
- The old “per API key, per endpoint” limits described in earlier versions of these docs are replaced by the per-organization quota and burst limits above.