Skip to content

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, image and web_search are USD per unit. null = not offered.
Changes
pct and change_* are fractions (-0.12 = −12%).
Caching
Cache-Control: max-age=60, ETag supported. Errors return {"error": "…"} with a 4xx/5xx status.
Example
curl https://llmprice.org/api/models/meta-llama/llama-3.3-70b-instruct

GET/api/stats

Headline counts across all live models, providers and offers.

Response (trimmed)
{
  "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).

Response (trimmed)
[
  {
    "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").

Parameters for /api/models/{author}/{slug}
ParamDescription
authorModel author, e.g. meta-llama
slugModel slug, e.g. llama-3.3-70b-instruct
Response (trimmed)
{
  "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.

Response (trimmed)
[
  {
    "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.

Parameters for /api/providers/{slug}
ParamDescription
slugProvider slug, e.g. deepinfra
Response (trimmed)
{
  "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.

Parameters for /api/changes
ParamDescription
limit1–200, default 50
beforeCursor: return changes with id < before
kindprice_change | offer_added | offer_removed | model_added | model_removed
modelModel id
providerProvider slug
Response (trimmed)
{
  "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.

Parameters for /api/movers
ParamDescription
window7d | 30d
Response (trimmed)
{
  "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_change with 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.