OpenRouter Scraper — LLM Pricing Comparison & Uptime avatar

OpenRouter Scraper — LLM Pricing Comparison & Uptime

Pricing

from $2.00 / 1,000 model scrapeds

Go to Apify Store
OpenRouter Scraper — LLM Pricing Comparison & Uptime

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

Kaan Salgır

Maintained by Community

Actor 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 install
npm test # offline regression tests against a saved API response
npm start # local run; put an INPUT.json in storage/key_value_stores/default/