# AI Model Leaderboard: LMArena Rankings, Prices & Releases (`api-co/ai-model-leaderboard`) Actor

ESPN for AI: daily LLM standings from the LMArena leaderboard (text, coding, webdev, vision, image, video, agent arenas) with week-over-week rank changes, matched to OpenRouter API prices and context, plus new model releases and Hugging Face trending models.

- **URL**: https://apify.com/api-co/ai-model-leaderboard.md
- **Developed by:** [Emilio Cisneros](https://apify.com/api-co) (community)
- **Categories:** AI, News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## AI Model Leaderboard: LMArena Rankings, Prices & Releases

**ESPN for AI.** Get today's **AI model standings** from the **LMArena leaderboard** with **week-over-week movement** (rank change, score change, new entries). Every model comes matched to its **API price per 1M tokens** and **context window** from OpenRouter. The same run also returns **new model releases** and the **trending open models on Hugging Face**.

Covers every LMArena arena: **Text** (chat LLMs), **WebDev** (coding apps), **Vision**, **Search**, **Document**, **Text-to-Image**, **Image Edit**, **Text-to-Video**, **Image-to-Video**, **Video Edit** and **Agent**. It also covers categories such as **coding**, **math**, **creative writing**, **hard prompts**, **instruction following**, **multi-turn**, **expert** and 10+ languages.

### What you get

- **Standings**: rank, model, lab, license, Arena score with confidence interval, votes, leaderboard date.
- **Movement**: previous rank, `rankChange`, `scoreChange` and `movement` (`up`/`down`/`same`/`new`) against the leaderboard from N days ago (default 7). LMArena sometimes renames models (e.g. `gemini-3.5-flash-high` → `Gemini 3.5 Flash (High)`); these are matched across snapshots and the old name is returned in `previousName`.
- **Price and specs**: OpenRouter model ID, input and output price per 1M tokens, and context length for each ranked model.
- **New releases**: models added to OpenRouter in the last N days with price, context, modalities, tool and reasoning support, and Arena rank when ranked.
- **Trending**: the hottest open-weight models on Hugging Face, with trending score, likes, downloads, task and license.

### How to use

1. Pick **arenas** (default: Text) and **categories** (default: overall). For example, Text + `coding` gives the best coding LLMs.
2. Set **Top N** and how many days back to **compare**.
3. Click **Start**, or **schedule** it daily or weekly and send the results to Slack, Google Sheets, Notion or your newsletter tool.

An empty input returns the Text overall top 20 with weekly movement and prices, the last 14 days of releases, and the top 15 trending Hugging Face models.

### Input example

```json
{
  "sections": ["standings", "releases"],
  "arenas": ["text", "webdev"],
  "categories": ["overall", "coding"],
  "topN": 25,
  "compareDaysAgo": 7,
  "releasesWithinDays": 30
}
```

### Output

**Standing:**

```json
{
  "type": "standing", "arena": "text", "category": "overall", "rank": 1,
  "model": "Gemini 4 Argon (High)", "organization": "google", "license": "Proprietary",
  "score": 1525.7, "scoreLower": 1519.2, "scoreUpper": 1532.3, "votes": 10083,
  "previousRank": 1, "rankChange": 0, "scoreChange": -6.6, "movement": "same", "isNewEntry": false,
  "leaderboardDate": "2026-10-22", "comparedToDate": "2026-10-15",
  "openRouterId": "google/gemini-4-argon", "inputPricePer1M": 2, "outputPricePer1M": 10, "contextLength": 1048576,
  "source": "LMArena (lmarena.ai, CC BY 4.0)"
}
```

**Release:**

```json
{
  "type": "release", "model": "MoonshotAI: Kimi K3.1 Pro", "id": "moonshotai/kimi-k3.1-pro", "provider": "moonshotai",
  "releasedAt": "2026-10-23T17:56:28.000Z", "contextLength": 1048576, "maxOutputTokens": 943718,
  "inputModalities": ["text", "image", "video"], "inputPricePer1M": 2, "outputPricePer1M": 10,
  "supportsTools": true, "supportsReasoning": true, "arenaTextRank": null, "url": "https://openrouter.ai/moonshotai/kimi-k3.1-pro"
}
```

**Trending model:**

```json
{
  "type": "trendingModel", "rank": 1, "model": "deepseek-ai/DeepSeek-V4.1-Flash-1017", "pipelineTag": "image-text-to-text",
  "trendingScore": 2224, "likes": 2617, "downloads": 57715, "license": "mit", "url": "https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash-1017"
}
```

The Output tab has three views: **Standings**, **New releases** and **Trending on Hugging Face**.

### How much does it cost?

Pay per event: **$0.005 per run + $0.001 per row** ($1 per 1,000). No compute charges.

| You get | You pay (Starter/Bronze plan) |
|---|---|
| Default run (20 standings + up to 25 releases + 15 trending) | about $0.065 |
| Daily default run for a month | about $1.95 |
| 4 arenas × 3 categories × top 50 (600 rows) | $0.605 |

Apify's **free plan includes $5 of usage every month**, and free-plan users pay **half price**. Paid plans get volume discounts (Silver -10%, Gold and above -20%).

### Use cases

- **AI newsletters, creators and media**: a weekly "AI power rankings" with movers, new entries and prices, ready to publish.
- **Product and engineering teams**: pick the best model per dollar for coding, writing or vision. Re-check every week.
- **Investors and analysts**: follow which labs gain or lose ground, and how fast new models climb.
- **Model routing and cost dashboards**: feed rank, price and context into a router or a Sheets dashboard.
- **AI agents**: call it through the Apify MCP server to answer "what's the best coding model under $5 per 1M output tokens?".

### Run it from code (API, Python, JavaScript)

```bash
curl -X POST "https://api.apify.com/v2/acts/api-co~ai-model-leaderboard/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" -d '{"sections": ["standings"], "categories": ["coding"], "topN": 10}'
```

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("api-co/ai-model-leaderboard").call(run_input={"arenas": ["text", "webdev"], "topN": 10})
for r in client.dataset(run["defaultDatasetId"]).iterate_items():
    if r["type"] == "standing":
        print(r["arena"], r["rank"], r["model"], r["movement"], r.get("outputPricePer1M"))
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('api-co/ai-model-leaderboard').call({ sections: ['releases'], releasesWithinDays: 7 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

### FAQ

**Where does the leaderboard data come from? Can I republish it?**
From LMArena's official leaderboard dataset on Hugging Face (`lmarena-ai/leaderboard-dataset`). It is updated about daily and licensed **CC BY 4.0**, so you can republish it as long as you credit LMArena. Every standing row includes a `source` field for that. Earlier snapshots are read from the dataset's version history, and that history is how the rank changes are calculated.

**How are prices matched?**
Model names are normalized (provider prefix and effort labels such as "(High)" or "(Max)" are removed) and matched to OpenRouter model names. When there is no confident match, `openRouterId` is `null` instead of a guess. This is common for image and video models that OpenRouter does not list. Prices are OpenRouter's list prices in USD per 1M tokens.

**Why do some models appear twice, e.g. "(High)" and "(Max)"?**
LMArena ranks each reasoning-effort setting separately. Both rows map to the same API model and price.

**What does "Text, style control" mean?**
A version of the Text leaderboard that adjusts for answer length and formatting, so models can't win just by writing longer or prettier answers.

**How often does it update?**
LMArena publishes new standings about once a day (some arenas less often). OpenRouter and Hugging Face data are live. A daily schedule is enough.

**What is the Agent arena score?**
The Agent arena uses a different scale (a small decimal win-rate style score), so compare it only within that arena.

### Related Actors

- [Agent Skills & MCP Server Directory](https://apify.com/api-co/agent-skills-mcp-directory): the most-installed agent skills and MCP servers.
- [AI Bot Analytics & AI Crawler Checker](https://apify.com/api-co/ai-bot-analytics): which AI bots visit your website.
- [Academic Papers Search](https://apify.com/api-co/academic-papers-search): find the papers behind the models.

# Actor input Schema

## `sections` (type: `array`):

Default: all three.

## `arenas` (type: `array`):

Which LMArena leaderboards to read. Default: Text.

## `categories` (type: `array`):

Leaderboard categories, e.g. 'overall', 'coding', 'math', 'creative_writing', 'hard_prompts', 'instruction_following', 'multi_turn', 'longer_query', 'expert', 'english', 'spanish', 'chinese'. Image arenas have 'photorealistic', 'portraits', 'text_rendering'; WebDev has 'webdev-react', 'webdev-html'. If a category does not exist in an arena, the error row lists the ones that do.

## `topN` (type: `integer`):

How many ranked models to return per arena and category.

## `compareDaysAgo` (type: `integer`):

Adds previous rank, rank change, score change and new entries versus the leaderboard published N days earlier. 0 turns it off.

## `matchOpenRouterPrices` (type: `boolean`):

Matches each ranked model with OpenRouter and adds input and output price per 1M tokens, context length and the model ID.

## `releasesWithinDays` (type: `integer`):

Models added to OpenRouter in this window, newest first.

## `maxReleases` (type: `integer`):

0 skips releases.

## `trendingLimit` (type: `integer`):

How many trending models to return. 0 skips them.

## `trendingPipeline` (type: `string`):

Only trending models for this task.

## `maxItems` (type: `integer`):

Stop after this many rows. You are only charged per row.

## Actor input object example

```json
{
  "sections": [
    "standings",
    "releases",
    "trending"
  ],
  "arenas": [
    "text"
  ],
  "categories": [
    "overall"
  ],
  "topN": 20,
  "compareDaysAgo": 7,
  "matchOpenRouterPrices": true,
  "releasesWithinDays": 14,
  "maxReleases": 25,
  "trendingLimit": 15,
  "trendingPipeline": "all",
  "maxItems": 500
}
```

# Actor output Schema

## `results` (type: `string`):

Standings, releases and trending models.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("api-co/ai-model-leaderboard").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("api-co/ai-model-leaderboard").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call api-co/ai-model-leaderboard --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,api-co/ai-model-leaderboard"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kUmBtTT1V9RJRAs9Q/builds/V8gYx1MidQMuSihkb/openapi.json
