LMArena Leaderboard Scraper — Elo ratings & rank changes avatar

LMArena Leaderboard Scraper — Elo ratings & rank changes

Pricing

Pay per event

Go to Apify Store
LMArena Leaderboard Scraper — Elo ratings & rank changes

LMArena Leaderboard Scraper — Elo ratings & rank changes

Export every LMArena / arena.ai leaderboard (text, webdev, vision, text-to-image, image edit, search, video…) as structured JSON: rank, model, organization, license, Elo rating with confidence interval and votes. Track rank and rating changes between runs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Istmobot

Istmobot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

LMArena (arena.ai) Leaderboard Scraper — Elo ratings & rank changes

Export every LMArena leaderboard (now at arena.ai) as clean, structured JSON: rank, model, organization, license, Elo rating with its confidence interval, vote count and publish date — for text, WebDev, vision, text-to-image, image editing, search, document, video and more. Turn on change tracking and every row also tells you how far the model moved since your last run, and whether it is new on the board.

No browser, no login, no API key. One run reads all leaderboards in a few seconds.

What it does

  • All leaderboards: leave categories empty to get text, code/webdev, code/image-to-webdev, vision, text-to-image, image-edit, search, document, text-to-video, image-to-video and video-edit.
  • Official data source: rows come from LMArena's own public dataset on Hugging Face (lmarena-ai/leaderboard-dataset, CC BY 4.0), so runs do not depend on arena.ai's bot protection.
  • Sub-categories too: text/coding, text/math, text/creative-writing, vision/ocr, text-to-image/portraits, language boards such as text/spanish, etc.
  • Full rows: rating + upper/lower confidence bounds, rank + rank range, votes, organization, license, model URL, input/output price per million tokens, context length.
  • Change tracking: stores the previous snapshot of each board and outputs rankChange, ratingChange and isNew per row.
  • Top N filter to keep just the head of each board.
  • Reads the official dataset files directly (no HTML parsing), retries with exponential backoff on rate limits and server errors, one failed board never crashes the run.

Use cases

  • AI product teams — pick the best model per modality, and get alerted when a new model overtakes yours.
  • Investors & analysts — track which labs are winning over time (OpenAI vs Google vs Anthropic vs open-source).
  • Newsletters & content creators — weekly "who moved on LMArena" posts from a scheduled run.
  • Researchers — build a historical dataset of Elo ratings and votes per model.
  • Dashboards — pipe into Google Sheets, BigQuery or Looker via Apify integrations.

Input

FieldTypeDefaultDescription
categorieslist of stringsempty (all)Board names as in the URL: text, code/webdev, vision, text-to-image, text/coding… Full URLs work too
topNinteger0Only the top N rows per board. 0 = all ranked models
trackChangesbooleanfalseCompare with the previous run and fill the change fields
{
"categories": ["text", "code/webdev", "vision", "text-to-image"],
"topN": 50,
"trackChanges": true
}

Output

One item per model per leaderboard:

{
"category": "text",
"rank": 2,
"model": "gemini-4-argon-high",
"modelDisplayName": "Gemini 4 Argon (High)",
"organization": "google",
"license": "Proprietary",
"rating": 1520.25,
"ratingUpper": 1526.53,
"ratingLower": 1513.98,
"votes": 11889,
"rankUpper": null,
"rankLower": null,
"rankChange": 1,
"ratingChange": 3.08,
"isNew": false,
"modelUrl": null,
"inputPricePerMillion": null,
"outputPricePerMillion": null,
"contextLength": null,
"publishDate": "2026-10-28",
"previousSnapshotDate": "2026-10-22",
"snapshotDate": "2026-11-05",
"url": "https://arena.ai/leaderboard/text",
"scrapedAt": "2026-11-05T22:00:00.000Z"
}
  • model is a stable id derived from the model name; modelDisplayName is the name as published by LMArena (change tracking matches on model).
  • rating is the arena score (style control on, as displayed by default). ratingLower/ratingUpper are the confidence bounds.
  • publishDate is the date LMArena published this board in its dataset. snapshotDate is the UTC date of the run.
  • rankUpper, rankLower, modelUrl, inputPricePerMillion, outputPricePerMillion and contextLength are always null: the official dataset does not include them. They stay in the output so existing integrations keep working.

Change fields

FieldMeaning
rankChangePositions gained since the previous snapshot. +2 = climbed from #3 to #1, -1 = dropped one place, 0 = unchanged
ratingChangeRating difference vs the previous snapshot
isNewtrue if the model wasn't on that board last time

On the first run with trackChanges (the baseline) and when tracking is off, all three are null. Snapshots are kept in the named key-value store arena-leaderboard-snapshots in your Apify account (one key per board), so they persist across runs. Schedule the Actor daily or weekly (Apify Console → Schedules) for a running change log.

Error items

{ "category": "agent", "url": "https://arena.ai/leaderboard/agent", "errorType": "NO_ROWS", "error": "No Elo leaderboard rows found — unknown leaderboard name, or a board that does not use Elo ratings (e.g. \"agent\")" }

errorType is NO_ROWS or FETCH_FAILED. Error items are never charged.

Pricing

Pay-per-event:

  • Actor start — small fixed fee per run.
  • row-result — per leaderboard row in the output.

Use topN to pay only for the models you care about. Set a maximum cost per run and the Actor stops cleanly once it's reached.

FAQ

Is this the same as lmarena.ai? Yes — LMArena (formerly Chatbot Arena by LMSYS) moved to arena.ai; lmarena.ai redirects there. Old lmarena.ai URLs are accepted as input.

Why is the agent board skipped? It ranks agents with a different, non-Elo scoring system (success signals instead of pairwise votes), so it doesn't fit this schema. If you request it explicitly you get a free NO_ROWS error item.

How often do the leaderboards update? As often as LMArena publishes to its dataset: typically every few days to a week for text and vision, less often for smaller boards. It can lag the live arena.ai page by a few days; check publishDate on each row. A daily or weekly schedule catches every published change.

Does topN affect change tracking? No. The full board is always saved as the snapshot, so models outside your top N aren't reported as "new" later.

Why not scrape arena.ai directly? The site now answers automated clients with a Cloudflare challenge. LMArena publishes the same leaderboards as an open dataset, which is simpler and more reliable. If the dataset can't be read you get a free FETCH_FAILED error item instead of bad data.

Disclaimer

This is an unofficial tool and is not affiliated with, endorsed by, or sponsored by LMArena, arena.ai or LMSYS. It reads LMArena's public dataset on Hugging Face (CC BY 4.0) without logging in or bypassing any protections. Attribute LMArena when you reuse the data, and use it in line with the dataset license and applicable law.