BridgeBench Rankings Scraper avatar

BridgeBench Rankings Scraper

Pricing

from $1.79 / 1,000 results

Go to Apify Store
BridgeBench Rankings Scraper

BridgeBench Rankings Scraper

Turn the BridgeBench coding leaderboard into a dataset of ranked models with overall and nine axis scores, displayed and blended prices, and context. Matching uses model IDs, names or dated snapshots—not fuzzy guesses—and adds OpenRouter details, provider uptime and a routing config with fallbacks.

Pricing

from $1.79 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Returns: one row per AI model on the BridgeBench leaderboard with rank, modelName, vendor, overallScore, bridgebenchPrice, openrouterId, providers and routingConfig. Input: {"startUrls": [{"url": "https://www.bridgebench.ai/leaderboard"}], "maxItems": 10} Best for: choosing a coding model by score and price, building OpenRouter routing and fallback configs, and tracking leaderboard changes over time.

{
"rank": 1,
"modelName": "Claude Opus 5.5",
"vendor": "Anthropic",
"overallScore": 760,
"blendedPricePer1M": 8,
"openrouterId": "anthropic/claude-opus-5.5",
"providerCount": 11,
"scorePerDollar": 95
}

What does BridgeBench Rankings Scraper do?

BridgeBench Rankings Scraper reads the public BridgeBench AI coding leaderboard and returns one dataset row per model. Each row has the overall BridgeBench score, the nine axis scores (reasoning, frontend, backend, one-shot, security, trustworthiness, efficiency, speed and cost), the price BridgeBench shows, the blended price per 1M tokens, the context window and the model's rank. It works like a BridgeBench API: you get the leaderboard as clean JSON instead of a web page, with no login.

Each BridgeBench model is then matched to the same model on OpenRouter, using OpenRouter's public model list. Matched rows get live OpenRouter prices (input, output and cached input per 1M tokens), the context length, the maximum output tokens, input modalities, tool support, and the list of OpenRouter provider endpoints with their own prices, quantization and uptime over the last 30 minutes. The match is strict (same id, same name, or a dated snapshot of the same id). A model that isn't on OpenRouter keeps its BridgeBench data and has its OpenRouter fields set to null, so a wrong match never puts the wrong prices on a model.

Finally, every matched row gets a routingConfig: a ready-to-paste fragment for an OpenRouter chat completion request with the model, fallback models taken from the next-ranked BridgeBench models, and a provider order built from the healthiest endpoints. It's the "leaderboard plus routing config" view as data.

What data can you get from BridgeBench?

FieldDescriptionExample
idBridgeBench model id, unique per runanthropic/claude-opus-5.5
rankPosition on the leaderboard by overall score (1 = best)1
modelNameModel name as shown on BridgeBenchClaude Opus 5.5
vendorModel vendorAnthropic
bridgebenchIdModel id used by BridgeBenchanthropic/claude-opus-5.5
provisionalTrue when BridgeBench marks the scores as provisionalfalse
overallScoreOverall BridgeBench score (0-1000)760
reasoningScoreReasoning score920
frontendScoreFrontend coding score950
backendScoreBackend coding score900
oneShotScoreOne-shot score830
securityScoreSecurity score650
trustScoreTrustworthiness score900
efficiencyScoreEfficiency score870
speedScoreSpeed score380
costScoreCost score (higher means cheaper)440
bridgebenchPriceInput / output price per 1M tokens, as text exactly as shown on BridgeBenchinput / output text
blendedPricePer1MBridgeBench blended price, USD per 1M tokens8
contextLabelContext window as shown1M
contextTokensContext window in tokens1000000
detailUrlThe model's BridgeBench pagehttps://www.bridgebench.ai/leaderboard/claude-opus-5-5
pricesCheckedDateWhen BridgeBench last checked its pricesSep 29, 2026
openrouterIdMatching OpenRouter model id, or nullanthropic/claude-opus-5.5
openrouterMatchHow the match was made: id, name, snapshot or noneid
openrouterNameModel name on OpenRouterAnthropic: Claude Opus 5.5
inputPricePer1MOpenRouter input price, USD per 1M tokens4
outputPricePer1MOpenRouter output price, USD per 1M tokens20
cacheReadPricePer1MOpenRouter cached input price, USD per 1M tokens0.2
openrouterContextLengthContext length on OpenRouter1000000
maxCompletionTokensMaximum output tokens of the top provider128000
inputModalitiesInput types the model accepts["text","image","file"]
supportsToolsTrue when tool calling is supportedtrue
providerCountNumber of OpenRouter provider endpoints11
providersProvider endpoints: provider, tag, prices, context, quantization, uptime, statussee Output
scorePerDollarOverall score divided by blended price per 1M tokens95
routingConfigOpenRouter request fragment: model, fallback models, provider ordersee Output
scrapedAtWhen the row was collected (ISO 8601)2026-10-06T03:29:45.223Z
sourceUrlBridgeBench page the row was read fromhttps://www.bridgebench.ai/leaderboard

How to use BridgeBench Rankings Scraper

  1. Open the Actor in Apify Console and go to the Input tab.
  2. Leave Leaderboard or model URLs at https://www.bridgebench.ai/leaderboard to get every model, or add model pages such as https://www.bridgebench.ai/leaderboard/claude-opus-5-5 to get only those models.
  3. Optionally narrow the list with Model name filter (for example claude or gpt-6), Vendor filter (for example Anthropic), Minimum score or Maximum blended price.
  4. Choose Sort by to order the rows by any BridgeBench score, or by scorePerDollar to find the best value.
  5. In OpenRouter routing, choose the provider.sort value for the routing config, how many fallback models to include, and how many provider endpoints to list per model.
  6. Click Start. A full run takes well under a minute.
  7. Open the Output tab to see the table, or export the dataset as JSON, CSV, Excel, XML or RSS.

Tips:

The leaderboard has 29 models on 13 October 2026, so the default maxItems of 50 returns all of them. Set maxItems lower for the top N after sorting and filtering. Model and vendor filters intersect. If none match, clear them or lower minScore.

Fallback models in routingConfig come from the whole leaderboard, not only from the rows you filtered, so a single-model run still gets sensible fallbacks.

BridgeBench usually loads without a proxy. If a load is blocked, the Actor retries on its own through Apify Proxy (datacenter first, then residential), so you normally don't need to change the proxy setting.

Input

FieldTypeRequiredDescription
startUrlsarray of URL objects or stringsNohttps://www.bridgebench.ai/leaderboard for every model, or /leaderboard/<model> pages for specific models. A model slug (claude-opus-5-5) or BridgeBench id (anthropic/claude-opus-5.5) also works. Empty means the whole leaderboard.
modelsarray of stringsNoKeep models whose name, id or slug contains any of these terms (case-insensitive).
vendorsarray of stringsNoKeep models from these vendors (exact name, case-insensitive).
sortBystringNooverall (default), reasoning, frontend, backend, oneShot, security, trustworthiness, efficiency, speed, cost or scorePerDollar. Highest first.
minScoreintegerNoMinimum score on the sortBy axis, 0-1000, default 0. Ignored for scorePerDollar.
maxBlendedPricePer1MnumberNoDrop models with a blended price above this (USD per 1M tokens).
includeProvisionalbooleanNoInclude models with provisional scores. Default true.
onlyOnOpenRouterbooleanNoDrop models with no OpenRouter match. Default false.
maxItemsintegerNoShared maximum rows across all targets after filtering and sorting, 1-10000, default 50.
includeProvidersbooleanNoFetch OpenRouter provider endpoints per model. Default true.
maxProvidersPerModelintegerNoEndpoints listed per model, 1-50, default 10.
routingSortstringNoprovider.sort in the routing config: price (default), throughput or latency.
fallbackCountintegerNoFallback models in the routing config, 0-3, default 2.
proxyConfigurationobjectNoProxy for the BridgeBench page. Default: no proxy, with automatic Apify Proxy retries.

Example: Anthropic, OpenAI and Google models with a frontend score of at least 500, sorted by frontend score, only those available on OpenRouter:

{
"vendors": ["OpenAI", "Anthropic", "Google"],
"sortBy": "frontend",
"minScore": 500,
"onlyOnOpenRouter": true,
"routingSort": "throughput",
"fallbackCount": 2,
"maxItems": 20
}

Output

Historical rows from a run on 6 October 2026, with maxProvidersPerModel set to 2 to keep them short (the bridgebenchPrice text is left out here). The second model is not on OpenRouter, so its OpenRouter fields are null.

[
{
"id": "anthropic/claude-opus-5.5",
"rank": 1,
"modelName": "Claude Opus 5.5",
"vendor": "Anthropic",
"bridgebenchId": "anthropic/claude-opus-5.5",
"provisional": false,
"overallScore": 760,
"reasoningScore": 920,
"frontendScore": 950,
"backendScore": 900,
"oneShotScore": 830,
"securityScore": 650,
"trustScore": 900,
"efficiencyScore": 870,
"speedScore": 380,
"costScore": 440,
"blendedPricePer1M": 8,
"contextLabel": "1M",
"contextTokens": 1000000,
"detailUrl": "https://www.bridgebench.ai/leaderboard/claude-opus-5-5",
"pricesCheckedDate": "Sep 29, 2026",
"openrouterId": "anthropic/claude-opus-5.5",
"openrouterMatch": "id",
"openrouterName": "Anthropic: Claude Opus 5.5",
"inputPricePer1M": 4,
"outputPricePer1M": 20,
"cacheReadPricePer1M": 0.2,
"openrouterContextLength": 1000000,
"maxCompletionTokens": 128000,
"inputModalities": ["text", "image", "file"],
"supportsTools": true,
"providerCount": 11,
"providers": [
{
"provider": "Azure",
"tag": "azure/global",
"inputPricePer1M": 4,
"outputPricePer1M": 20,
"contextLength": 1000000,
"quantization": "unknown",
"uptimeLast30m": 100,
"status": 0
},
{
"provider": "Amazon Bedrock",
"tag": "amazon-bedrock/us-east-1",
"inputPricePer1M": 4.4,
"outputPricePer1M": 22,
"contextLength": 1000000,
"quantization": "unknown",
"uptimeLast30m": 100,
"status": 0
}
],
"scorePerDollar": 95,
"routingConfig": {
"model": "anthropic/claude-opus-5.5",
"models": ["openai/gpt-6-astra", "anthropic/claude-fable-5.1"],
"provider": {
"order": ["azure/global", "amazon-bedrock/us-east-1", "google-vertex/europe"],
"allow_fallbacks": true,
"sort": "price"
}
},
"scrapedAt": "2026-10-06T03:29:45.223Z",
"sourceUrl": "https://www.bridgebench.ai/leaderboard"
},
{
"id": "stepfun/step-5-preview",
"rank": 11,
"modelName": "Step 5 Preview",
"vendor": "StepFun",
"bridgebenchId": "stepfun/step-5-preview",
"provisional": false,
"overallScore": 572,
"reasoningScore": 680,
"frontendScore": 550,
"backendScore": 700,
"oneShotScore": 600,
"securityScore": 200,
"trustScore": 580,
"efficiencyScore": 630,
"speedScore": 660,
"costScore": 550,
"blendedPricePer1M": 1.425,
"contextLabel": "1M",
"contextTokens": 1000000,
"detailUrl": "https://www.bridgebench.ai/leaderboard/step-5-preview",
"pricesCheckedDate": "Sep 29, 2026",
"openrouterId": null,
"openrouterMatch": "none",
"openrouterName": null,
"inputPricePer1M": null,
"outputPricePer1M": null,
"cacheReadPricePer1M": null,
"openrouterContextLength": null,
"maxCompletionTokens": null,
"inputModalities": null,
"supportsTools": null,
"providerCount": 0,
"providers": null,
"scorePerDollar": 401.4,
"routingConfig": null,
"scrapedAt": "2026-10-06T03:29:45.223Z",
"sourceUrl": "https://www.bridgebench.ai/leaderboard"
}
]

The Output tab shows a Leaderboard table with the rank, name, vendor, all scores, BridgeBench price, score per dollar, OpenRouter id and prices, provider count and routing config. You can download the dataset as JSON, CSV, Excel, XML or RSS, or read it through the Apify API.

How much does it cost to scrape BridgeBench?

BridgeBench Rankings Scraper is charged per result: one result is one model row in the dataset. You pay only for the rows returned, and maxItems caps how many that can be. Filters such as models, vendors and minScore also reduce the number of rows, and so the charge. See the Pricing tab for the current price.

Use with AI agents (MCP)

Connect BridgeBench Rankings Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=axiomworks/bridgebench-leaderboard-scraper"
}
}
}

Example prompts:

  1. "Use the BridgeBench scraper to find the three best frontend coding models among the ten cheapest by blended price, and give me their OpenRouter routing configs."
  2. "Get the BridgeBench leaderboard sorted by score per dollar and tell me which models on OpenRouter have the best value for backend work."
  3. "Look up Claude Sonnet 5.5 and GPT-6.1 Sol on BridgeBench, compare their scores, and list the OpenRouter providers with the best uptime for each."

Integrations and API

Run BridgeBench Rankings Scraper from your own code with the Apify API. Set APIFY_TOKEN to your Apify API token (send it in the Authorization header, never in the URL).

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/bridgebench-leaderboard-scraper").call(
run_input={"startUrls": [{"url": "https://www.bridgebench.ai/leaderboard"}], "sortBy": "scorePerDollar", "maxItems": 10}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["rank"], item["modelName"], item["scorePerDollar"], item["routingConfig"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/bridgebench-leaderboard-scraper').call({
startUrls: [{ url: 'https://www.bridgebench.ai/leaderboard' }],
vendors: ['Anthropic', 'OpenAI'],
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~bridgebench-leaderboard-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": [{"url": "https://www.bridgebench.ai/leaderboard"}], "maxItems": 10}'

You can also connect the Actor to Make, Zapier, n8n, Google Sheets, Slack or your own webhooks from the Integrations tab.

FAQ

How many models does a run return? As many as are on the BridgeBench leaderboard and pass your filters, up to maxItems. The leaderboard has 29 models on 13 October 2026 at the time of writing.

How fresh is the data? Every run reads the live BridgeBench page and the live OpenRouter API. BridgeBench shows when it last checked its own prices, and that date is in pricesCheckedDate. OpenRouter prices and uptime are as of the run, and scrapedAt records when that was.

Why are the OpenRouter fields empty for some models? Some BridgeBench models, such as previews or unreleased variants, are not on OpenRouter. The Actor only matches by the same id, the same name, or a dated snapshot of the same id, and never guesses. When there is no match, openrouterMatch is none and the OpenRouter fields are null. Set onlyOnOpenRouter to true to drop these rows.

Why are BridgeBench and OpenRouter prices different? bridgebenchPrice and blendedPricePer1M are what BridgeBench shows on its page. inputPricePer1M and outputPricePer1M come from OpenRouter, and each entry in providers has that endpoint's own price. They can differ when a provider charges more for a region or a faster tier, or when BridgeBench hasn't rechecked its prices yet.

How is the routing config built? model is the matched OpenRouter id. models lists up to fallbackCount other models that are on OpenRouter, starting with the next-ranked BridgeBench models. provider.order lists the tags of up to three healthy endpoints with the best recent uptime, allow_fallbacks is true, and provider.sort is your routingSort choice. It is a suggestion based on the scores and uptime at run time, not a guarantee.

Why did my run return 0 results? Either a filter matched nothing (for example a misspelled vendor or a very high minScore), a model URL didn't match any model on the leaderboard, or a start URL was not a bridgebench.ai leaderboard page. The run's status message says which. If BridgeBench was blocked even after the automatic proxy retries, the status message says that too; try again later or set the proxy to Apify Proxy residential.

Can I get one model only? Yes. Put its BridgeBench page in startUrls, for example https://www.bridgebench.ai/leaderboard/gpt-6-astra, or use the models filter with part of its name.

This Actor reads only public pages and public API data: the BridgeBench leaderboard, which anyone can open without an account, and OpenRouter's public model list. It doesn't log in and doesn't collect personal data. BridgeBench's scores and methodology belong to BridgeBench; each row keeps its sourceUrl and detailUrl so you can credit the source. Check that your use of the data fits your own legal and contractual situation. This Actor is not affiliated with or endorsed by BridgeBench or OpenRouter.

Feedback

Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.