Data sources
Prices are read automatically from the pages below once a day, normalized to USD per 1M tokens, and only recorded when a number actually changes. 5 of 10 providers are read from their own published pricing; the rest have no machine-readable page and come from a reseller catalogue, which is marked on every row it produces.
| Provider | Source | How it is read | Models |
|---|---|---|---|
| OpenAI | First-partyplatform.openai.com/docs/pricing.md | Markdown rendering of the docs page (`.md` suffix) | 73 |
| ClaudeAnthropic | First-partydocs.anthropic.com/en/docs/about-claude/pricing.md | Markdown rendering of the docs page (`.md` suffix) | 15 |
| GeminiGoogle | First-partyai.google.dev/gemini-api/docs/pricing | HTML pricing tables, one per model | 29 |
| GrokxAI | First-partydocs.x.ai/docs/models | Structured JSON embedded in the docs page | 6 |
| GLMZhipu AI | First-partydocs.z.ai/guides/overview/pricing.md | Markdown rendering of the international docs (`.md` suffix) | 20 |
| DeepSeek | Via OpenRouteropenrouter.ai/api/v1/modelsvendor page not machine-readable | OpenRouter catalogue | 13 |
| QwenAlibaba | Via OpenRouteropenrouter.ai/api/v1/modelsvendor page not machine-readable | OpenRouter catalogue | 49 |
| KimiMoonshot AI | Via OpenRouteropenrouter.ai/api/v1/modelsvendor page not machine-readable | OpenRouter catalogue | 9 |
| DoubaoByteDance | Via OpenRouteropenrouter.ai/api/v1/modelsvendor page not machine-readable | OpenRouter catalogue | 1 |
| ERNIEBaidu | Via OpenRouteropenrouter.ai/api/v1/modelsvendor page not machine-readable | OpenRouter catalogue | 1 |
What is deliberately excluded
- Batch, Flex and Priority tiers. Batch is typically half price and asynchronous. Comparing one vendor's batch rate against another's standard rate would make the whole table wrong, so only standard pricing is shown.
- Non-token pricing. Per-image, per-minute and per-character rates use different units and are not comparable to a cost per million tokens.
- Free tiers and trial credits. A price of
Freemeans the model itself is billed at zero, not that a free allowance exists. - Negotiated and committed-use discounts. Only public list pricing is tracked.
How accuracy is protected
- A value must look like money to be stored, so a token count sitting in a price column is rejected rather than published as a price.
- A provider whose model count collapses, or whose prices all shift by the same exact factor, is blocked automatically — that pattern means a parser latched onto the wrong table, not that a vendor repriced. The previous prices stand until a human looks.
- A failed extraction writes nothing. Yesterday's verified price is better than a blank or a guess.
- Every row records the page it came from and when it was last confirmed, both of which are shown on the model page and returned by the API.
Verify before you commit spend
This is an automated reading of pages that change without notice, and rows marked Via OpenRouter come from a reseller whose rate can differ from the vendor's own. For anything financially material, confirm against the provider's page — every model page links to the exact source used.