OpenRouter Scraper — LLM Pricing Comparison & Uptime
Pricing
from $2.00 / 1,000 model scrapeds
OpenRouter Scraper — LLM Pricing Comparison & Uptime
LLM pricing comparison across every model on OpenRouter, in dollars per million tokens, with per-provider quantization, status and uptime.
Pricing
from $2.00 / 1,000 model scrapeds
Rating
0.0
(0)
Developer
Kaan Salgır
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
An LLM pricing comparison across every model on OpenRouter, with prices converted to dollars per million tokens — the unit the market actually quotes — plus, for each serving provider, its price, quantization, status and measured uptime.
No account, no API key. It reads OpenRouter's documented public API.
LLM pricing comparison table, in usable units
OpenRouter quotes prices per token, as strings:
"pricing": { "prompt": "0.0000007", "completion": "0.0000014" }
Nobody compares models in those units. This scraper returns inputPerMTok: 0.7 and outputPerMTok: 1.4, plus blendedPerMTok — a 3:1 input-to-output blend, the usual chat workload mix — so you can rank the whole catalogue by what it will really cost you and drop it straight into a pricing table or a spreadsheet.
The -1 trap. OpenRouter uses -1 to mean "the price depends on which model this request gets routed to" for openrouter/auto and its siblings. Multiply that naively and you publish a price of minus one million dollars per million tokens, which sorts straight to the top of any cheapest-first list. Those models come back with variablePricing: true and null prices instead.
Compare LLM providers: price, quantization and uptime
Turn on Include provider endpoints and every model also yields one row per provider actually serving it:
providerName · quantization · contextLength · maxCompletionTokens · inputPerMTok · outputPerMTok · uptimeLast5m · uptimeLast30m · uptimeLast1d · status · supportsToolChoice · supportsImplicitCaching
The same model often costs different amounts, is quantized differently, and is up a different share of the time depending on who serves it. That is the data behind a routing decision, and no model list gives it to you.
On latency and throughput: those two fields are part of OpenRouter's response shape and are passed straight through, but OpenRouter currently returns them empty for every provider we have measured — 0 of 47 endpoints across a sample. They are in the output for the day that changes; do not plan around them today. uptimeLast1d is populated for about 9 in 10 endpoints, quantization and status for all of them.
LLM model list API: what you get per model
modelId · name · provider · description · createdAt · contextLength · maxCompletionTokens · inputPerMTok · outputPerMTok · blendedPerMTok · cacheReadPerMTok · cacheWritePerMTok · imageInputPerMTok · audioInputPerMTok · isFree · variablePricing · modality · inputModalities · outputModalities · tokenizer · supportsTools · supportsReasoning · reasoningMandatory · supportedParameters · knowledgeCutoff · huggingFaceId
How to use it
Run it with no input at all for the full catalogue. Filters combine with AND:
{"excludeFree": true,"requireTools": true,"minContextLength": 200000,"maxInputPerMTok": 3,"includeProviderEndpoints": true}
Filter by providers (anthropic, openai, google, meta-llama), by required inputModalities (image, audio), by search text, or by reasoning support.
Provider endpoints cost one extra request per model, so pair that option with filters rather than running it across all several hundred models.
FAQ
Do I need an OpenRouter API key?
No. This reads the public /api/v1/models endpoint, which needs no authentication.
How often does the catalogue change? Models and prices move weekly. Schedule this on Apify and you get a dated price history, which is the thing you cannot reconstruct later.
Why is a model showing no price?
Either it is genuinely free (isFree: true, both prices zero) or it is a router model whose price depends on where the request lands (variablePricing: true, prices null). The two are kept distinct on purpose.
What is blendedPerMTok?
Input and output weighted 3:1, the usual ratio for chat workloads. It gives you one number to sort the catalogue by. If your workload is output-heavy, sort on outputPerMTok instead.
Can I get per-provider prices for one model?
Yes — set a search filter to the model id and turn on Include provider endpoints.
Does this scrape the OpenRouter website? No. It uses the documented public API only, so it does not break when the site is redesigned and involves no personal data at any point.
Pricing
Pay per event: one charge per model and one per provider endpoint. Nothing is charged for compute time or failed requests.
Development
npm installnpm test # offline regression tests against a saved API responsenpm start # local run; put an INPUT.json in storage/key_value_stores/default/