LLM API PricesUpdated 2026-10-12 06:17:01 UTC

Method

Every price on this site is read from a public source on a schedule and written to a static page. Nothing is typed by hand, nothing is estimated, and a model we cannot price confidently is dropped rather than guessed.

Sources

SourceHowFragilityOffers
OpenRouter (aggregator)https://openrouter.ai/models
data: https://openrouter.ai/api/v1/models
json apiAPI-stable333
OrcaRouter (aggregator)https://www.orcarouter.ai/modelsjson apiAPI-undocumented162
LiteLLM index (community)https://github.com/BerriAI/litellm
data: https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
json fileAPI-stable160
Official - OpenAIhttps://platform.openai.com/docs/pricingembedded jsonembedded-JSON127
TokenRouter (aggregator)https://www.tokenrouter.com/modelsjson apiAPI-undocumented + derived ratio120
Cheaper Inference (discount marketplace)https://www.cheaperinference.com/embedded jsonembedded-JSON68
Together AI (inference host)https://www.together.ai/pricinghtml scrapeHTML-scrape + CMS pagination56
Official - Google (Gemini API)https://ai.google.dev/gemini-api/docs/pricinghtml scrapeHTML-scrape + dated prices51
Official - Anthropichttps://docs.claude.com/en/docs/about-claude/pricinghtml scrapeHTML-scrape44
InferX (inference host)https://inferx.net/pricing/endpointshtml scrapeHTML-scrape14
GMI Cloud (featured list)https://console.gmicloud.ai/json apiAPI-undocumented + curated list5
RunInfra (inference host)https://runinfra.ai/inference-apiembedded jsonembedded-JSON5
Official - DeepSeekhttps://api-docs.deepseek.com/quick_start/pricinghtml scrapeHTML-scrape4

13 of 13 sources answered on the last run. Each is fetched once per run with a User-Agent naming this site, and each source's robots.txt was checked before it was added. A source that returns a well-formed page with zero rows is treated as a failure, not as an empty catalogue: its last known prices are carried forward and marked stale rather than blanked.

Offers, and the price you see

A model is not one price. 186 of 519 models here are sold by more than one source, at genuinely different rates - the widest spread in the catalogue right now is deepseek/deepseek-v4-flash at 44.4× ($0.0826 to $0.44 per 1M input). So each model carries an offers list: one row per source that sells it, with input, output and cached-input prices and the time it was read. The number in the table is the cheapest of those offers; the model's own page shows all of them.

The headline number is always the standard, synchronous price. The main table, the cheapest-per-tier cards and every spread figure on this site are computed from standard synchronous offers only. Excluded from "cheapest", deliberately: promotional $0.00 rates, free tiers, batch / flex / priority / fast-mode SKUs, off-peak windows such as DeepSeek's, and any offer missing half its price. Every one of them is still listed on the model page, indented under the seller's standard row and labelled with its kind - they are just not allowed to win a headline slot, because a reader comparing "cheapest" is comparing the price of the ordinary API.

Per-context-length price breaks are the one exception, and they stay in: ≤ 200k tokens and > 200k tokens are both the ordinary synchronous price, so the cheaper rung is the headline figure - the same one the vendor advertises - and the higher rung is shown beneath it.

Where a seller's link points at its own pricing page, that is the page the number was read from. The two index-style sources are the exception and say so in their label: the LiteLLM index is a community-maintained JSON file, so its rows link to the pricing page of the provider whose price it transcribes, and the raw file is cited here instead: https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json, https://openrouter.ai/api/v1/models.

Unwrapping the aggregator

OpenRouter is not a seller; it is a marketplace, and one row saying "OpenRouter" hides the dozen companies actually running the weights. For the 43 models in the curated core it is therefore unwrapped: its public endpoints API is asked which providers serve that model, and each one becomes a row of its own - 402 provider endpoints on the last run, carrying that provider's price, its quantization and its uptime.

A provider's own price beats a resold one. Before any provider is published as "via OpenRouter", we check whether it publishes prices itself. 45 providers sell at least two core models and so were worth checking; 14 publish an open, unauthenticated price list (AtlasCloud, BaseTen, Chutes, DeepInfra, Friendli, Groq, Moonshot AI, Novita, Parasail, Phala, SiliconFlow, Venice, Z.AI, xAI) and appear under their own name, linked to their own pricing page. The rest answered with an API key requirement, an error, or HTML only - a price behind a credential is not a published price - and appear as "Name (via OpenRouter)" with the endpoint price and its uptime, linked to the OpenRouter model page.

Where a provider publishes a price and OpenRouter resells it at a different one, both rows are shown. The gap is not noise, it is the marketplace's margin, and it is the sort of thing this site exists to make visible: 21 such pairs right now, the widest being +11%. The plain "OpenRouter (aggregator)" row remains on every model outside the core, where no unwrap has been done.

The unwrap is bounded by politeness: one request per model, one per provider, roughly a third of a second apart, under this site's own User-Agent, on public endpoints only. Every step fails soft - a provider that does not answer simply keeps its aggregate row, and no price is ever blanked because a metadata request failed.

Metrics beyond price

Only what a source actually publishes, labelled with that source. Where a seller publishes a cached-input rate it renders in that seller's row on the model page (317 models have at least one); where nobody does, the column is absent rather than filled with dashes. Throughput in tokens per second shows on the 5 models whose seller states one - RunInfra does, nobody else here does. Uptime comes from OpenRouter's public API, which reports it per serving endpoint. Since the unwrap above gives every core model one row per provider, that figure now renders per row - the share of the last 30 minutes that provider's endpoint answered - on the 42 core models it covers. All three are columns in the offers table, not prose: a measurement you cannot scan down a column is not much of a measurement.

Latency is shown nowhere, and throughput is never inferred. OpenRouter's website displays both, but its public API returns null for latency_last_30m and throughput_last_30m on every endpoint we measured - 175 of 175. An unpublished number is not a number, so this site leaves those blank rather than estimating them from a benchmark it did not run.

When sources disagree

The first-party price and the OpenRouter price are still cross-checked on every model that carries both. If they differ by more than 20%, the row is flagged differs and neither is assumed correct. 5 rows are flagged right now. Nothing is ever averaged.

Model identity

Comparing sellers only works if the same model is recognised across sources that call it anthropic/claude-opus-5, Claude Opus 5 and claude-opus-5-20260101. Names are normalized to a canonical key, and a variant is never merged with its base - not -fast, not -turbo, not -vision, not a dated snapshot - unless an explicit, hand-checked alias says so. That rule is not caution for its own sake: two sources price deepseek-v4-pro and deepseek-v4-pro-0813 differently, so merging them would average two real offers into one that nobody sells. Unmatched stays unmatched.

Tiers

The tier chip is a model's position in its own developer's lineup, assigned by name. Flagship - each developer's top line: opus / fable, GPT Sol, Kimi K3, Grok 4.6, GLM 5.3, Nemotron Ultra. Mid - the workhorse line: sonnet, GPT Terra, Gemini Flash, Kimi K2.x, large open models. Small - fast and cheap: haiku, GPT Luna, flash-lite, mini, nano, and sub-10B open models. Anything the map cannot place goes to Unclassified rather than being forced into a tier it may not belong to.

Capability scores

The Score column is the Intelligence Index by Artificial Analysis, an independent eval suite run identically across models. Where a model is benchmarked in several reasoning configs, the best-scoring config is shown (with its label on the model page) - the same number Artificial Analysis headlines. 202 of 519 models carry a score; the rest show a dash rather than a guess. The score deliberately does NOT set the tier chip: capability and lineup position are different axes - a cheap model can be measured smart, and saying so is the point of showing both columns side by side.

Core selection

The default view on the models page is a curated core of 47 models - the families in common use, kept as a hand-edited allowlist. It is an editorial selection, not a ranking: a model is outside it because it is niche, superseded, or a variant, never because it priced badly. Nothing is discarded; all 519 priced models are one click away in show all.

Logos

The developer marks are the monochrome set from lobehub/lobe-icons (MIT). Where that set has no mark for a developer, the site draws a plain letter monogram instead - never a similar company's logo and never one redrawn from memory. All product names, logos and brands are property of their respective owners; used for identification only. Not affiliated with any provider.

Source labels

A label has to answer one question: whose number is this, and how did we get it? Official - X is reserved for a first-party pricing page and is the only prefix that promises the vendor published this number. (aggregator) marks a router reselling other people's endpoints, (inference host) a company running the weights itself - different products at the same price. Anything not observed on a vendor page says so: (community) for the LiteLLM index, (featured list) for GMI Cloud's curated nine, (derived) for a computed figure.

Where two sources sell the same model, the first-party page wins the headline price and the others stay visible as offers. LiteLLM rows for the four providers whose own pricing pages we read - OpenAI, Anthropic, Google and DeepSeek - are dropped at collection time rather than at render time, so they never enter the spread statistics either.

What is left out

Text chat and completion models only - no embeddings, image, audio, video or rerank models. Zero-priced and half-priced rows are dropped from the headline figure. Batch, flex, priority and off-peak SKUs are collected now and shown per model, but never as the headline.

Also uncollected, and stated rather than hidden: Together's dedicated-inference deployments are priced per GPU-hour, which is a different unit; Anthropic's AWS and Microsoft Foundry tables price in Claude Consumption Units, and deriving a per-token figure from them would be inventing a number; several vendors' full catalogues sit behind an API key, so what is published here is the public subset.

Gateways that publish no catalogue are absent rather than estimated. Merge.dev, for example, states only that it charges a 5.0% markup over the underlying provider - that is a formula, not a price list, so no Merge prices are published here. An absent model is better than an invented number.

← Back to the prices