OpenRouter Models Scraper · Pricing, Providers & Usage
Pricing
from $0.70 / 1,000 results
OpenRouter Models Scraper · Pricing, Providers & Usage
Compare every AI model on OpenRouter in one list. See token prices, context size, provider speed, uptime and usage rankings. No API key or login needed. Great for picking the cheapest, fastest model and tracking price changes.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Data WiKi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
🚀 What is OpenRouter Models Scraper?
OpenRouter Models Scraper is an Apify Actor that collects the public OpenRouter model catalog into tables: token prices, context size, capabilities, provider speed, uptime, weekly usage and benchmark scores. It needs no OpenRouter API key or login, and it saves every model as soon as it is ready.
- No key, no login: it reads the public data that any visitor sees on openrouter.ai.
- One row per model variant: get the openrouter models list with prices per million tokens, or pick models by id, page link or author.
- Provider detail on request: add every provider's price, latency, throughput, uptime and data policy per model.
- Live results: the Output tab fills while the run is going, and the parts of each model are also saved to separate tables.
- Easy export: download JSON, CSV, Excel, XML or HTML, or read the dataset through the API.
📊 What data can you extract from OpenRouter?
Each row describes one model variant, and prices are in USD per million tokens. The openrouter models pricing fields hold input, output, blended 3:1 and cache prices. Cache, reasoning, audio, image and web search prices complete the openrouter ai model pricing when the site lists them. All prices use USD per million tokens, so an llm token price comparison needs no unit conversion. Copy the openrouter model prices into a spreadsheet or a dashboard.
| Field | Description | Example |
|---|---|---|
id, name, author, url | Model id you pass to the OpenRouter API, model name, author and model page link | author/model-name |
variant, status | Model variant and its state (ok, router, no_endpoint, disabled, deranked, status_<code>) | ok |
context_length, max_output_tokens, max_input_tokens | Context window and token limits of the top provider | 128000 |
input_modalities, output_modalities | What the model accepts and returns | ["text", "image"] |
is_free | Whether the model costs nothing per token | false |
pricing | Input, output, blended 3:1, cache read and write, reasoning, audio, image, web search and discount | {"input_per_m_tokens": 0.1} |
pricing_details, pricing_raw_per_token | The price lines shown on the model page and the raw per-token values | list or object |
capabilities | Tools, reasoning, structured outputs, web search, file, audio, video and image input | {"supports_tools": true} |
top_provider | Provider name, quantization, region, p50 latency and throughput, data policy | {"name": "Provider"} |
rank_by_weekly_tokens, usage_last_week | Weekly token rank and last week's requests, tokens and tool calls | 7 |
category_rankings | Rank and share per usage category | list |
benchmarks | Intelligence, coding and agentic indexes and a design score | {"coding_index": 40} |
description, created_at, updated_at, knowledge_cutoff, deprecation_date, hugging_face_id, hugging_face_url, model_family, instruct_type, warning_message, short_name, author_name, permaslug, model_context_length | Descriptive details of the model | text |
providers, provider_count, effective_pricing | Every provider endpoint with price, speed, uptime and data policy (with the providers extra) | list |
uptime | Uptime and availability over three days, hourly (with the uptime extra) | object |
usage_last_30d, usage_daily | 30-day totals and one entry per day (with the usage extra) | list |
top_apps | Top public apps that use the model (with the apps extra) | list |
benchmark_scores | Benchmark scores per provider (with the benchmarks extra) | object |
scraped_at, error, errors | Time the row was saved, and error details | text |
A field the site does not publish for a model stays empty (null). The pricing_details field keeps the openrouter pricing per model lines as the model page shows them. The overview and capabilities views make an openrouter models comparison sheet.
The providers extra gives one row per provider with its own price, quantization and region. That suits an llm api provider comparison. The latency percentiles (p50, p95, p99) suit an llm latency comparison. The providers table lets you build openrouter provider rankings by latency or uptime. The benchmark fields support an llm benchmark comparison.
The field rank_by_weekly_tokens gives the openrouter models ranking by weekly tokens, and category_rankings adds the rank per usage category.
Each run also builds an openrouter models dataset from six extra tables: providers, daily_usage, top_apps, benchmarks, rankings and uptime. They hold one row per provider, day, app, benchmark, category or hour, and each row carries model_id and model_name.
💡 Use cases for OpenRouter model data
The columns fit any ai model comparison that needs real prices and speeds instead of guesses. For an openrouter pricing scraper view, read only the pricing columns.
- Compare LLM models before you choose one: put price, context size and capabilities of several models in one table.
- Build an ai model pricing comparison: sort by "Cheapest first" and read
pricing.input_per_m_tokensandpricing.output_per_m_tokens. - Find the cheapest LLM API: read the price of every provider endpoint of one model in the
providerstable. - Pick the fastest LLM API provider: compare
latency_p50_ms,throughput_p50_tpsanduptime_today_pctper provider. - Shortlist the best LLM for coding: sort by "Best at coding" and read the coding index and
benchmark_scores. - See the most used AI models: read
rank_by_weekly_tokens,usage_daily,category_rankingsandtop_apps. - Feed your own AI model catalog: load the flat tables into a database, a sheet or a dashboard.
- Check context size limits: sort by "Largest context first" for an llm context window comparison across models.
- Run an LLM price tracker: schedule the Actor and compare the datasets of different runs, because one run stores only the current prices.
🛠️ How to scrape OpenRouter models
- Create a free Apify account and open this openrouter scraper in Apify Console.
- Add model ids, page links or author names to Models, authors or links, or leave the list empty for the whole catalog.
- Pick a Sort order and set Max models (the limit applies to each entry in the list).
- Choose the Extra data per model you need, for example providers and uptime.
- Click Start and watch the Output tab fill while the run is going.
- Download the dataset as JSON, CSV, Excel, XML or HTML.
To find the cheapest llm api provider for one model, put only that model's id in the list and keep the providers extra. Leave the list empty to get an openrouter all models list in a single run.
💰 How much does it cost to scrape OpenRouter models?
OpenRouter Models Scraper uses pay per event pricing. Each model saved to the default dataset is one main_result event. A run also pays one apify-actor-start event of $0.00005 for its 1,024 MB of memory. Apify platform usage (compute) is billed on top of the events above.
| Apify plan tier | Price per 1,000 models | Price per model |
|---|---|---|
| Free | $1.00 | $0.001 |
| Bronze | $0.90 | $0.0009 |
| Silver | $0.80 | $0.0008 |
| Gold, Platinum, Diamond | $0.70 | $0.0007 |
Example: 500 models on the Free tier cost 500 x $0.001 = $0.50 for results, plus $0.00005 for the start, which is $0.50005 before platform usage. The same 500 models on the Gold tier cost 500 x $0.0007 = $0.35, plus $0.00005 for the start, which is $0.35005 before platform usage.
Rows for inputs that matched no model and the six extra tables are not billed as results. You can set a spend limit on a run, and the Actor stops cleanly when it is reached. See the Pricing tab of the Actor for the current numbers.
⬇️ Input
All fields are optional. With an empty urls list the Actor returns the top 10 models of the week, sorted by top-weekly, with all five extras (slower). The form is prefilled with two example entries. Clear extraData for catalog fields only.
| Field | Meaning |
|---|---|
urls | Model ids (openai/gpt-4o-mini), model page links or author names (anthropic, google/*). Empty means the whole catalog. |
search | Keyword, like the search box on openrouter.ai/models. |
sort | Order of the models, for example top-weekly (default), pricing-low-to-high, throughput-high-to-low, latency-low-to-high, context-high-to-low or coding-high-to-low. It also decides which models are kept when you set a limit. |
maxItems | Models to save for each entry in urls. Default 10 in the input form, 0 means all. With an empty list it limits the whole catalog. Three authors with 20 give up to 60 models. |
extraData | Any of providers, uptime, usage, apps, benchmarks. Default: all five (slower). Clear the field for catalog fields only. |
proxyConfiguration | Optional. No proxy is used by default. |
For an openrouter pricing comparison, sort by pricing-low-to-high and add the providers extra. Sort by coding-high-to-low to compare llm models for coding.
{"urls": [],"search": "","sort": "pricing-low-to-high","maxItems": 2,"extraData": ["providers"],"proxyConfiguration": { "useApifyProxy": false }}
💡 Start with a small
maxItemssuch as 10 to check the result, then raise it.
⬆️ Output
The scraped models appear as a dataset in the Storage tab. The table view does not show all fields, so export the dataset or open it through the API for the full rows. The overview, pricing, capabilities and performance views give quick tables, and the providers, daily_usage, top_apps, benchmarks, rankings and uptime tables are saved next to the default dataset. The pricing view works as an openrouter models pricing list. Export the dataset as an openrouter models list json file when a script needs it.
The sample below is an abbreviated illustration with made-up names and numbers, matching the input above. Your run returns real catalog data.
[{"id": "example-lab/example-mini","name": "Example Lab: Example Mini","author": "example-lab","url": "https://openrouter.ai/example-lab/example-mini","status": "ok","context_length": 128000,"is_free": false,"pricing": {"input_per_m_tokens": 0.1,"output_per_m_tokens": 0.4,"blended_3_to_1_per_m_tokens": 0.175},"rank_by_weekly_tokens": 12,"provider_count": 1,"providers": [{"provider": "Example Host","status": "ok","quantization": "fp8","pricing": { "input_per_m_tokens": 0.1, "output_per_m_tokens": 0.4 },"latency_ms": { "p50": 450 },"throughput_tps": { "p50": 120 },"uptime_today_pct": 99.9}]},{"id": "example-lab/example-large","name": "Example Lab: Example Large","author": "example-lab","url": "https://openrouter.ai/example-lab/example-large","status": "ok","context_length": 200000,"is_free": false,"pricing": {"input_per_m_tokens": 0.5,"output_per_m_tokens": 2.0,"blended_3_to_1_per_m_tokens": 0.875},"rank_by_weekly_tokens": 4,"provider_count": 1,"providers": [{"provider": "Example Host","status": "ok","quantization": "bf16","pricing": { "input_per_m_tokens": 0.5, "output_per_m_tokens": 2.0 },"latency_ms": { "p50": 800 },"throughput_tps": { "p50": 60 },"uptime_today_pct": 99.5}]}]
A run also saves a RUN_SUMMARY record in the key-value store. It lists modelsSaved, modelsCharged, inputsNotFound, requests, spendLimitReached and notes.
⚠️ Limitations and error handling
- The Actor reads public data only. It does not read your own OpenRouter account, spend or private data.
- A run returns the current catalog. It does not store price history, so use scheduled runs to build one.
- A field the site does not publish stays
null. Routers have no provider endpoint, so their provider fields are empty. - The
providers,uptime,usage,appsandbenchmarksextras are loaded per model, which makes the run slower. - The limit in
maxItemsapplies to each entry inurls. With an empty list it applies to the whole catalog. - Failed requests are retried and switched to another connection. If ten requests in a row never reach the site, the run stops and keeps everything saved so far.
- If the full model list is temporarily unavailable, the Actor uses a shorter list. Usage, rankings, benchmarks and provider statistics are then empty, extras are skipped, and
RUN_SUMMARY.notessays so. - Prices are those listed on OpenRouter. Use them for an ai model api pricing comparison there, not as the price lists of the model makers.
- An unknown
sortvalue falls back totop-weeklywith a warning in the log.
An input that matches no model is saved as a row with id and error. It is not billed.
{"id": "unknown-author","error": "model or author not found on openrouter.ai"}
If an extra could not be loaded for a model, the row gets an errors list such as ["providers: temporarily unavailable"].
| Message or status | What it means | What to do |
|---|---|---|
Spend limit reached (run status) | Your spend limit was reached and the run stopped cleanly. | Raise the spend limit and run again. |
openrouter.ai could not be reached (blocked or changed). Try again later. | Nothing was collected and the run failed. | Start the run again later, or set your own proxy. |
No models were saved - check the models, search and sort inputs. | The run finished without a saved model. | Check ids, authors, the search keyword and the sort order. |
status value router, no_endpoint, disabled, deranked or status_<code> | Routers have no provider endpoint; the others describe the state reported for a model's top provider. | Filter the dataset on status if you only want ok rows. |
🔌 Integrating OpenRouter Models Scraper with other apps
Run OpenRouter Models Scraper from the Apify API, and send the dataset to your tools with Apify integrations. Use Make, Zapier or webhooks to pass a finished run to a spreadsheet, a database or a chat message. A sheet fed by a schedule can drive a recurring llm pricing comparison.
curl -X POST "https://api.apify.com/v2/actors/data_wiki~openrouter-models-scraper/runs" \-H "Authorization: Bearer <YOUR_API_TOKEN>" -H "Content-Type: application/json" \-d '{"urls": ["anthropic"], "maxItems": 10, "extraData": ["providers"]}'
See the Apify API reference for the other calls.
To follow prices over time, create a schedule and compare the datasets of different runs. AI agents can find and run this Actor through the Apify MCP server.
🔗 Other scrapers by data_wiki
The Actors below come from the same developer and cover other topics, such as shops, travel and reviews. They are not about AI models, so use them only if you also work with that kind of data.
| Actor | What it extracts | When to use it |
|---|---|---|
| 1688 wholesale products scraper | Wholesale products from 1688.com by keyword or link, with bulk prices | You compare supplier prices for goods |
| TikTok Shop search scraper | TikTok Shop products by keyword with units sold, prices, discounts and reviews | You track product prices and discounts on TikTok Shop |
| Tripadvisor review scraper | Reviews of hotels, restaurants and attractions with stars, text and trip type | You need review text for analysis |
| Airbnb listings scraper | Airbnb listings by city, search link or listing link, with nightly and stay prices | You compare stay prices in a city |
For shop prices and discounts, see product prices on TikTok Shop. For travel data, stay prices from Airbnb and travel review text for AI analysis follow the same pattern of public data in a clean table. Wholesale price data from 1688 covers goods instead of models.
⚖️ Is it legal to scrape OpenRouter?
OpenRouter Models Scraper only reads public pages that any visitor can open, and it does not read private data or account data. You are responsible for following the terms of openrouter.ai and the laws that apply to you. The model data is about products and does not name people. Read Apify's guides on the legality of web scraping and ethical web scraping, and ask a lawyer if you are unsure.
❓ FAQ
Do I need an API key to use OpenRouter Models Scraper?
No. The Actor reads public pages, so it needs no OpenRouter API key, account or login. You only need an Apify account to run it.
How many models are there?
The count changes as models are added and retired, and it is in the hundreds. Set maxItems to 0 and leave urls empty to get the whole catalog. The openrouter ai models list also contains several variants of the same model.
How much does it cost?
You pay per saved model: $1.00 per 1,000 on the Free tier, down to $0.70 per 1,000 on the Gold tier and above, plus a start event of $0.00005. See the cost section above for the full table.
Can I list only free models?
Yes. Run the Actor, then filter the dataset on is_free. That gives an openrouter free models list of every model with no per-token price.
Which models cost nothing to call?
The is_free field marks openrouter models free of per-token charges. Check pricing and the providers table to see the exact prices of the others.
Why are some fields empty?
A field stays null when the site does not publish it for that model. Routers have no provider endpoint, and extras you did not choose are not in the row.
What do the price fields contain?
They hold llm api pricing per million tokens for input and output, plus cache, reasoning, audio, image and web search prices when listed. The effective_pricing field adds weighted prices for models with the providers extra.
How do I compare prices across providers?
Add the providers extra and use the providers table. It has one row per provider, which is the shape an llm api pricing comparison needs.
Can I export the rankings?
Yes. The fields rank_by_weekly_tokens and category_rankings hold the rank data, so you can export openrouter model rankings as a table.
Can I run it for one author?
Yes. Put the author name, for example anthropic, in urls. Use maxItems to limit the models for that author, which gives an openrouter llm models list for one author.
Do I need proxies?
No. No proxy is used by default. You can set your own proxy in the input if you want one.
Can I use OpenRouter Models Scraper through an MCP server?
Yes. AI agents can find and run Apify Actors through the Apify MCP server, then read the dataset of the run.
Can I track a model catalog over time?
Yes, with scheduled runs. Each run saves the current catalog, so keep the datasets you want to compare.
💬 Your feedback
Found a bug or missing data? Open an issue from the Actor page in Apify Console and include the run link. Need a custom solution? Contact hello.datawiki@gmail.com.