LLM Pricing Monitor avatar

LLM Pricing Monitor

Pricing

Pay per event

Go to Apify Store
LLM Pricing Monitor

LLM Pricing Monitor

Scrape live LLM API pricing from OpenAI, Anthropic, Google, Mistral, Groq, Together AI and DeepSeek. Normalized per-million-token output for cost dashboards and FinOps pipelines. Beats OpenRouter-only competitor by 6.5x.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

LLM Pricing Monitor

LLM Pricing Monitor

We do the dirty work so your dataset stays clean. 😈

$5.05 / 1,000 rows — 6.5x cheaper than the only competing actor. Scrape live pricing from the seven major LLM API providers (OpenAI, Anthropic, Google, Mistral, Groq, Together AI, DeepSeek) and emit one unified per-million-token dataset ready for cost dashboards, FinOps pipelines, and spreadsheet pivots. No login. No API key. No browser automation.

This Actor hits the authoritative pricing page for each provider directly (not the OpenRouter re-routing layer), parses the live HTML or RSC payload with parsel, and pushes a flat Pydantic-validated dataset to Apify. One run gives you a snapshot of every text-token model the providers sell, normalized so that $2 / 1M tokens and $0.002 / 1K tokens line up in the same column.

🎯 What this scrapes

Seven LLM API providers, one schema:

  1. OpenAIopenai.com/api/pricing/ (Cloudflare-protected; partial-success fallback when challenge does not clear)
  2. Anthropicdocs.anthropic.com model comparison table (not the Webflow marketing page)
  3. Google (Gemini API)ai.google.dev/gemini-api/docs/pricing
  4. Mistralmistral.ai/pricing (Next.js RSC payload — JSON extracted via regex)
  5. Groqgroq.com/pricing (server-rendered HTML table)
  6. Together AIwww.together.ai/pricing (Webflow list items)
  7. DeepSeekapi-docs.deepseek.com/quick_start/pricing (Docusaurus markdown table)

Output rows are normalized to USD per 1 million tokens regardless of how the provider publishes the price — per-1k prices are auto-multiplied by 1000 in the parser.

FieldTypeDescription
providerstringProvider literal (openai, anthropic, google, ...)
provider_display_namestringHuman-readable name (e.g. OpenAI)
model_idstringProvider-canonical ID (e.g. gpt-4o-2024-08-06)
model_display_namestring | nullHuman label from the pricing page
pricing_unitstringAlways per_1m_tokens
input_usd_per_1mnumber | nullStandard input price per 1M tokens
output_usd_per_1mnumber | nullStandard output price per 1M tokens
cache_read_usd_per_1mnumber | nullCached input read price
cache_write_usd_per_1mnumber | nullCache write price
batch_input_usd_per_1mnumber | nullBatch API input price
batch_output_usd_per_1mnumber | nullBatch API output price
context_window_tokensinteger | nullMax context window
max_output_tokensinteger | nullMax output tokens per request
tierstring | nullSub-tier label (e.g. standard)
source_urlstringExact pricing page URL scraped
scraped_atstringISO 8601 UTC timestamp

🔥 Features

  • Seven providers, one schema — drop straight into a spreadsheet or BI tool with no per-provider normalization on your end.
  • Per-1k auto-conversion — every *_usd_per_1m field is normalized regardless of how the provider lists prices on the page.
  • Per-provider isolation — one provider failure (Cloudflare block, page restructure) does not abort the run; the other six still produce data.
  • OpenAI Cloudflare-awarecurl-cffi impersonation rotation plus optional Apify Proxy; partial-success status message when the challenge cannot be cleared.
  • No browser — pure HTTP with curl-cffi browser TLS fingerprint impersonation; low compute footprint and fast runs.
  • Pydantic v2 validation — input and output are model-validated; invalid input fails fast with a clear error before any network call.
  • Filter knobs — drop deprecated/legacy models, enforce a minimum context window, or restrict the provider list to just the ones you care about.
  • Exponential backoff on 429 / 503 with Retry-After honoured.
  • Companion to huggingface-hub-scraper as the AI Stack Intelligence suite — pair pricing with hub-side model adoption signals.

💡 Use cases

  • FinOps cost dashboard — schedule weekly runs, write to a named dataset, and chart input_usd_per_1m over time per model. CloudZero reports the average AI company spends $85k/month on LLMs — a 10% saving is meaningful.
  • AI buyer comparison sheets — feed the JSON into a spreadsheet and rank by (input_usd_per_1m + output_usd_per_1m * 2) weighted for the typical 2:1 output/input ratio of your workload.
  • Procurement bake-offs — when evaluating Anthropic vs Google vs OpenAI for a new feature, pull the current pricing snapshot rather than relying on a stale screenshot in a PDF.
  • Cache-aware budgeting — DeepSeek and Anthropic publish cache-hit pricing separately; this Actor surfaces it (cache_read_usd_per_1m) so you can model the effective rate after caching.
  • Batch-mode arbitrage — OpenAI and Anthropic offer ~50% discounts via their batch APIs; surface batch_input_usd_per_1m / batch_output_usd_per_1m directly in your dashboard.
  • Investor research — track price-per-token compression at the frontier (Groq, Together, DeepSeek) versus the incumbents (OpenAI, Anthropic, Google) over quarters.
  • Open-source pricing leaderboards — feed a public site that ranks the cheapest model meeting a context-window or quality threshold.

⚙️ How to use it

  1. Open the Actor input form.
  2. (Optional) Pick Providers — leave empty to scrape all seven, or list a subset like ["groq", "deepseek"].
  3. (Optional) Toggle Include legacy models — off by default; rows flagged deprecated/legacy/retired are dropped.
  4. (Optional) Set Minimum context window (tokens) — e.g. 128000 to drop everything below 128K context.
  5. Leave Use Apify Proxy off unless OpenAI is in your list — its Cloudflare challenge occasionally clears with a residential exit.
  6. Click Start. Results stream into the default dataset.

Quick examples

All seven providers, default settings:

{
"providers": [],
"includeLegacyModels": false
}

Groq + DeepSeek only (no Cloudflare risk — the QA fixture):

{
"providers": ["groq", "deepseek"],
"includeLegacyModels": false,
"useProxy": false
}

Frontier models only (>= 128K context), all providers, with proxy for OpenAI:

{
"providers": [],
"includeLegacyModels": false,
"minContextWindow": 128000,
"useProxy": true
}

📥 Input

FieldTypeRequiredDefaultDescription
providersarray of provider literalsno[] (all seven)Subset of openai, anthropic, google, mistral, groq, together, deepseek
includeLegacyModelsbooleannofalseKeep rows flagged deprecated/legacy/retired
minContextWindowinteger | nullnonullDrop rows with non-null context window below this value
useProxybooleannofalseRoute via Apify Proxy (BUYPROXIES94952)

📤 Output

One dataset row per (provider x model_id x tier). Example record — Anthropic Claude Sonnet 4.6 as of 2026-05-16:

{
"provider": "anthropic",
"provider_display_name": "Anthropic",
"model_id": "claude-sonnet-4-6",
"model_display_name": "Claude Sonnet 4.6",
"pricing_unit": "per_1m_tokens",
"input_usd_per_1m": 3.0,
"output_usd_per_1m": 15.0,
"cache_read_usd_per_1m": null,
"cache_write_usd_per_1m": null,
"batch_input_usd_per_1m": null,
"batch_output_usd_per_1m": null,
"context_window_tokens": 1000000,
"max_output_tokens": 64000,
"tier": "standard",
"source_url": "https://docs.anthropic.com/en/docs/about-claude/models/all-models",
"scraped_at": "2026-05-16T13:40:00.000Z"
}

Download the dataset as JSON, CSV, Excel, or XML from the Export button on the run page.

💰 Pricing

Pay-Per-Event (PPE):

EventRate (USD)Trigger
actor-start$0.05Once per Actor run at boot
result-row$0.005Per pricing row pushed

A typical run (all seven providers, 80 total rows) costs **$0.45**. Per-1,000-row extrapolation: $5.05 — 6.5x cheaper than the only multi-provider competing actor on the Store (parseforge/openrouter-models-pricing-scraper at $32.85/1k, which only covers OpenRouter's re-routing layer, not the authoritative provider pages).

🚧 Limitations

  • OpenAI Cloudflare challengeopenai.com/api/pricing/ returns HTTP 403 with cf-mitigated: challenge to most plain HTTP requests. curl-cffi + Apify Proxy clears it most of the time; when it does not, OpenAI rows are skipped and the run continues with the other six providers (status message indicates partial success). A v2 Camoufox path is planned if the challenge becomes consistent.
  • Text-token models only — image generation, speech-to-text, embeddings, and other modality prices are out of scope for v1.
  • Authoritative pages only — Azure OpenAI, AWS Bedrock, Vertex AI, and OpenRouter pass-through prices are out of scope.
  • No historical tracking — schedule runs and export to your own storage for time-series. Apify's default dataset retention is 7 days on the free plan.
  • Provider page restructures — pricing pages change occasionally. Fields that cannot be parsed emit null rather than crashing; the QA fixture (groq + deepseek) catches parser breakage on every publish.

❓ FAQ

Why these seven providers? They are the seven biggest providers of text-token LLM APIs by inference revenue as of Q1 2026. Cohere, AI21, and Perplexity are deliberately out of scope for v1; open a feature request if you need them.

Why scrape the pricing pages instead of using each provider's API? None of the seven providers publish their pricing via an authenticated API. The pricing pages are the single source of truth. We hit the authoritative URL for each provider (e.g. docs.anthropic.com, not the marketing redirect at claude.com/pricing).

Why is OpenAI sometimes missing from the output? OpenAI's pricing page sits behind Cloudflare's JavaScript challenge (cf-mitigated: challenge). curl-cffi with browser TLS impersonation plus an Apify Proxy residential exit usually clears it, but not always. When it does not clear, the Actor logs the block, sets a status message, and continues with the other six providers — a partial result is more useful than a hard failure.

Are per-1k prices converted to per-1M? Yes. pricing_unit is always "per_1m_tokens". Parsers detect per-1k pricing from column headers and multiply by 1000 before constructing the row.

Does this Actor track price changes across runs? No — every run is a fresh snapshot. Schedule runs and export to your own storage (BigQuery, S3, a named dataset, etc.) to build a time series. Apify's default run-scoped storage is purged after 7 days on the free plan.

Companion Actor? Yes — huggingface-hub-scraper is the other half of the AI Stack Intelligence suite. Pair model adoption (HF downloads, GGUF availability) with live pricing for full-stack AI cost-and-coverage dashboards.

💬 Your feedback

Found a parser that broke after a provider's pricing page restructure? Want a new provider added? Open an issue on the Actor's Apify Store page or contact us at apify.com/DevilScrapes. We monitor publish-day QA failures and ship patches the same week.