ModelPriceWatch.com
Last scan 2026-08-09 Models tracked 198 Providers 30 Cheapest paid Granite 4.0 Micro $0.017/Mtok in Every price links to its source
Pricing / API

Free LLM Pricing API

Structured JSON endpoints · Free tier: 100 req/day (no key) · CORS enabled · Rate limit headers included

198
Models
31
Providers
12
Endpoints
$0
Cost

Base URL

https://modelpricewatch.com/api/v1

All endpoints return JSON. Append the endpoint path to the base URL.

Free tier: No API key required — 100 requests/day per IP. No signup.
Paid tiers: Include your API key in the X-API-Key header for higher limits. See plans →

Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-Tier headers. When you exceed the limit, you get a 429 with a JSON body describing when to retry.

The free tier and dataset are kept free and open. If they save you time, you can support upkeep on Ko-fi ☕ — entirely optional, no key or account gets gated behind it.

Embeddable live badges

Drop a live, auto-updating price badge into any README, blog, or dashboard — SVG, cached 6h, no key:

Cheapest LLM input price LLM APIs tracked GPT-5.4 mini price
<!-- Markdown -->
![Cheapest LLM](https://modelpricewatch.com/badge/cheapest.svg)
![Models tracked](https://modelpricewatch.com/badge/models.svg)
![Model price](https://modelpricewatch.com/badge/model/<model-id>.svg)

Every model page has a one-click "Embed this price" box with its own badge.

MCP server for AI agents

Let Claude, GPT, Cursor, and other agents query live model pricing directly, in-conversation, via the Model Context Protocol. Streamable-HTTP transport, no key required:

https://modelpricewatch.com/mcp

Add it to Claude Desktop / claude.ai (Settings → Connectors → Add custom connector) or any MCP client. It exposes five tools:

  • search_models — find models by name, provider, or category
  • get_model_pricing — full price + spec detail for one model
  • compare_models — side-by-side with a cheapest-for verdict
  • cheapest_models — rank by input, output, or blended cost
  • list_providers — all tracked providers

Speaks JSON-RPC 2.0. A quick smoke test:

curl -s https://modelpricewatch.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

GET /mcp returns a discovery document (capabilities + tool list, including the live limits below). Backed by the same dataset as the REST endpoints below, so numbers never drift.

Fair-use allowances

Expressed per minute, not per day — agent traffic is bursty, and a daily quota would either cut a live conversation short or fail to stop a client stuck in a retry loop. Tool calls: Free 20/min · Pro 240/min · Startup 2,400/min · Enterprise unmetered. This is a separate budget from the REST tiers below — the 20/min free MCP allowance is not drawn from the 100 requests/day REST free tier.

These are allowances to design against, not hard caps. We would rather tell you that than publish a precise number we do not actually hold you to. Tool-call metering inside the Worker is deliberately loose and will usually let a burst through; sustained excess may be blocked at the network edge without warning. If you go over, the reply is a normal MCP tool result flagged isError rather than a transport error, carrying Retry-After and an explanation of how to raise the ceiling — so your agent can tell you what happened instead of surfacing an opaque failure. Responses carry X-RateLimit-Limit and X-RateLimit-Scope but deliberately no X-RateLimit-Remaining: there is no exact running counter behind this, and we would rather omit the header than print a number you would size a client against.

Please don't poll GET /mcp on a short timer — sustained polling may be throttled at the edge. The discovery document only changes when we deploy, so fetch it once per session and cache it — it now ships an ETag and Cache-Control: max-age=300, and a conditional request with If-None-Match gets a 304. Please do not poll it on a short timer; a liveness check every few minutes is plenty. Higher ceilings for tool calls: API plans.

Endpoints

GET /models.json

All 198 models with pricing, context window, modality, and metadata.

Response schema
{
  "count": 156,
  "updated": "2026-06-25",
  "data": [
    {
      "id": "openai-gpt-5-5",
      "provider": "OpenAI",
      "model": "GPT-5.5",
      "category": "flagship",
      "input_per_mtok": 5.0,
      "output_per_mtok": 15.0,
      "cached_input_per_mtok": 1.25,
      "promo": false,
      "promo_until": null,
      "context_window": 270000,
      "modality": ["text", "image", "audio"],
      "released": "2025-11-15",
      "status": "Current",
      "open_source": false,
      "parameters": null,
      "blended_cost_per_mtok": 10.0,
      "pricing_url": "https://openai.com/api/pricing/",
      "last_updated": "2026-06-25",
      "detail_url": "https://modelpricewatch.com/models/openai-gpt-5-5/"
    },
    ...
  ]
}
GET /providers.json

All 31 providers with metadata, URLs, and founding info.

GET /stats.json

Aggregate statistics: total models, providers, cheapest prices, largest context window, category breakdown.

GET /price-index.json

The LLM Price Index — headline $4.32/Mtok as of 2026-08-09, with constituents, sub-indices, the chain-linked trend series, and a ready-made citation block (the same dated citation line as /price-index/).

GET /price-index-levels.json

The index's as-published level archive — one row per deploy day with the headline exactly as published, on that day's basket basis, never restated. Use it to verify a dated citation after a rebalance re-levels the live series (policy).

GET /price-history.json

Historical price snapshots for all tracked models. Each entry contains an array of daily snapshots with input/output prices and change events (price drops, increases, new models).

GET /changelog.json

Recent pricing changes detected by the scraper pipeline. Includes provider pricing page updates and Google News signals.

GET /best-for/{slug}.json

Use-case-specific model rankings with top-10 models per category.

Available slugs: coding, chatbot, cheap-api, long-context, multimodal, reasoning, open-source, fast-inference, embedding, enterprise

GET /compare/{slug}.json

Model comparison data with side-by-side pricing, specs, and cost-at-scale projections. 97 comparison endpoints available.

Slug format: {model-a-id}-vs-{model-b-id} using model IDs from /models.json. Example: openai-gpt-5-5-vs-anthropic-claude-opus-4-8

Available comparison slugs (97)
ai21-labs-jamba-mini-vs-ai21-labs-jamba-large
alibaba-qwen-flash-vs-alibaba-qwen-plus
alibaba-qwen-flash-vs-alibaba-qwen3-32b
alibaba-qwen-flash-vs-alibaba-qwen3-6-flash
alibaba-qwen-plus-vs-alibaba-qwq-plus
alibaba-qwen-plus-vs-mistral-mistral-large-3
alibaba-qwen-plus-vs-perplexity-sonar
alibaba-qwen-plus-vs-z-ai-glm-4-5
alibaba-qwen-turbo-vs-alibaba-qwen-flash
alibaba-qwen-turbo-vs-mistral-ministral-3-3b
alibaba-qwen-turbo-vs-reka-reka-edge
alibaba-qwen3-7-flash-vs-alibaba-qwen-turbo
alibaba-qwen3-7-flash-vs-amazon-nova-micro
alibaba-qwen3-7-flash-vs-baichuan-baichuan-m2-32b
alibaba-qwen3-7-flash-vs-mistral-ministral-3-3b
alibaba-qwen3-7-max-vs-anthropic-claude-sonnet-5
alibaba-qwen3-7-max-vs-deepseek-deepseek-v4-pro
alibaba-qwen3-7-max-vs-google-gemini-3-1-pro
alibaba-qwen3-7-plus-vs-mistral-mistral-large-3
alibaba-qwen3-7-plus-vs-perplexity-sonar
alibaba-qwen3-8-max-vs-google-gemini-3-6-flash
alibaba-qwen3-8-max-vs-reka-reka-core
alibaba-qwen3-max-vs-google-gemini-3-5-flash
alibaba-qwen3-max-vs-google-gemini-3-6-flash
alibaba-qwen3-max-vs-reka-reka-core
alibaba-qwen3-max-vs-xai-grok-4-5
alibaba-qwq-plus-vs-perplexity-sonar-deep-research
alibaba-qwq-plus-vs-perplexity-sonar-reasoning-pro
amazon-nova-lite-vs-amazon-nova-pro
amazon-nova-micro-vs-alibaba-qwen-turbo
amazon-nova-micro-vs-amazon-nova-lite
amazon-nova-micro-vs-baichuan-baichuan-m2-32b
amazon-nova-micro-vs-mistral-ministral-3-3b
amazon-nova-micro-vs-reka-reka-edge
anthropic-claude-fable-5-vs-anthropic-claude-opus-4-8
anthropic-claude-fable-5-vs-anthropic-claude-sonnet-5
anthropic-claude-fable-5-vs-deepseek-deepseek-v4-pro
anthropic-claude-fable-5-vs-google-gemini-3-1-pro
anthropic-claude-fable-5-vs-openai-gpt-5-5
anthropic-claude-fable-5-vs-openai-gpt-5-6-sol
anthropic-claude-fable-5-vs-xai-grok-4-5
anthropic-claude-haiku-4-5-vs-anthropic-claude-sonnet-5
anthropic-claude-mythos-5-vs-anthropic-claude-fable-5
anthropic-claude-mythos-5-vs-anthropic-claude-opus-4-8
anthropic-claude-mythos-5-vs-anthropic-claude-sonnet-5
anthropic-claude-mythos-5-vs-google-gemini-3-1-pro
anthropic-claude-mythos-5-vs-openai-gpt-5-5
anthropic-claude-mythos-5-vs-openai-gpt-5-6-sol
anthropic-claude-mythos-5-vs-xai-grok-4-5
anthropic-claude-opus-4-8-vs-anthropic-claude-sonnet-4-6
anthropic-claude-opus-4-8-vs-google-gemini-3-1-pro
anthropic-claude-opus-5-vs-anthropic-claude-fable-5
anthropic-claude-opus-5-vs-anthropic-claude-opus-4-8
anthropic-claude-opus-5-vs-anthropic-claude-sonnet-5
anthropic-claude-opus-5-vs-deepseek-deepseek-v4-pro
anthropic-claude-opus-5-vs-google-gemini-3-1-pro
anthropic-claude-opus-5-vs-openai-gpt-5-5
anthropic-claude-opus-5-vs-openai-gpt-5-6-sol
anthropic-claude-opus-5-vs-xai-grok-4-5
anthropic-claude-sonnet-4-5-vs-anthropic-claude-sonnet-4-6
anthropic-claude-sonnet-4-6-vs-anthropic-claude-haiku-4-5
anthropic-claude-sonnet-4-6-vs-google-gemini-2-5-pro
anthropic-claude-sonnet-4-6-vs-google-gemini-3-1-pro
anthropic-claude-sonnet-5-vs-anthropic-claude-opus-4-8
anthropic-claude-sonnet-5-vs-anthropic-claude-sonnet-4-5
anthropic-claude-sonnet-5-vs-anthropic-claude-sonnet-4-6
anthropic-claude-sonnet-5-vs-deepseek-deepseek-v4-pro
anthropic-claude-sonnet-5-vs-google-gemini-3-1-pro
anthropic-claude-sonnet-5-vs-google-gemini-3-5-flash
anthropic-claude-sonnet-5-vs-openai-gpt-5-4
anthropic-claude-sonnet-5-vs-openai-gpt-5-5
anthropic-claude-sonnet-5-vs-xai-grok-4-3
baichuan-baichuan-m2-32b-vs-alibaba-qwen-turbo
baichuan-baichuan-m2-32b-vs-mistral-ministral-3-3b
baichuan-baichuan-m2-32b-vs-reka-reka-edge
cohere-command-r-08-2024-vs-cohere-command-a
cohere-rerank-3-5-vs-cohere-embed-4
cohere-rerank-3-5-vs-ibm-granite-embedding-278m-multilingual
cohere-rerank-3-5-vs-openai-text-embedding-3-small
cohere-rerank-3-5-vs-voyage-ai-rerank-2-5
cohere-rerank-3-5-vs-voyage-ai-rerank-2-5-lite
cohere-rerank-3-5-vs-voyage-ai-voyage-4
cohere-rerank-3-5-vs-voyage-ai-voyage-4-lite
deepinfra-deepseek-v4-flash-vs-deepinfra-qwen3-32b
deepinfra-llama-4-maverick-vs-meta-llama-3-3-70b
deepinfra-llama-4-maverick-vs-together-llama-3-3-70b
deepinfra-llama-4-scout-vs-deepinfra-llama-4-maverick
deepinfra-llama-4-scout-vs-meta-llama-3-3-70b
deepinfra-llama-4-scout-vs-meta-llama-4-scout
deepinfra-llama-4-scout-vs-together-llama-3-3-70b
deepinfra-qwen3-32b-vs-deepinfra-llama-4-scout
deepseek-deepseek-v4-flash-vs-deepseek-deepseek-v4-pro
deepseek-deepseek-v4-flash-vs-google-gemini-2-5-flash
deepseek-deepseek-v4-pro-vs-alibaba-qwen-plus
deepseek-deepseek-v4-pro-vs-alibaba-qwen3-7-plus
deepseek-deepseek-v4-pro-vs-anthropic-claude-sonnet-4-6
deepseek-deepseek-v4-pro-vs-google-gemini-3-1-flash-lite
deepseek-deepseek-v4-pro-vs-meta-llama-3-3-70b
deepseek-deepseek-v4-pro-vs-mistral-mistral-large-3
deepseek-deepseek-v4-pro-vs-openai-gpt-5-4
deepseek-deepseek-v4-pro-vs-perplexity-sonar
deepseek-deepseek-v4-pro-vs-z-ai-glm-4-5
fireworks-deepseek-v4-flash-vs-fireworks-gpt-oss-120b
fireworks-gpt-oss-120b-vs-fireworks-minimax-2-5
fireworks-gpt-oss-20b-vs-fireworks-deepseek-v4-flash
fireworks-kimi-k2-7-code-vs-moonshot-kimi-k2-7-code
fireworks-kimi-k2-7-code-vs-moonshot-kimi-k2-7-code-highspeed
fireworks-kimi-k2-7-code-vs-together-kimi-k2-7-code
google-gemini-2-5-flash-vs-anthropic-claude-haiku-4-5
google-gemini-3-1-flash-image-vs-google-gemini-3-1-flash-lite-image
google-gemini-3-1-pro-vs-google-gemini-2-5-flash
google-gemini-3-1-pro-vs-xai-grok-4
google-gemini-3-5-flash-lite-vs-anthropic-claude-haiku-4-5
google-gemini-3-5-flash-lite-vs-google-gemini-2-5-flash
google-gemini-3-5-flash-lite-vs-google-gemini-3-flash-preview
google-gemini-3-6-flash-vs-anthropic-claude-sonnet-4-6
google-gemini-3-6-flash-vs-google-gemini-3-5-flash
google-gemini-3-6-flash-vs-reka-reka-core
google-gemini-3-6-flash-vs-xai-grok-4-5
google-gemini-3-flash-preview-vs-alibaba-qwen3-8-max
google-gemini-3-flash-preview-vs-alibaba-qwen3-max
google-gemini-3-flash-preview-vs-google-gemini-3-6-flash
google-gemini-3-flash-preview-vs-meta-muse-spark-1-1
google-gemini-3-flash-preview-vs-meta-muse-spark-1-2
google-gemini-3-flash-preview-vs-reka-reka-core
google-gemini-3-flash-preview-vs-xai-grok-4-3
google-gemini-3-flash-preview-vs-xai-grok-4-5
google-gemini-3-flash-preview-vs-z-ai-glm-5-2
google-gemini-3-pro-image-vs-google-gemini-3-1-flash-image
groq-gpt-oss-120b-vs-groq-qwen3-32b
groq-gpt-oss-20b-vs-groq-gpt-oss-120b
groq-qwen3-32b-vs-groq-qwen-3-6-27b
ibm-granite-4-0-micro-vs-alibaba-qwen-turbo
ibm-granite-4-0-micro-vs-alibaba-qwen3-7-flash
ibm-granite-4-0-micro-vs-amazon-nova-micro
ibm-granite-4-0-micro-vs-baichuan-baichuan-m2-32b
ibm-granite-4-0-micro-vs-mistral-ministral-3-3b
ibm-granite-4-0-micro-vs-reka-reka-edge
ibm-granite-4-h-large-vs-alibaba-qwen-plus
ibm-granite-4-h-large-vs-alibaba-qwen3-7-plus
ibm-granite-4-h-large-vs-deepseek-deepseek-v4-pro
ibm-granite-4-h-large-vs-mistral-mistral-large-3
ibm-granite-4-h-large-vs-perplexity-sonar
ibm-granite-4-h-large-vs-z-ai-glm-4-5
ibm-granite-4-h-medium-vs-alibaba-qwen-plus
ibm-granite-4-h-medium-vs-alibaba-qwen3-7-plus
ibm-granite-4-h-medium-vs-deepseek-deepseek-v4-pro
ibm-granite-4-h-medium-vs-mistral-mistral-large-3
ibm-granite-4-h-medium-vs-openai-gpt-5-6-luna
ibm-granite-4-h-medium-vs-perplexity-sonar
ibm-granite-4-h-medium-vs-upstage-solar-pro-3
ibm-granite-4-h-medium-vs-z-ai-glm-4-5
ibm-granite-4-h-small-vs-ibm-granite-4-h-medium
ibm-granite-embedding-278m-multilingual-vs-cohere-embed-4
meituan-longcat-2-0-vs-fireworks-kimi-k2-7-code
meituan-longcat-2-0-vs-moonshot-kimi-k2-7-code
meituan-longcat-2-0-vs-relace-relace-search
meituan-longcat-2-0-vs-together-kimi-k2-7-code
meta-llama-3-1-8b-vs-deepinfra-llama-4-maverick
meta-llama-3-1-8b-vs-deepinfra-llama-4-scout
meta-llama-3-1-8b-vs-meta-llama-4-scout
meta-llama-3-1-8b-vs-together-llama-3-3-70b
meta-llama-3-3-70b-vs-anthropic-claude-sonnet-4-6
meta-llama-3-3-70b-vs-meta-muse-spark-1-1
meta-llama-3-3-70b-vs-openai-gpt-5-4
meta-llama-3-3-70b-vs-together-llama-3-3-70b
meta-llama-4-scout-vs-deepinfra-llama-4-maverick
meta-llama-4-scout-vs-meta-llama-3-3-70b
meta-llama-4-scout-vs-together-llama-3-3-70b
meta-muse-spark-1-1-vs-alibaba-qwen3-8-max
meta-muse-spark-1-1-vs-alibaba-qwen3-max
meta-muse-spark-1-1-vs-anthropic-claude-sonnet-4-6
meta-muse-spark-1-1-vs-google-gemini-3-1-pro
meta-muse-spark-1-1-vs-google-gemini-3-6-flash
meta-muse-spark-1-1-vs-openai-gpt-5-6-terra
meta-muse-spark-1-1-vs-reka-reka-core
meta-muse-spark-1-1-vs-xai-grok-4-5
meta-muse-spark-1-1-vs-z-ai-glm-5-2
meta-muse-spark-1-2-vs-alibaba-qwen3-8-max
meta-muse-spark-1-2-vs-alibaba-qwen3-max
meta-muse-spark-1-2-vs-google-gemini-3-6-flash
meta-muse-spark-1-2-vs-z-ai-glm-5-2
minimax-minimax-m2-7-vs-minimax-minimax-m3
minimax-minimax-m3-vs-deepseek-deepseek-v4-flash
minimax-minimax-m3-vs-deepseek-deepseek-v4-pro
minimax-minimax-m3-vs-google-gemini-2-5-flash
minimax-minimax-m3-vs-google-gemini-3-1-flash-lite
minimax-minimax-m3-vs-z-ai-glm-5-2
mistral-codestral-2508-vs-fireworks-kimi-k2-7-code
mistral-codestral-2508-vs-meituan-longcat-2-0
mistral-codestral-2508-vs-moonshot-kimi-k2-7-code
mistral-codestral-2508-vs-moonshot-kimi-k2-7-code-highspeed
mistral-codestral-2508-vs-relace-relace-apply-3
mistral-codestral-2508-vs-relace-relace-search
mistral-codestral-2508-vs-together-kimi-k2-7-code
mistral-codestral-2508-vs-xai-grok-build-0-1
mistral-codestral-vs-fireworks-kimi-k2-7-code
mistral-codestral-vs-meituan-longcat-2-0
mistral-codestral-vs-moonshot-kimi-k2-7-code
mistral-codestral-vs-moonshot-kimi-k2-7-code-highspeed
mistral-codestral-vs-relace-relace-apply-3
mistral-codestral-vs-relace-relace-search
mistral-codestral-vs-together-kimi-k2-7-code
mistral-codestral-vs-xai-grok-build-0-1
mistral-ministral-3-3b-vs-mistral-voxtral-small-24b
mistral-ministral-3-3b-vs-reka-reka-edge
mistral-mistral-large-3-vs-anthropic-claude-sonnet-4-6
mistral-mistral-large-3-vs-perplexity-sonar
mistral-mistral-large-3-vs-z-ai-glm-4-5
mistral-mistral-medium-3-5-vs-openai-gpt-5-4
mistral-mistral-small-4-vs-mistral-codestral
mistral-voxtral-small-24b-vs-mistral-mistral-small-4
moonshot-kimi-k2-5-vs-moonshot-kimi-k2-6
moonshot-kimi-k2-6-vs-moonshot-kimi-k2-7-code
moonshot-kimi-k2-7-code-highspeed-vs-meituan-longcat-2-0
moonshot-kimi-k2-7-code-highspeed-vs-openai-gpt-5-3-codex
moonshot-kimi-k2-7-code-vs-moonshot-kimi-k2-7-code-highspeed
moonshot-kimi-k2-7-code-vs-together-kimi-k2-7-code
moonshot-kimi-k3-vs-anthropic-claude-sonnet-5
moonshot-kimi-k3-vs-deepseek-deepseek-v4-pro
moonshot-kimi-k3-vs-google-gemini-3-1-pro
moonshot-kimi-k3-vs-moonshot-kimi-k2-7-code
moonshot-kimi-k3-vs-openai-gpt-5-6-sol
moonshot-kimi-k3-vs-z-ai-glm-5-2
openai-gpt-4-1-mini-vs-anthropic-claude-haiku-4-5
openai-gpt-4-1-mini-vs-google-gemini-2-5-flash
openai-gpt-5-4-vs-anthropic-claude-opus-4-8
openai-gpt-5-4-vs-anthropic-claude-sonnet-4-6
openai-gpt-5-4-vs-google-gemini-3-1-pro
openai-gpt-5-4-vs-openai-gpt-4-1-mini
openai-gpt-5-5-vs-anthropic-claude-opus-4-8
openai-gpt-5-5-vs-google-gemini-3-1-pro
openai-gpt-5-5-vs-google-gemini-3-6-flash
openai-gpt-5-5-vs-openai-gpt-5-4
openai-gpt-5-6-luna-vs-alibaba-qwen-plus
openai-gpt-5-6-luna-vs-alibaba-qwen3-7-plus
openai-gpt-5-6-luna-vs-anthropic-claude-haiku-4-5
openai-gpt-5-6-luna-vs-deepseek-deepseek-v4-pro
openai-gpt-5-6-luna-vs-google-gemini-2-5-flash
openai-gpt-5-6-luna-vs-ibm-granite-4-h-large
openai-gpt-5-6-luna-vs-mistral-mistral-large-3
openai-gpt-5-6-luna-vs-openai-gpt-5-4-nano
openai-gpt-5-6-luna-vs-perplexity-sonar
openai-gpt-5-6-luna-vs-z-ai-glm-4-5
openai-gpt-5-6-sol-vs-anthropic-claude-opus-4-8
openai-gpt-5-6-sol-vs-google-gemini-3-1-pro
openai-gpt-5-6-sol-vs-openai-gpt-5-5
openai-gpt-5-6-sol-vs-openai-gpt-5-6-terra
openai-gpt-5-6-sol-vs-xai-grok-4-5
openai-gpt-5-6-terra-vs-anthropic-claude-sonnet-5
openai-gpt-5-6-terra-vs-google-gemini-3-1-pro
openai-gpt-5-6-terra-vs-openai-gpt-5-6-luna
openai-o4-mini-vs-anthropic-claude-sonnet-4-6
openai-o4-mini-vs-google-gemini-2-5-pro
openai-o4-mini-vs-xai-grok-4
openai-text-embedding-3-small-vs-cohere-embed-4
openai-text-embedding-3-small-vs-ibm-granite-embedding-278m-multilingual
openai-text-embedding-3-small-vs-openai-text-embedding-3-large
openai-text-embedding-3-small-vs-voyage-ai-rerank-2-5
openai-text-embedding-3-small-vs-voyage-ai-rerank-2-5-lite
openai-text-embedding-3-small-vs-voyage-ai-voyage-4
openai-text-embedding-3-small-vs-voyage-ai-voyage-4-lite
perplexity-sonar-deep-research-vs-perplexity-sonar-reasoning-pro
perplexity-sonar-reasoning-pro-vs-perplexity-sonar-pro
perplexity-sonar-vs-perplexity-sonar-deep-research
perplexity-sonar-vs-z-ai-glm-4-5
reka-reka-core-vs-google-gemini-3-5-flash
reka-reka-core-vs-xai-grok-4-5
reka-reka-edge-vs-reka-reka-flash
reka-reka-flash-vs-reka-reka-core
relace-relace-apply-3-vs-fireworks-kimi-k2-7-code
relace-relace-apply-3-vs-meituan-longcat-2-0
relace-relace-apply-3-vs-moonshot-kimi-k2-7-code
relace-relace-apply-3-vs-relace-relace-search
relace-relace-apply-3-vs-xai-grok-build-0-1
relace-relace-search-vs-fireworks-kimi-k2-7-code
relace-relace-search-vs-moonshot-kimi-k2-7-code
sakana-ai-fugu-ultra-vs-anthropic-claude-fable-5
sakana-ai-fugu-ultra-vs-anthropic-claude-opus-5
sakana-ai-fugu-ultra-vs-google-gemini-3-1-pro
sakana-ai-fugu-ultra-vs-openai-gpt-5-5
thinking-machines-inkling-small-vs-anthropic-claude-haiku-4-5
thinking-machines-inkling-small-vs-google-gemini-3-5-flash-lite
thinking-machines-inkling-small-vs-thinking-machines-inkling
thinking-machines-inkling-vs-fireworks-nvidia-nemotron-3-ultra
thinking-machines-inkling-vs-meta-muse-spark-1-1
together-gemma-4-31b-it-pearl-vs-together-minimax-m3
together-gpt-oss-120b-vs-together-gemma-4-31b-it-pearl
together-kimi-k2-7-code-vs-moonshot-kimi-k2-7-code-highspeed
together-minimax-m3-vs-together-qwen3-7-plus
upstage-solar-pro-3-vs-alibaba-qwen-plus
upstage-solar-pro-3-vs-alibaba-qwen3-7-plus
upstage-solar-pro-3-vs-deepseek-deepseek-v4-pro
upstage-solar-pro-3-vs-ibm-granite-4-h-large
upstage-solar-pro-3-vs-mistral-mistral-large-3
upstage-solar-pro-3-vs-openai-gpt-5-6-luna
voyage-ai-rerank-2-5-lite-vs-cohere-embed-4
voyage-ai-rerank-2-5-lite-vs-ibm-granite-embedding-278m-multilingual
voyage-ai-rerank-2-5-lite-vs-voyage-ai-voyage-4-lite
voyage-ai-rerank-2-5-vs-cohere-embed-4
voyage-ai-rerank-2-5-vs-ibm-granite-embedding-278m-multilingual
voyage-ai-rerank-2-5-vs-voyage-ai-voyage-4
voyage-ai-voyage-4-lite-vs-cohere-embed-4
voyage-ai-voyage-4-lite-vs-ibm-granite-embedding-278m-multilingual
voyage-ai-voyage-4-lite-vs-voyage-ai-rerank-2-5
voyage-ai-voyage-4-vs-cohere-embed-4
voyage-ai-voyage-4-vs-ibm-granite-embedding-278m-multilingual
xai-grok-4-1-fast-vs-google-gemini-2-5-flash
xai-grok-4-20-vs-xai-grok-4-3
xai-grok-4-3-vs-alibaba-qwen3-8-max
xai-grok-4-3-vs-alibaba-qwen3-max
xai-grok-4-3-vs-google-gemini-3-5-flash
xai-grok-4-3-vs-google-gemini-3-6-flash
xai-grok-4-3-vs-meta-muse-spark-1-1
xai-grok-4-3-vs-meta-muse-spark-1-2
xai-grok-4-3-vs-reka-reka-core
xai-grok-4-3-vs-xai-grok-4-5
xai-grok-4-3-vs-z-ai-glm-5-2
xai-grok-4-5-vs-anthropic-claude-sonnet-5
xai-grok-4-5-vs-google-gemini-3-1-pro
xai-grok-4-5-vs-google-gemini-3-5-flash
xai-grok-4-5-vs-openai-gpt-5-4
xai-grok-4-5-vs-xai-grok-4
xai-grok-4-vs-anthropic-claude-opus-4-8
xai-grok-4-vs-openai-gpt-5-5
xai-grok-4-vs-xai-grok-4-3
xai-grok-build-0-1-vs-fireworks-kimi-k2-7-code
xai-grok-build-0-1-vs-meituan-longcat-2-0
xai-grok-build-0-1-vs-moonshot-kimi-k2-7-code
xai-grok-build-0-1-vs-moonshot-kimi-k2-7-code-highspeed
xai-grok-build-0-1-vs-relace-relace-search
xai-grok-build-0-1-vs-together-kimi-k2-7-code
xai-grok-build-0-1-vs-xai-grok-4-20
z-ai-glm-4-32b-0414-vs-z-ai-glm-4-7-flashx
z-ai-glm-4-7-flash-vs-alibaba-qwen-turbo
z-ai-glm-4-7-flash-vs-alibaba-qwen3-7-flash
z-ai-glm-4-7-flash-vs-amazon-nova-micro
z-ai-glm-4-7-flash-vs-baichuan-baichuan-m2-32b
z-ai-glm-4-7-flash-vs-ibm-granite-4-0-micro
z-ai-glm-4-7-flash-vs-mistral-ministral-3-3b
z-ai-glm-4-7-flash-vs-reka-reka-edge
z-ai-glm-4-7-flash-vs-z-ai-glm-ocr
z-ai-glm-5-2-vs-alibaba-qwen3-7-max
z-ai-glm-5-2-vs-alibaba-qwen3-8-max
z-ai-glm-5-2-vs-alibaba-qwen3-max
z-ai-glm-5-2-vs-anthropic-claude-sonnet-5
z-ai-glm-5-2-vs-deepseek-deepseek-v4-pro
z-ai-glm-5-2-vs-google-gemini-3-1-pro
z-ai-glm-5-2-vs-google-gemini-3-5-flash
z-ai-glm-5-2-vs-google-gemini-3-6-flash
z-ai-glm-5-2-vs-openai-gpt-5-4
z-ai-glm-5-2-vs-reka-reka-core
z-ai-glm-5-2-vs-xai-grok-4-5
z-ai-glm-ocr-vs-alibaba-qwen-turbo
z-ai-glm-ocr-vs-alibaba-qwen3-7-flash
z-ai-glm-ocr-vs-amazon-nova-micro
z-ai-glm-ocr-vs-baichuan-baichuan-m2-32b
z-ai-glm-ocr-vs-ibm-granite-4-0-micro
z-ai-glm-ocr-vs-mistral-ministral-3-3b
z-ai-glm-ocr-vs-reka-reka-edge
z-ai-glm-ocr-vs-z-ai-glm-4-32b-0414
GET /benchmarks.json

Benchmark performance scores for 111 models across 16 benchmarks (GPQA Diamond, SWE-Bench Verified, Terminal-Bench 2.1, LiveCodeBench, MCP Atlas, BrowseComp, OSWorld-Verified, Humanity's Last Exam, ARC-AGI 2, AIME 2025, MMMLU, BFCL, HumanEval, MATH 500, AutoBench, AIME 2026), plus independent composite indices (Artificial Analysis Intelligence & Agentic, AA-Omniscience, GDPval-AA, LMArena ELO) and operational metrics (throughput, TTFT latency). Includes computed average benchmark score and performance-per-dollar metric. Auto-updated daily from the Vellum LLM Leaderboard, Artificial Analysis, LMArena and the HuggingFace Open LLM Leaderboard.

Response schema
{
  "anthropic-claude-opus-5": {
    "model_name": "Claude Opus 5",
    "provider": "Anthropic",
    "category": "flagship",
    "avg_benchmark": 84.2,
    "avg_benchmark_norm": 97.2,
    "n_bench": 7,
    "blended_cost": 10,
    "perf_per_dollar": 8.4,
    "swe_bench": 97,
    "browsecomp": 90.8,
    "hles": 64.7,
    "autobench": 26,
    "aa_intelligence_index": 63.1,
    "aa_agentic_index": 59.2,
    "aa_omniscience_index": 37.1,
    "gdpval_aa_elo": 1846.2,
    "sources": [
      "Vellum LLM Leaderboard",
      "Artificial Analysis"
    ],
    "source": "Vellum LLM Leaderboard",
    "last_updated": "2026-08-09"
  }
}

Interactive Feature APIs

These endpoints power the interactive tools on modelpricewatch.com. They use the Cloudflare Worker (not static JSON) and accept POST requests.

POST /api/alerts/create

Create a price drop alert. Stores the alert in Cloudflare KV and emails the user when the model's blended price drops to or below their target. Checked twice daily by the automated pipeline.

Request / response
POST /api/alerts/create
Content-Type: application/json

{
  "model_id": "openai-gpt-5-5",
  "target_price": 5.00,
  "email": "user@example.com"
}

// Response (200):
{
  "success": true,
  "alert_id": "alert_1719...abc",
  "message": "Price alert created. We'll email you when..."
}
GET /api/alerts/unsubscribe?id={alert_id}

Unsubscribe from a specific price alert. Also accepts ?email=user@... to unsubscribe from all alerts for that email address.

POST /api/subscribe

Subscribe to the ModelPriceWatch newsletter via MailerLite. Adds the email to the mailing list.

Request / response
POST /api/subscribe
Content-Type: application/json

{
  "email": "user@example.com",
  "name": "Optional Name"
}

// Response (200):
{ "success": true, "message": "Subscribed successfully" }
POST /api/contact

Submit a contact form message. Stored securely with 90-day retention.

Request / response
POST /api/contact
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "subject": "API Access",
  "message": "I'd like to discuss..."
}

// Response (200):
{ "success": true, "message": "Message received..." }

Authentication

The free tier requires no authentication — just start making requests. Rate limits are enforced per IP address (100 requests/day).

For paid tiers (Pro, Startup, Enterprise), include your API key in the X-API-Key header:

X-API-Key: mpw_your_api_key_here

Invalid keys return 401 {"error":"Invalid API key"}. Revoked keys return 403 {"error":"API key has been revoked"}. To get a key, contact us.

Usage examples

cURL

curl https://modelpricewatch.com/api/v1/models.json | jq '.data[] | select(.category=="flagship") | {model, input_per_mtok, output_per_mtok}'

Python (with API key)

import requests

headers = {"X-API-Key": "mpw_your_api_key_here"}
resp = requests.get("https://modelpricewatch.com/api/v1/models.json", headers=headers)
models = resp.json()["data"]

# Check rate limit headers
print(f"Remaining: {resp.headers.get('X-RateLimit-Remaining')}/{resp.headers.get('X-RateLimit-Limit')}")
print(f"Tier: {resp.headers.get('X-Tier')}")

# Find cheapest models
cheapest = sorted(models, key=lambda m: m["blended_cost_per_mtok"])[:10]
for m in cheapest:
    print(f"{m['model']:30s} ${m['blended_cost_per_mtok']}/Mtok")

JavaScript (with API key)

const headers = { "X-API-Key": "mpw_your_api_key_here" };
const res = await fetch("https://modelpricewatch.com/api/v1/models.json", { headers });
const { data: models } = await res.json();

// Check rate limit headers
console.log(`Remaining: ${res.headers.get('X-RateLimit-Remaining')}/${res.headers.get('X-RateLimit-Limit')}`);

const cheapest = models
  .sort((a, b) => a.blended_cost_per_mtok - b.blended_cost_per_mtok)
  .slice(0, 10);
console.table(cheapest.map(m => ({
  model: m.model,
  provider: m.provider,
  blended: m.blended_cost_per_mtok
})));

Error handling (429 rate limit)

// When you exceed your daily limit, you get:
// HTTP 429
// {
//   "error": "Rate limit exceeded",
//   "limit": 100,
//   "used": 100,
//   "tier": "free",
//   "reset": "midnight UTC"
// }
//
// Headers also include:
// X-RateLimit-Limit: 100
// X-RateLimit-Remaining: 0
// Retry-After: 3600

Terms & fair use

  • Free — 100 requests/day per IP, no API key, no signup
  • Paid — API key required, higher limits (10K–unlimited/day). See plans →
  • CORS enabledAccess-Control-Allow-Origin: *, safe for browser-side usage
  • Rate limit headers — every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-Tier
  • 429 response — JSON body with { error, limit, used, tier, reset } + Retry-After header
  • Attribution — please link to modelpricewatch.com when displaying this data
  • Data freshness — pricing verified against official sources twice daily (09:20 & 21:20 UTC). Benchmarks auto-scraped from Vellum Leaderboard.
  • No SLA on free tier — for production-critical integrations, use a paid tier or mirror the data

Need higher rate limits, historical data exports, or a SLA? See our paid API tiers or contact us.