Public price history for LLM inference across 100+ platforms. Updated every 6 hours; git is the time-series database.
3
stars
15
commits
Python
primary language
Sep 8, 2026
updated
A public, machine-readable record of what LLM inference actually costs — and how that price changes over time. Refreshed every 6 hours.
13,373 price points · 883 models · 73 platforms · updated 2026-09-02 12:40 UTC · history since 2026-09-02 (1 snapshot)
Every provider publishes today's price. Nobody publishes yesterday's. This repo fixes that by writing the number down every 6 hours, in git, forever.
Open-weight models are served by dozens of platforms at wildly different prices for what is nominally the same set of weights. Across the 44 open models served by 5 or more platforms, the median spread is 2.0× and 48% of models span more than 2×.
The obvious explanation — cheap endpoints are quantized harder — does not hold. Of those 44 models, the cheapest endpoint runs at full BF16 precision in 20 cases, more often than FP8 (14) or FP4 (10). The most expensive endpoint is the BF16 one in 31 of 44. What you are mostly paying for is hardware, margin and throughput: the priciest gpt-oss-120b endpoint is Cerebras at 11.7× the cheapest, and it is selling speed, not precision. The chart marks quantization by shape and colour so you can check this yourself.
| Model | Platforms | Cheapest | Input $/M | Output $/M | Spread |
|---|---|---|---|---|---|
| DeepSeek: DeepSeek V4 Flash 0731 | 30 | OpenInference | $0.05 | $0.16 | 8.8× |
| Z.ai: GLM 5.2 | 26 | DeepInfra | $0.49 | $1.56 | 2.9× |
| Z.ai: GLM 5.3 | 24 | Reka | $1.15 | $3.50 | 1.5× |
| Z.ai: GLM 5.3 Flash | 22 | DeepInfra | $0.07 | $0.25 | 2.0× |
| MoonshotAI: Kimi K2.6 | 20 | Inceptron | $0.53 | $3.39 | 2.1× |
| OpenAI: gpt-oss-120b | 18 | AkashML | $0.03 | $0.17 | 11.7× |
| DeepSeek: DeepSeek V4 Flash 0423 | 17 | DigitalOcean | $0.07 | $0.17 | 6.5× |
| DeepSeek: DeepSeek V4 Pro 0423 | 17 | DigitalOcean | $0.87 | $1.74 | 2.2× |
| DeepSeek: DeepSeek V4 Pro 0813 | 17 | DeepSeek | $0.66 | $1.98 | 2.2× |
| Z.ai: GLM 5.1 | 16 | GMICloud | $0.91 | $2.86 | 1.7× |
| DeepSeek: DeepSeek V3.2 | 15 | GMICloud | $0.21 | $0.31 | 14.4× |
| MoonshotAI: Kimi K2.7 Code | 15 | Inceptron | $0.66 | $3.40 | 1.4× |
| MoonshotAI: Kimi K3 | 15 | Makora | $2.55 | $12.75 | 1.4× |
| Google: Gemma 4 31B | 15 | DeepInfra | $0.09 | $0.38 | 11.0× |
| OpenAI: gpt-oss-20b | 13 | AkashML | $0.02 | $0.10 | 3.8× |
| Date | Model | Platform | Metric | Old | New | Change |
|---|---|---|---|---|---|---|
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | input | $0.22 | $0.44 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | output | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | cache_read | $0.01 | $0.01 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | input | $0.22 | $0.44 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | output | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | cache_read | $0.01 | $0.01 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | input | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | output | $1.98 | $3.96 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | cache_read | $0.02 | $0.04 | +100.0% |
| 2026-09-02 | Z.ai: GLM 5.3 Flash | Morph | cache_read | $0.01 | $0.02 | +100.0% |
Price changes are published as an Atom feed — one entry per move, or a single summary entry when a platform reprices its whole catalogue.
https://tokencanopy.github.io/price/feed.xml
Drop that into any feed reader, or into a Slack or Discord channel with
/feed subscribe <url> to get price-drop alerts where your team already works. The feed
stores nothing about who is reading it — there is no subscriber list.
OpenRouter already answers "what does this model cost right now, on 105 platforms", and it does it well — this repo uses it as a primary source rather than competing with it. What no public API answers is "what did it cost last month?"
Price history is the one dataset that cannot be backfilled. It only exists if somebody starts writing it down. So: every 6 hours, fetch, diff, commit.
| File | What |
|---|---|
data/current/prices.csv | Today's normalized snapshot, long format, one row per price |
data/history/price_changes.csv | Append-only change log — a row only when a price actually moves |
data/current/providers.csv | Platform → verified homepage, status page, HQ |
data/raw/ | Verbatim provider payloads, so any parsing error can be re-run against the original |
Prices move rarely, so the change log stays small while still reconstructing a full
step-function series for any key. To rebuild a series, take the change rows for a key
in observed_at order — each row holds the value from that moment until the next.
Schema (prices.csv): collected_at, source, platform, model_key, model_name, author, open_weight, variant, region, metric, usd_per_1m, context_length, effective_date
metric — input · output · cache_read · cache_writevariant — quantization (fp8, fp4, …) for inference platforms; tier
(standard, batch, priority) for cloud providersmodel_key — Hugging Face repo id for open-weight models, so the same model joins
across platforms without fuzzy name matching| Source | Auth | Coverage |
|---|---|---|
| OpenRouter | none | ~105 platforms, per-model per-provider pricing incl. quantization |
| AWS Bedrock Price List API | none | Per-region, plus batch / priority tiers OpenRouter does not expose |
| Azure Retail Prices API | none | Foundry Models meters |
| Google Vertex AI | planned | Billing Catalog API needs a free API key |
Every platform below links to its own site where we could verify one resolves, and
to its OpenRouter page otherwise. The mapping lives in data/current/providers.csv.
AI21 · AionLabs (4) · AkashML (7) · Alibaba (53) · Amazon Bedrock (32) · Amazon Nova · Ambient (3) · Anthropic (11) · Arcee AI (1) · AtlasCloud (27) · Avian · AWS Bedrock (76) · Azure (45) · Azure Foundry (491) · Baidu (8) · BaseTen (13) · Black Forest Labs · Cerebras (2) · Chutes (6) · Cirrascale · Clarifai · Claude Platform on AWS (9) · Cloudflare (18) · Cohere (4) · CoreWeave (23) · Cosine · Crucible · Crusoe (7) · Darkbloom (4) · Databricks · Decart (3) · Deepgram · DeepInfra (74) · DeepSeek (3) · DekaLLM · DigitalOcean (19) · FakeProvider · Featherless · Fireworks (11) · Fish Audio · Friendli (7) · GMICloud (21) · Google (45) · Google AI Studio (20) · Groq (6) · HeyGen · Inception (2) · Inceptron (5) · Inferact vLLM · InferenceNet · Infermatic · Inflection · Io Net (5) · Ionstream (2) · Krea · Liquid · Makora (4) · Mancer 2 (8) · Mara (4) · Meta (3) · Minimax (8) · Mistral (16) · Modal (4) · ModelRun (3) · Modular · Moonshot AI (3) · Morph (6) · NCompass · Nebius (11) · Nex AGI (2) · NextBit (12) · Novita (70) · Nvidia · Ollama · OpenAI (49) · OpenInference (1) · Parasail (37) · Perceptron (1) · Perplexity (5) · Phala (22) · Poolside (2) · Quiver · Recraft · Reka (7) · Relace (3) · Runway · Sail Research (5) · Sakana AI (2) · SambaNova (7) · Seed (6) · SiliconFlow (39) · Sourceful · Stealth · StepFun (1) · StreamLake (22) · Switchpoint · Tencent (5) · Tenstorrent · Thinking Machines · Together (16) · Upstage (2) · Venice (33) · VoyageAI by MongoDB · Wafer (4) · xAI (6) · Xiaomi (2) · Z.AI (13)
Read these before quoting a number.
5.4 opt Dz 1M Tokens). Meters that
can't be parsed unambiguously are dropped rather than guessed at.python -m venv .venv && ./.venv/bin/pip install -r requirements.txt
./.venv/bin/python scripts/collect.py # fetch raw payloads
./.venv/bin/python scripts/normalize.py # normalize + append changes
./.venv/bin/python scripts/charts.py # render README charts
./.venv/bin/python scripts/render_readme.py # inject tables
No API keys required.
CI owns everything under data/ and charts/ — it regenerates them every 6 hours
and commits. So local work should be code-only commits, branched from a freshly
fetched origin/main:
git fetch origin && git worktree add .worktrees/<name> -b <type>/<name> origin/main
If you ever hit a merge conflict in prices.csv or the raw JSON, do not resolve it
by hand — reset to origin and let the pipeline regenerate.
A healthy no-change run touches exactly two lines (the README timestamp and
meta.json). If a run with no price movement rewrites more than that, something
volatile is leaking into the archive; strip it in stabilize() rather than letting
it accumulate.
Code: MIT. Data: CC BY 4.0 — attribution appreciated, corrections more so.
8 commits
7 commits
Python
94.6%
HTML
5.4%
Public price history for LLM inference across 100+ platforms. Updated every 6 hours; git is the time-series database.
3
stars
15
commits
Python
primary language
Sep 8, 2026
updated
A public, machine-readable record of what LLM inference actually costs — and how that price changes over time. Refreshed every 6 hours.
13,373 price points · 883 models · 73 platforms · updated 2026-09-02 12:40 UTC · history since 2026-09-02 (1 snapshot)
Every provider publishes today's price. Nobody publishes yesterday's. This repo fixes that by writing the number down every 6 hours, in git, forever.
Open-weight models are served by dozens of platforms at wildly different prices for what is nominally the same set of weights. Across the 44 open models served by 5 or more platforms, the median spread is 2.0× and 48% of models span more than 2×.
The obvious explanation — cheap endpoints are quantized harder — does not hold. Of those 44 models, the cheapest endpoint runs at full BF16 precision in 20 cases, more often than FP8 (14) or FP4 (10). The most expensive endpoint is the BF16 one in 31 of 44. What you are mostly paying for is hardware, margin and throughput: the priciest gpt-oss-120b endpoint is Cerebras at 11.7× the cheapest, and it is selling speed, not precision. The chart marks quantization by shape and colour so you can check this yourself.
| Model | Platforms | Cheapest | Input $/M | Output $/M | Spread |
|---|---|---|---|---|---|
| DeepSeek: DeepSeek V4 Flash 0731 | 30 | OpenInference | $0.05 | $0.16 | 8.8× |
| Z.ai: GLM 5.2 | 26 | DeepInfra | $0.49 | $1.56 | 2.9× |
| Z.ai: GLM 5.3 | 24 | Reka | $1.15 | $3.50 | 1.5× |
| Z.ai: GLM 5.3 Flash | 22 | DeepInfra | $0.07 | $0.25 | 2.0× |
| MoonshotAI: Kimi K2.6 | 20 | Inceptron | $0.53 | $3.39 | 2.1× |
| OpenAI: gpt-oss-120b | 18 | AkashML | $0.03 | $0.17 | 11.7× |
| DeepSeek: DeepSeek V4 Flash 0423 | 17 | DigitalOcean | $0.07 | $0.17 | 6.5× |
| DeepSeek: DeepSeek V4 Pro 0423 | 17 | DigitalOcean | $0.87 | $1.74 | 2.2× |
| DeepSeek: DeepSeek V4 Pro 0813 | 17 | DeepSeek | $0.66 | $1.98 | 2.2× |
| Z.ai: GLM 5.1 | 16 | GMICloud | $0.91 | $2.86 | 1.7× |
| DeepSeek: DeepSeek V3.2 | 15 | GMICloud | $0.21 | $0.31 | 14.4× |
| MoonshotAI: Kimi K2.7 Code | 15 | Inceptron | $0.66 | $3.40 | 1.4× |
| MoonshotAI: Kimi K3 | 15 | Makora | $2.55 | $12.75 | 1.4× |
| Google: Gemma 4 31B | 15 | DeepInfra | $0.09 | $0.38 | 11.0× |
| OpenAI: gpt-oss-20b | 13 | AkashML | $0.02 | $0.10 | 3.8× |
| Date | Model | Platform | Metric | Old | New | Change |
|---|---|---|---|---|---|---|
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | input | $0.22 | $0.44 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | output | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash 0731 | DeepSeek | cache_read | $0.01 | $0.01 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | input | $0.22 | $0.44 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | output | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Flash Vision Exp | DeepSeek | cache_read | $0.01 | $0.01 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | input | $0.66 | $1.32 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | output | $1.98 | $3.96 | +100.0% |
| 2026-09-02 | DeepSeek: DeepSeek V4 Pro 0813 | DeepSeek | cache_read | $0.02 | $0.04 | +100.0% |
| 2026-09-02 | Z.ai: GLM 5.3 Flash | Morph | cache_read | $0.01 | $0.02 | +100.0% |
Price changes are published as an Atom feed — one entry per move, or a single summary entry when a platform reprices its whole catalogue.
https://tokencanopy.github.io/price/feed.xml
Drop that into any feed reader, or into a Slack or Discord channel with
/feed subscribe <url> to get price-drop alerts where your team already works. The feed
stores nothing about who is reading it — there is no subscriber list.
OpenRouter already answers "what does this model cost right now, on 105 platforms", and it does it well — this repo uses it as a primary source rather than competing with it. What no public API answers is "what did it cost last month?"
Price history is the one dataset that cannot be backfilled. It only exists if somebody starts writing it down. So: every 6 hours, fetch, diff, commit.
| File | What |
|---|---|
data/current/prices.csv | Today's normalized snapshot, long format, one row per price |
data/history/price_changes.csv | Append-only change log — a row only when a price actually moves |
data/current/providers.csv | Platform → verified homepage, status page, HQ |
data/raw/ | Verbatim provider payloads, so any parsing error can be re-run against the original |
Prices move rarely, so the change log stays small while still reconstructing a full
step-function series for any key. To rebuild a series, take the change rows for a key
in observed_at order — each row holds the value from that moment until the next.
Schema (prices.csv): collected_at, source, platform, model_key, model_name, author, open_weight, variant, region, metric, usd_per_1m, context_length, effective_date
metric — input · output · cache_read · cache_writevariant — quantization (fp8, fp4, …) for inference platforms; tier
(standard, batch, priority) for cloud providersmodel_key — Hugging Face repo id for open-weight models, so the same model joins
across platforms without fuzzy name matching| Source | Auth | Coverage |
|---|---|---|
| OpenRouter | none | ~105 platforms, per-model per-provider pricing incl. quantization |
| AWS Bedrock Price List API | none | Per-region, plus batch / priority tiers OpenRouter does not expose |
| Azure Retail Prices API | none | Foundry Models meters |
| Google Vertex AI | planned | Billing Catalog API needs a free API key |
Every platform below links to its own site where we could verify one resolves, and
to its OpenRouter page otherwise. The mapping lives in data/current/providers.csv.
AI21 · AionLabs (4) · AkashML (7) · Alibaba (53) · Amazon Bedrock (32) · Amazon Nova · Ambient (3) · Anthropic (11) · Arcee AI (1) · AtlasCloud (27) · Avian · AWS Bedrock (76) · Azure (45) · Azure Foundry (491) · Baidu (8) · BaseTen (13) · Black Forest Labs · Cerebras (2) · Chutes (6) · Cirrascale · Clarifai · Claude Platform on AWS (9) · Cloudflare (18) · Cohere (4) · CoreWeave (23) · Cosine · Crucible · Crusoe (7) · Darkbloom (4) · Databricks · Decart (3) · Deepgram · DeepInfra (74) · DeepSeek (3) · DekaLLM · DigitalOcean (19) · FakeProvider · Featherless · Fireworks (11) · Fish Audio · Friendli (7) · GMICloud (21) · Google (45) · Google AI Studio (20) · Groq (6) · HeyGen · Inception (2) · Inceptron (5) · Inferact vLLM · InferenceNet · Infermatic · Inflection · Io Net (5) · Ionstream (2) · Krea · Liquid · Makora (4) · Mancer 2 (8) · Mara (4) · Meta (3) · Minimax (8) · Mistral (16) · Modal (4) · ModelRun (3) · Modular · Moonshot AI (3) · Morph (6) · NCompass · Nebius (11) · Nex AGI (2) · NextBit (12) · Novita (70) · Nvidia · Ollama · OpenAI (49) · OpenInference (1) · Parasail (37) · Perceptron (1) · Perplexity (5) · Phala (22) · Poolside (2) · Quiver · Recraft · Reka (7) · Relace (3) · Runway · Sail Research (5) · Sakana AI (2) · SambaNova (7) · Seed (6) · SiliconFlow (39) · Sourceful · Stealth · StepFun (1) · StreamLake (22) · Switchpoint · Tencent (5) · Tenstorrent · Thinking Machines · Together (16) · Upstage (2) · Venice (33) · VoyageAI by MongoDB · Wafer (4) · xAI (6) · Xiaomi (2) · Z.AI (13)
Read these before quoting a number.
5.4 opt Dz 1M Tokens). Meters that
can't be parsed unambiguously are dropped rather than guessed at.python -m venv .venv && ./.venv/bin/pip install -r requirements.txt
./.venv/bin/python scripts/collect.py # fetch raw payloads
./.venv/bin/python scripts/normalize.py # normalize + append changes
./.venv/bin/python scripts/charts.py # render README charts
./.venv/bin/python scripts/render_readme.py # inject tables
No API keys required.
CI owns everything under data/ and charts/ — it regenerates them every 6 hours
and commits. So local work should be code-only commits, branched from a freshly
fetched origin/main:
git fetch origin && git worktree add .worktrees/<name> -b <type>/<name> origin/main
If you ever hit a merge conflict in prices.csv or the raw JSON, do not resolve it
by hand — reset to origin and let the pipeline regenerate.
A healthy no-change run touches exactly two lines (the README timestamp and
meta.json). If a run with no price movement rewrites more than that, something
volatile is leaking into the archive; strip it in stabilize() rather than letting
it accumulate.
Code: MIT. Data: CC BY 4.0 — attribution appreciated, corrections more so.
8 commits
7 commits
Python
94.6%
HTML
5.4%