Docs
API
- Base URL
- https://llmprice.org/api
- Auth
- None
- CORS
- Open (any origin)
- Format
- JSON, GET only. Timestamps ISO 8601 UTC.
- Prices
- USD per 1M tokens.
request,imageandweb_searchare USD per unit.null= not offered. - Changes
pctandchange_*are fractions (-0.12= −12%).- Caching
Cache-Control: max-age=60, ETag supported. Errors return{"error": "…"}with a 4xx/5xx status.
curl https://llmprice.org/api/models/meta-llama/llama-3.3-70b-instructGET/api/stats
Headline counts across all live models, providers and offers.
{
"models": 440,
"providers": 77,
"offers": 1872,
"changes_24h": 272,
"changes_7d": 272,
"tracking_since": "2026-10-03T11:50:50Z"
}GET/api/models
Every model with its cheapest provider, provider count, spread, 7d/30d change and a 30-day sparkline. Includes removed models (removed_at set).
[
{
"id": "meta-llama/llama-3.3-70b-instruct",
"name": "Meta: Llama 3.3 70B Instruct",
"author": "meta-llama",
"context_length": 131072,
"best": {
"prompt": 0.1, "completion": 0.32, "blended": 0.155,
"provider": "DeepInfra", "provider_slug": "deepinfra"
},
"provider_count": 11,
"spread": 8.67,
"change_7d": null,
"change_30d": null,
"sparkline": [0.155],
"removed_at": null
}
]GET/api/models/{author}/{slug}
One model: every provider offer with full prices, per-offer price history and its change log (newest first, max 200). Ids may contain ":" (e.g. ":batch").
| Param | Description |
|---|---|
| author | Model author, e.g. meta-llama |
| slug | Model slug, e.g. llama-3.3-70b-instruct |
{
"id": "meta-llama/llama-3.3-70b-instruct",
"best": { "provider": "DeepInfra", "blended": 0.155, "...": "…" },
"offers": [
{
"offer_key": "meta-llama/llama-3.3-70b-instruct@deepinfra/turbo",
"kind": "endpoint",
"provider": "DeepInfra",
"provider_slug": "deepinfra",
"tag": "deepinfra/turbo",
"quantization": "fp8",
"context_length": 131072,
"uptime_1d": 99.05,
"prices": {
"prompt": 0.1, "completion": 0.32, "blended": 0.155,
"cache_read": null, "cache_write": null, "reasoning": null,
"request": null, "image": null, "web_search": null,
"discount": null, "tiers": []
},
"price_since": "2026-10-03T11:50:50Z"
}
],
"history": [{ "offer_key": "…", "provider": "DeepInfra", "points": [{ "t": "…", "blended": 0.155 }] }],
"changes": []
}GET/api/providers
Every provider with live offer and model counts, how many models it is cheapest on, and its median premium over the cheapest provider.
[
{
"slug": "deepinfra",
"name": "DeepInfra",
"offer_count": 91,
"model_count": 87,
"cheapest_count": 44,
"median_premium": 0,
"headquarters": "US"
}
]GET/api/providers/{slug}
One provider: all its offers (with model_id and model_name) and its recent changes.
| Param | Description |
|---|---|
| slug | Provider slug, e.g. deepinfra |
{
"slug": "deepinfra",
"name": "DeepInfra",
"offer_count": 91,
"offers": [
{
"offer_key": "mistralai/mistral-nemo@deepinfra/fp8",
"model_id": "mistralai/mistral-nemo",
"model_name": "Mistral: Mistral Nemo",
"prices": { "prompt": 0.019, "completion": 0.03, "blended": 0.02175, "...": "…" }
}
],
"changes": []
}GET/api/changes
The change log, newest first. Paginate by passing next_before as before.
| Param | Description |
|---|---|
| limit | 1–200, default 50 |
| before | Cursor: return changes with id < before |
| kind | price_change | offer_added | offer_removed | model_added | model_removed |
| model | Model id |
| provider | Provider slug |
{
"items": [
{
"id": 320,
"at": "2026-10-04T06:00:00Z",
"kind": "price_change",
"model_id": "z-ai/glm-5.3-flash",
"provider": "Wafer",
"provider_slug": "wafer",
"field": "completion",
"old": 1.25,
"new": 0.9,
"pct": -0.28
}
],
"next_before": 319
}GET/api/movers
Ten biggest blended-price drops and increases on a single offer over the window.
| Param | Description |
|---|---|
| window | 7d | 30d |
{
"drops": [
{
"model_id": "z-ai/glm-5.3-flash:batch",
"provider": "Wafer",
"from": 0.3875,
"to": 0.2,
"pct": -0.484
}
],
"increases": []
}Data
- Model: identified by a stable id,
author/slug. - Offer: one provider endpoint serving a model (provider, variant tag, quantization), with its own price set.
- Blended =
(3 × input + output) / 4, paid offers with both prices only. - Best price: lowest blended among a model’s active, paid offers. Spread: highest blended ÷ lowest.
- Changes: each collection is diffed against the previous one; every changed price field is a separate
price_changewith old and new values. - Removals: recorded only when the listing was fetched successfully and the offer or model was absent. Fetch errors never count as removals.
- Automatic routers and “latest” aliases are excluded.