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.
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.