Free LLM pricing API

Every price on this site is also served as plain JSON: no key, no signup, no rate limit beyond normal fair use, and CORS is open so a browser app can fetch it directly from the client. 317 models across 27 providers, last verified 2026-08-30.

All prices below are USD per 1,000,000 tokens — not per token, not per 1,000. Read every rate on this site and in every endpoint as "$X per million".

Current prices

GET /pricing.json

The full dataset: every provider, every model, input/output/cache prices, context window and tier, plus the source URL and verification date behind each entry. Also served at /llm-pricing.json — identical content, kept as a separate stable path so it can be cached and versioned on its own terms.

curl https://is.kluuz.de/pricing.json

What changed

GET /llm-pricing-changes.json

Every price move recorded so far: which model, which provider, before and after, and the percent change, grouped by the verification that found it. The same data behind the dated change log.

curl https://is.kluuz.de/llm-pricing-changes.json

GET /feed.xml

The same change log as an Atom feed — one entry per verification that moved a price. Subscribe once in any feed reader and get every later change with no polling and no key.

curl https://is.kluuz.de/feed.xml

Dated snapshots

Every verification pass is kept, not just the diff against it: 3 dated snapshots so far, from 2026-08-28 to 2026-08-30. This is the one dataset here nobody else has — it can only be built by writing a price down before it moves.

GET /history/index.json

The list of available snapshot dates, so a consumer can discover what exists without guessing filenames.

curl https://is.kluuz.de/history/index.json

GET /history/<date>.json

One dated snapshot — the full price table exactly as it was recorded on that date, e.g. /history/2026-08-30.json.

curl https://is.kluuz.de/history/2026-08-30.json

Prices before we started

The snapshots above begin when this site did. Everything earlier had to be reconstructed: 255 dated observations across 158 model–seller series, each one read off the provider's own pricing page or a timestamped Internet Archive snapshot of it, and each carrying the URL and the quote that locates the figure on that page. Rendered as what tokens used to cost.

Two cautions travel with this file. A point's date is when the page said that, which is not always when the price took effect; and observations in CNY are published in CNY, because converting an old price at today's exchange rate would manufacture a number nobody can check.

A companion file deepens those series where an independent record can be checked against them. /price-history-aggregate.json is built from dated commits of an aggregator's price table, so it carries a weaker guarantee than the file above and is published separately rather than merged into it: a date there is the month a price was first recorded, never the day it was announced. A model appears in it only if its mapping corroborated — at some date where we hold a price read off the seller's own page, the aggregator's figure for that month agrees to within 2%. Mappings that could not be checked that way were dropped rather than guessed.

GET /price-history-aggregate.json

Deepened price series derived from an aggregator's git history: provider, model, date, input and output price per 1M tokens, the LiteLLM key it came from, and a permanent commit-pinned URL for the exact bytes each point was read from. Derived evidence — do not concatenate with /price-history.json.

curl https://is.kluuz.de/price-history-aggregate.json

GET /price-history.json

The full historical record: provider, model, host, date, input and output price per 1M tokens, the kind of evidence (launch post, pricing-page snapshot, announced change), the source URL and a quote locating the figure on it.

curl https://is.kluuz.de/price-history.json

Update cadence

This is a small, individually verified dataset, not a scrape — every price is read off the provider's own pricing page by a person, not on a fixed schedule. Verifications land days to weeks apart. The updated field at the top of pricing.json and each model's own verified date are the actual source of truth for freshness, not this paragraph. A new file under /history/ and an entry in the change feed only appear when a verification pass finds something that actually moved.

Independent cross-check

Every price above already carries the source URL and the date it was checked against that provider's own primary pricing page -- each entry is read off that page on its own, one model at a time, rather than scraped from an aggregator. Separately, a scheduled job runs daily and cross-checks those recorded numbers against OpenRouter's public API: an automated second opinion that catches drift between those checks. It last ran October 29, 2026.

This is not the same as verification. OpenRouter is a reseller, not a primary source. Agreement does not prove our number is right -- OpenRouter may simply be mirroring the same list price we already read off the primary page -- and disagreement does not prove it is wrong. The cross-check only points at rows worth a second look; the primary source is always opened again before any number in pricing.json changes. The automation deliberately never edits the dataset -- it reports, it does not correct.

Latest run: 298 of 317 models in the dataset were comparable against OpenRouter (the rest, including this project's own OpenRouter-hosted listings, can't be checked against OpenRouter itself). Of those, 114 agreed and 3 were flagged as a material difference worth a second look; 5 differ for a reason a previous pass already established at the primary source; 1 could only be compared against a different company hosting the same weights, which confirms nothing on its own; 175 could not be matched to an OpenRouter listing at all -- either the model isn't listed there, or nobody serving it there is the provider we record. Full machine-readable report: /verification.json.

Licence and attribution

The dataset — everything served under /pricing.json, /llm-pricing-changes.json and /history/ — is licensed CC BY 4.0. Reuse it, republish it, build on it commercially or not; the only requirement is attribution — a link back to https://is.kluuz.de/. Full terms: LICENSE-DATA.md.

No warranty. Prices change, sometimes without notice. Every entry carries the source URL and the date it was verified against — check that before relying on a number for a purchasing decision.

For AI agents

/llms.txt is a compact, generated summary of this page in the llms.txt convention — fetch that one file to get the dataset endpoint, coverage numbers and licence without crawling the rest of the site.