Free LLM Pricing API
Structured JSON endpoints · No API key · No rate limit (fair use) · CORS enabled
Base URL
https://modelpricewatch.com/api/v1
All endpoints return JSON. Append the endpoint path to the base URL. No authentication required.
Endpoints
/models.json
All 156 models with pricing, context window, modality, and metadata.
Response schema
{
"count": 156,
"updated": "2026-06-24",
"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,
"context_window": 400000,
"modality": ["text", "image", "audio"],
"released": "2025-03-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-24",
"detail_url": "https://modelpricewatch.com/models/openai-gpt-5.5/"
},
...
]
}
/providers.json
All 24 providers with metadata, URLs, and founding info.
/stats.json
Aggregate statistics: total models, providers, cheapest prices, largest context window, category breakdown.
/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.
/changelog.json
Recent pricing changes detected by the scraper pipeline.
/best-for/{slug}.json
Use-case-specific model rankings. Available slugs: coding, chatbot, cheap-api, long-context, multimodal, reasoning, open-source, fast-inference, embedding, enterprise
/compare/{slug}.json
Model comparison data. Slug format: {model-a}-vs-{model-b}. Example: gpt-5.5-vs-claude-opus-4.1
Usage examples
cURL
curl https://modelpricewatch.com/api/v1/models.json | jq '.data[] | select(.category=="flagship") | {model, input_per_mtok, output_per_mtok}'
Python
import requests
resp = requests.get("https://modelpricewatch.com/api/v1/models.json")
models = resp.json()["data"]
# 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
const res = await fetch("https://modelpricewatch.com/api/v1/models.json");
const { data: models } = await res.json();
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
})));
Terms & fair use
- Free — no API key, no payment, no signup
- CORS enabled — safe for browser-side usage
- Fair use — please cache responses. Data updates 3x daily, so a 4-hour cache TTL is ideal
- No SLA — this is a free service. For production-critical integrations, mirror the data
- Attribation — please link to modelpricewatch.com when displaying this data
- Data freshness — pricing verified against official sources 3x daily (8am, 2pm, 8pm UTC)