Daily token totals for top 50 models
Returns the top 50 public models per day by total token usage on OpenRouter, plus a single aggregated other row per day that sums every model outside that top 50. Token totals are prompt_tokens + completion_tokens, matching the public rankings chart on openrouter.ai/rankings.
Each row is a distinct (date, model_permaslug) pair. The other row uses the reserved permaslug other and is always returned last within its date, so callers can compute top-50 traffic / total daily traffic without a second request.
Optional filters slice the dataset. period (day/week/month) sets the time grain. modality and context_bucket narrow the exact dataset by output/input modality (or tool-calling activity) and request context length. category and language_type instead read a sampled, upsampled dataset whose total_tokens are weekly-grain estimates — they cannot be combined with each other or with the exact filters, and reject period=day with a 400.
Authenticate with any valid OpenRouter API key (same key used for inference). Rate-limited to 30 requests/minute per key and 500 requests/day per account.
When republishing or quoting this dataset, OpenRouter must be cited as: "Source: OpenRouter (openrouter.ai/rankings), as of {as_of}."
Token counts come from each upstream provider's own tokenizer (Anthropic counts are as reported by Anthropic, OpenAI counts are as reported by OpenAI, etc.), so a token in one row is not directly comparable to a token in another row from a different provider.
Query parameters
Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before end_date. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in meta.start_date.
Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before end_date. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in meta.start_date.
End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400.
End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400.
Time grain of each row. day (default) returns the per-UTC-day series; week buckets by ISO week start; month buckets by month start. With category or language_type only week (default) and month are available — day is rejected with a 400 because those datasets are aggregated weekly. For those sampled datasets period=month buckets each week by its week-start month, so totals are approximate at month boundaries.
Time grain of each row. day (default) returns the per-UTC-day series; week buckets by ISO week start; month buckets by month start. With category or language_type only week (default) and month are available — day is rejected with a 400 because those datasets are aggregated weekly. For those sampled datasets period=month buckets each week by its week-start month, so totals are approximate at month boundaries.
Restrict to models for a modality surface: text / image_output match output modality, image / audio match input modality, and tool_calling keeps only rows that recorded at least one tool call. Exact dataset — cannot be combined with category or language_type.
Restrict to models for a modality surface: text / image_output match output modality, image / audio match input modality, and tool_calling keeps only rows that recorded at least one tool call. Exact dataset — cannot be combined with category or language_type.
Restrict to requests whose context length falls in this bucket (1K, 10K, 100K, 1M, or 10M). Exact dataset — cannot be combined with category or language_type.
Restrict to requests whose context length falls in this bucket (1K, 10K, 100K, 1M, or 10M). Exact dataset — cannot be combined with category or language_type.
Restrict to a use-case category (e.g. programming, roleplay). Sourced from a sampled, upsampled dataset, so total_tokens is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past end_date). Cannot be combined with modality, context_bucket, or language_type.
Restrict to a use-case category (e.g. programming, roleplay). Sourced from a sampled, upsampled dataset, so total_tokens is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past end_date). Cannot be combined with modality, context_bucket, or language_type.
Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled dataset, so total_tokens is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past end_date). Cannot be combined with modality, context_bucket, or category.
Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled dataset, so total_tokens is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past end_date). Cannot be combined with modality, context_bucket, or category.
Response
Up to 51 rows per day — the top 50 public models by total_tokens plus a single aggregated other row covering every model outside that top 50. Sorted by date ascending, then by total_tokens descending, with other pinned last within its date.
Example response
{
"data": [
{
"date": "2026-05-11",
"model_permaslug": "openai/gpt-4o-2024-05-13",
"total_tokens": "12345678"
},
{
"date": "2026-05-11",
"model_permaslug": "anthropic/claude-3.5-sonnet-20241022",
"total_tokens": "9876543"
}
],
"meta": {
"as_of": "2026-05-12T02:00:00Z",
"end_date": "2026-05-11",
"start_date": "2026-04-12",
"version": "v1"
}
}