Chess Leaderboard Comparator (Lichess)
Pricing
Pay per event
Chess Leaderboard Comparator (Lichess)
Compare Lichess top-player leaderboards across time controls - top rating, title density, and rating spread, ranked side by side.
Pricing
Pay per event
Rating
0.0
(0)
Developer
saint person
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
♟️ Chess Leaderboard Comparator (Lichess)
🚀 Compare chess leaderboards across time controls in one run. Top rating, title density, and competitiveness - not a single-leaderboard dump.
🕒 Last updated: 2026-07-11 · 📊 8 fields per category · Built on Lichess's official public API (no key)
🎁 Try it free: the free Apify plan returns up to 10 results per run - enough to see the output quality. Any paid Apify plan unlocks full-size runs.
Give it a list of time controls (bullet, blitz, rapid, classical, and more) and it pulls Lichess's official top-player leaderboard for each, then computes rating spread and titled-player density - so you can see bullet is the most title-dense and highest-rated format while classical has fewer titled players near the top, instead of checking four separate leaderboard pages.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Chess content creators, streamers, coaches, chess platforms/tools | Format-popularity research, streaming content ideas, competitive-scene analysis, coaching content |
📋 What this Actor does
- Fetches Lichess's official top-player leaderboard per time control/variant you list
- Computes the rating gap between #1 and the last sampled player (competitiveness signal)
- Counts titled players (GM, IM, FM, etc.) among the sample (title-density signal)
- Returns the #1 player and a ranked sample list
💡 Why it matters: raw top ratings look similar across formats, but title density and rating spread reveal which format actually draws the deepest competitive field.
🎬 Full demo
🚧 Video walkthrough coming soon - the Quick Start below takes under 3 minutes end to end.
⚙️ Input
| Input | Type | Default | Behavior |
|---|---|---|---|
categories | string | (prefilled) | Comma-separated Lichess categories, up to 10 |
maxResults | integer | 20 | Players sampled per category (5-200) |
Example: Compare the 4 classic time controls
{ "categories": "bullet, blitz, rapid, classical", "maxResults": 20 }
Example: Variant chess comparison
{ "categories": "chess960, crazyhouse, atomic, horde", "maxResults": 15 }
⚠️ Good to know: valid categories are bullet, blitz, rapid, classical, chess960, crazyhouse, antichess, atomic, horde, kingOfTheHill, racingKings, threeCheck, ultraBullet (exact Lichess spelling/casing).
📊 Output
Each category returns 8 fields. Download as CSV, Excel, JSON, or XML, or consume via the Apify API.
🧾 Schema
| Field | Type | Example |
|---|---|---|
| category | string | blitz |
| playersSampled | integer | 20 |
| topPlayerUsername / topRating | string / integer | FunctionJunkie / 2995 |
| avgTopNRating | number | 2911.1 |
| ratingSpread | integer | 123 |
| titledPlayerCount | integer | 13 |
| sampleTopPlayers | array | ["FunctionJunkie", "Ediz_Gurel"] |
| generatedAt | string | 2026-07-11T00:04:30Z |
📦 Sample record
{"category":"blitz","playersSampled":20,"topPlayerUsername":"FunctionJunkie","topRating":2995,"avgTopNRating":2911.1,"ratingSpread":123,"titledPlayerCount":13,"sampleTopPlayers":["FunctionJunkie","Ediz_Gurel"],"generatedAt":"2026-07-11T00:04:30Z"}
✨ Why choose this Actor
| Capability | |
|---|---|
| 🏆 | Competitiveness, not just rank. Rating spread and title density, not a raw top-20 list. |
| ♟️ | Multi-format in one run. Compare up to 10 time controls/variants side by side. |
| ⚡ | Built on Lichess's official API. Free, no key - stable and durable. |
| 🔁 | Automatic retries. Transient failures retry with backoff. |
| 💳 | Pay per result. No subscription. A typical 4-category run costs about $0.03. |
📊 Turns 4 manual leaderboard checks into 1 ranked table.
📈 How it compares to alternatives
| Approach | Cost | Coverage | Refresh | Setup |
|---|---|---|---|---|
| ⭐ Chess Leaderboard Comparator (this Actor) | $5 free credit, then pay-per-use | Any category, up to 10 per run | Live per run | ⚡ 2 min |
| Browsing lichess.org/player leaderboards manually | Free | One category at a time | Live | 🐢 Manual, one by one |
| Chess.com leaderboards | Free | One category, different platform | Live | 🐢 No cross-format comparison |
| Manual copy-paste | Free | Current session only | One-shot | 🐢 Hours of clicking |
Pick this Actor when you want a ranked, multi-format leaderboard view without checking each one individually.
🚀 How to use
- 📝 Sign up. Create a free Apify account with $5 credit (takes 2 minutes).
- 🌐 Open the Actor. Go to the Chess Leaderboard Comparator page on the Apify Store.
- ✏️ Set your input. List your time controls - or just press Start, the prefilled example works.
- 🚀 Run it. Watch results stream into the Dataset tab.
- 📥 Download. Grab results as CSV, Excel, JSON, or XML - or pipe them anywhere via the Apify API.
⏱️ Total time from signup to downloaded dataset: 3-5 minutes. No coding required.
💼 Business use cases
- Chess content creators: find which format has the most compelling competitive story right now.
- Streamers: back a "who's really the best" video with real rating-spread data.
- Coaches: show students real title-density data across formats.
- Chess platforms/tools: benchmark against Lichess's public leaderboards.
🌟 Beyond business use cases
- 🎓 Research & academia - competitive gaming and rating-system studies.
- 🎨 Personal & creative - chess newsletter or YouTube content research.
- 🤝 Non-profit & civic - chess education and outreach program research.
- 🧪 Experimentation - prototype a chess-analytics dashboard on real data.
🔌 Automating Chess Leaderboard Comparator
Node.js (apify-client on NPM):
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('saint_person/lichess-leaderboard-comparator').call({ categories: "bullet, blitz, rapid, classical", maxResults: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python (apify-client on PyPI):
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('saint_person/lichess-leaderboard-comparator').call(run_input={"categories": "bullet, blitz, rapid, classical", "maxResults": 20})items = client.dataset(run['defaultDatasetId']).list_items().items
📚 Full Apify API documentation
Apify Schedules triggers this Actor on any cron interval - weekly for a standing leaderboard watch.
🧠 Use via MCP (for AI agents)
Chess Leaderboard Comparator is directly callable by any MCP-compatible AI agent (Claude, ChatGPT, Cursor, and others) through Apify's hosted MCP server - no custom integration code needed.
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/sse?actors=saint_person/lichess-leaderboard-comparator","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Once connected, just ask your agent something like: "Use the Chess Leaderboard Comparator Actor to tell me which time control has the deepest competitive field right now."
🤖 Ask an AI assistant about this Actor
- 💬 ChatGPT
- 🧠 Claude
- 🔍 Perplexity
❓ Frequently Asked Questions
🧩 How does it work?
It calls Lichess's official top-player leaderboard endpoint per category, then computes rating spread and titled-player count across the sample.
Why Lichess and not Chess.com?
Lichess publishes a fully open, unauthenticated public API for leaderboards - no key, no rate-limit friction, ideal for a durable Actor.
What does "ratingSpread" tell me?
The rating gap between #1 and the last sampled player. A smaller spread means the format is more tightly contested at the top.
⏰ Can I schedule regular runs?
Yes. Use Apify Schedules to run this Actor on any cron interval.
⚖️ Is this data legal to collect?
This Actor only collects data that is publicly accessible via Lichess's free API. No login, no bypass of access controls.
💳 Do I need a paid Apify plan?
No. The free Apify plan is enough for testing and small runs.
🔁 What happens if a run fails?
Transient errors retry automatically with backoff. If a run still fails, the log explains exactly why.
🆘 What if I need help?
Open an issue on this Actor's Issues tab.
🔌 Integrate with any app
🔗 Recommended Actors
Pairs well with Steam Player Count Ranker for cross-platform gaming-popularity comparisons.
💡 Pro tip: browse the complete saint_person collection for more tools like this.
🆘 Help & custom requests
- 🐛 Something not working? Open an issue on this Actor's Issues tab.
- 🛠️ Need a custom feature or a different data source? Open an issue describing what you need.
⚠️ Disclaimer: this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Lichess. All trademarks are the property of their respective owners. Only publicly available data is collected.