LLM prices per 1M tokens

264 models · 161 price changes

For AI agents

Input, output, cached and batch prices per million tokens for every language model from the tracked labs on every route that sells them, with dated price history, plus AI gateway and platform fees; new models, hosts and labs are added as they appear.

Refreshed every morning at 05:00 UTC

Point your agent here

Call the API

  • GET /api/modelslimit?, offset?models with input, output, cached and batch prices per 1M tokens (USD), context, release date and the route the price comes from
  • GET /api/models/{id}idthe model, every route (lab, clouds, hosts) with its prices, and dated changes
  • GET /api/gatewaysnoneeach way to buy with its markup on tokens, bring-your-own-key fee, free tier, entry plan and features, and carry: the tracked models it sells (ids), read from its own model catalog, with the source URL and the date it was last read
  • GET /api/changesall?, since?, include?, limit?, offset?changes with model, route, field (input, output, cached), old and new price, the day it was first seen and `url`, the model page; plus `other`: routes added, removed or back, cache write, batch, context and quantization changes, retired models and gateway terms (append-only history). Real moves only: our own corrections are left out unless include=corrections, which adds `corrections` (corrected and same-day re-reads, never a change in the world), `unverified` (moves held by the price check until reviewed) and `withdrawn` (reads reviewed as not a price change)
  • GET /api/candidatesstatus?, since?, limit?, offset?labs selling token-priced models on OpenRouter that the site does not track yet (found: model count, cheapest input price, sample models) and AI companies from the companies.fru.dev registry with no priced models yet (candidate); all Unverified
  • GET /api/searchq, limit?up to 20 ranked results with title, link and one line

GET/api/models

Every tracked model with its headline price

  • limitItems per page, 1 to 200
  • offsetItems to skip, for the next page
Shell
curl -s "https://pricing.fru.dev/api/models?limit=3"
Sample response
JSON
{
  "note": "List prices from providers' pages on the date shown; your contract may differ. USD per million tokens.",
  "models": [
    {
      "id": "glm-5-3-prime",
      "name": "GLM 5.3 Prime",
      "creator": "z-ai",
      "released": "2026-09-23",
      "context": 1000000,
      "input": 2.8,
      "output": 8.8,
      "cached_input": 0.56,
      "batch_input": null,
      "batch_output": null,
      "blended_3_to_1": 4.3,
      "price_route": "list",
      "routes": 2,
      "url": "https://pricing.fru.dev/models/glm-5-3-prime"
    },
    {
      "id": "qwen3-8-max-prime",
      "name": "Qwen3.8 Max Prime",
      "creator": "qwen",
      "released": "2026-09-23",
      "context": 1000000,
      "input": 4,
      "output": 12,
      "cached_input": 0.5,
      "batch_input": null,
      "batch_output": null,
      "blended_3_to_1": 6,
      "price_route": "list",
      "routes": 1,
      "url": "https://pricing.fru.dev/models/qwen3-8-max-prime"
    }
  ],
  "total": 253,
  "limit": 3,
  "offset": 0,
  "next": "/api/models?limit=3&offset=3"
}

GET/api/models/{id}

One model with the price on every route and its price changes

  • idModel id, as in /models/<id>
Shell
curl -s "https://pricing.fru.dev/api/models/claude-sonnet-5"
Sample response
JSON
{
  "model": {
    "id": "claude-sonnet-5",
    "orId": "anthropic/claude-sonnet-5",
    "name": "Claude Sonnet 5",
    "creator": "anthropic",
    "creatorName": "Anthropic",
    "creatorDomain": "anthropic.com",
    "releaseDate": "2026-06-30",
    "context": 1000000,
    "maxOutput": 128000,
    "inputMods": [
      "text",
      "image"
    ],
    "outputMods": [
      "text"
    ],
    "openWeights": false,
    "reasoning": true,
    "description": "Sonnet 5 is Anthropic's most capable Sonnet-class model, with frontier performance across coding, agents, and professional work."
  },
  "offers": [
    {
      "modelId": "claude-sonnet-5",
      "route": "aws-bedrock/eu-west-1",
      "providerSlug": "aws-bedrock",
      "providerName": "AWS Bedrock",
      "providerDomain": "aws.amazon.com",
      "input": 2.2,
      "output": 11,
      "cacheRead": 0.22,
      "cacheWrite": 2.75,
      "batchInput": null,
      "batchOutput": null,
      "context": 1000000,
      "quantization": "",
      "source": "openrouter"
    },
    {
      "modelId": "claude-sonnet-5",
      "route": "aws-bedrock/global",
      "providerSlug": "aws-bedrock",
      "providerName": "AWS Bedrock",
      "providerDomain": "aws.amazon.com",
      "input": 2,
      "output": 10,
      "cacheRead": 0.2,
      "cacheWrite": 2.5,
      "batchInput": null,
      "batchOutput": null,
      "context": 1000000,
      "quantization": "",
      "source": "openrouter"
    }
  ],
  "changes": []
}

GET/api/gateways

Gateways, cloud and data platforms and developer hubs that sell model access

Shell
curl -s "https://pricing.fru.dev/api/gateways"
Sample response
JSON
{
  "gateways": [
    {
      "slug": "helicone",
      "group": "independent",
      "pricingModel": "0% markup on credits; plans by requests and seats (Pro $79 a month)",
      "conversionNote": "",
      "routeSlug": "",
      "name": "Helicone",
      "company": "helicone",
      "domain": "helicone.ai",
      "oneLine": "Open source LLM observability platform with an OpenAI-compatible AI gateway that logs, caches and fails over requests across providers.",
      "markupPct": 0,
      "markupNote": "Gateway docs state 0% markup on credits.",
      "byok": true,
      "byokFeePct": 0,
      "byokFreeUsd": null
    },
    {
      "slug": "kong-ai-gateway",
      "group": "independent",
      "pricingModel": "$100 a month per model proxied (Konnect Plus); no token fee",
      "conversionNote": "",
      "routeSlug": "",
      "name": "Kong AI Gateway",
      "company": "kong",
      "domain": "konghq.com",
      "oneLine": "Set of AI plugins on the Kong API gateway that add multi-provider routing, load balancing, semantic caching, guardrails and token rate li...",
      "markupPct": 0,
      "markupNote": "Priced per model proxied, not per token; no token markup mentioned.",
      "byok": false,
      "byokFeePct": null,
      "byokFreeUsd": null
    }
  ]
}

GET/api/changes

Dated list-price changes, newest first

  • allSet to 1 for every route, not only lab list prices
  • sinceOnly changes on or after this date (YYYY-MM-DD) or datetime
  • includeSet to corrections to also get our corrections, held reads and withdrawn reads (audit only; none of them is a price move)
  • limitItems per page, 1 to 200
  • offsetItems to skip, for the next page
Shell
curl -s "https://pricing.fru.dev/api/changes?limit=3"
Sample response
JSON
{
  "changes": [
    {
      "id": 3,
      "modelId": "gemini-3-7-flash",
      "modelName": "Gemini 3.7 Flash",
      "creator": "google",
      "creatorDomain": "ai.google.dev",
      "route": "list",
      "field": "cache_read",
      "old": 0.0375,
      "new": 0.075,
      "seenOn": "2026-08-29",
      "prevSeen": "2026-08-28",
      "source": "wayback",
      "sourceUrl": "https://web.archive.org/web/20260829163340/https://openrouter.ai/api/v1/models"
    },
    {
      "id": 2,
      "modelId": "gemini-3-7-flash",
      "modelName": "Gemini 3.7 Flash",
      "creator": "google",
      "creatorDomain": "ai.google.dev",
      "route": "list",
      "field": "output",
      "old": 1.875,
      "new": 3.75,
      "seenOn": "2026-08-29",
      "prevSeen": "2026-08-28",
      "source": "wayback",
      "sourceUrl": "https://web.archive.org/web/20260829163340/https://openrouter.ai/api/v1/models"
    }
  ],
  "total": 145,
  "limit": 3,
  "offset": 0,
  "next": "/api/changes?limit=3&offset=3"
}

GET/api/candidates

Labs found and not tracked yet (the growth queue)

  • statusfound, candidate, tracked or merged
  • sinceOnly candidates first seen on or after this date (YYYY-MM-DD)
  • limitItems per page, 1 to 200
  • offsetItems to skip, for the next page
Shell
curl -s "https://pricing.fru.dev/api/candidates?status=found&limit=5"

Add to your agent

System prompt
For LLM API prices per million tokens and AI gateway fees, fetch https://pricing.fru.dev/llms.txt and use https://pricing.fru.dev/api/models (spec: https://pricing.fru.dev/openapi.json). Cite "Pricing (pricing.fru.dev)" with a link.

Usage terms

  • Free to read, no key needed
  • Cite "Pricing (pricing.fru.dev)" with a link
  • Responses are cached; refreshed every morning at 05:00 UTC
  • Keep to 60 requests a minute or fewer
  • Gateway facts marked unverified were re-read by an agent from the vendor's page and not yet checked by hand. List prices; your contract may differ.