Methodology
Where the numbers come from, how they are combined, and what the LLM Price Index measures. Prices have been tracked since Oct 3, 2026.
Data collection
Prices are collected from provider listings every six hours, at 00:00, 06:00, 12:00 and 18:00 UTC. For every model, each provider endpoint that serves it is recorded with its prices, region or variant, quantization, context length and recent uptime. Each run keeps the raw responses, so every number on this site can be traced back to what was published at that moment.
Models are identified by a stable id such as meta-llama/llama-3.3-70b-instruct. Automatic routers and “latest” aliases, which point at other models, are left out.
Prices & blending
All prices are in US dollars per one million tokens, except per-request, per-image and per-search fees. Stored prices are exact decimal strings; nothing is rounded until it is displayed.
Most workloads read far more than they write, so models are compared on a single blended price that weights input three to one:
blended = (3 × input + 1 × output) / 4Best price is the lowest blended price among a model’s active, paid provider endpoints. Spread is the most expensive provider’s blended price divided by the cheapest, so 2.0× means the priciest provider charges twice as much for the same model.
The LLM Price Index
The index tracks how the price of LLM tokens moves over time, the way a consumer price index tracks a basket of goods. It starts at 100 on the first tracked day.
Each day it compares every offer that was active on both that day and the day before: paid endpoints of text-output models, priced at the end of each UTC day. It takes the geometric mean of their price ratios and multiplies it onto the previous value:
index(d) = index(d−1) × ( ∏ blended(d) / blended(d−1) ) ^ (1/n)Because only offers present on both days are compared, a new provider launching a cheap endpoint or an old one disappearing does not move the index. Only real price changes do. The geometric mean gives a 50% cut on a $0.10 model the same weight as a 50% cut on a $15 model.
Alongside the index, each day records the median of every model’s best blended price and the number of offers compared, both visible when you hover the chart.
Changes & removals
Every offer has a price history made of periods. A new period begins only when a price actually changes, and each changed field (input, output, cache, and so on) is logged as its own change with its old and new value.
An offer is marked delisted only when the source that lists it responded successfully and the offer was missing. A timeout or an error from a provider never counts as a removal, so outages don’t produce phantom delistings. Models are retired the same way, when the model catalogue loads and no longer includes them.
History begins with the first crawl. Seven- and thirty-day changes, sparklines and the index fill in as the history grows.
API
Everything on this site comes from a public JSON API. Responses are cached for 60 seconds. Timestamps are UTC, prices are numbers in USD per 1M tokens, and percent changes are fractions (−0.12 is −12%).