Lichess Scraper - Player Profiles, Ratings & Leaderboards
Pricing
from $0.50 / 1,000 results
Lichess Scraper - Player Profiles, Ratings & Leaderboards
$0.5/1K ๐ฅ Lichess scraper! Player profiles, ratings, stats & leaderboards. No key. JSON, CSV, Excel or API in seconds. Power chess analytics, apps & dashboards โก
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
ninhothedev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Lichess Scraper โ Player Profiles, Ratings, Stats & Leaderboards
Scrape Lichess player data and top leaderboards straight from the public Lichess API โ no API key, no login, no cookies. Feed it a list of usernames to get full profiles (ratings across every time control, game counts, win/loss/draw, play time, FIDE rating, country) or pull the top players for any perf type.
Fast, cheap, and structured. Great for chess analytics, player research, coaching dashboards, and powering your own chess apps.
Estimated cost: ~$0.50 per 1,000 records on the Apify platform.
Features
- ๐ค Player profiles โ resolve any list of usernames into clean, flat rows.
- ๐ Leaderboards โ top N players for bullet, blitz, rapid, or classical.
- โ๏ธ All ratings โ bullet, blitz, rapid, classical, and puzzle in one row.
- ๐ Full stats โ total games, wins, losses, draws, play time (hours).
- ๐ Profile extras โ country and FIDE rating when available.
- ๐ Clean timestamps โ account created + last seen as ISO-8601 UTC.
- ๐ No key required โ public API, Chrome-impersonated requests with a urllib fallback.
Use cases
- Chess analytics โ track rating trends and activity across many players.
- Player research โ build datasets of GMs, IMs, and rising talents.
- Leaderboards โ snapshot the current top of any time control.
- Chess apps โ power profile lookups and rankings in your own product.
Input
| Field | Type | Description |
|---|---|---|
mode | select | players (usernames โ profiles) or leaderboard (top players). Default players. |
usernames | array | Lichess usernames to scrape in players mode. Prefilled with DrNykterstein, penguingm1. |
perfType | select | Rating category for leaderboard mode: bullet / blitz / rapid / classical. Default blitz. |
count | integer | How many top players to fetch (1โ200). Default 50. |
maxItems | integer | Hard cap on output records (1โ2000). Default 200. |
Example โ player profiles
{"mode": "players","usernames": ["DrNykterstein", "penguingm1"],"maxItems": 200}
Example โ leaderboard
{"mode": "leaderboard","perfType": "bullet","count": 50}
Output
Player record (mode: players):
{"username": "DrNykterstein","title": "GM","country": "NO","fide_rating": 2839,"bullet_rating": 3243,"blitz_rating": 3153,"rapid_rating": 2500,"classical_rating": 2500,"puzzle_rating": 2812,"total_games": 10450,"wins": 7207,"losses": 2409,"draws": 834,"play_time_hours": 325,"created_at": "2018-12-06T...","seen_at": "2026-...","url": "https://lichess.org/@/DrNykterstein","source": "lichess","scraped_at": "2026-..."}
Leaderboard record (mode: leaderboard):
{"type": "leaderboard","perf": "bullet","rank": 1,"username": "mraquariyaz67","title": "GM","rating": 3407,"source": "lichess","scraped_at": "2026-..."}
All fields are nullable โ missing data comes back as null rather than breaking the run.
How it works
The Actor calls the official public Lichess endpoints:
GET /api/user/{username}for profilesGET /api/player/top/{count}/{perfType}for leaderboards
Requests use curl_cffi with Chrome impersonation and automatically fall back to urllib if needed. Usernames are fetched in batches and deduplicated.
Related Actors
FAQ
Do I need a Lichess API key? No. All endpoints used are public.
Is this affiliated with Lichess? No. Lichess is a trademark of its owners; this is an independent tool built on their open API. Please respect the Lichess Terms of Service.
What if a username doesn't exist? It's skipped with a warning; the run continues.