Lichess Scraper - Player Profiles, Ratings & Leaderboards avatar

Lichess Scraper - Player Profiles, Ratings & Leaderboards

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Lichess Scraper - Player Profiles, Ratings & Leaderboards

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

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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

FieldTypeDescription
modeselectplayers (usernames โ†’ profiles) or leaderboard (top players). Default players.
usernamesarrayLichess usernames to scrape in players mode. Prefilled with DrNykterstein, penguingm1.
perfTypeselectRating category for leaderboard mode: bullet / blitz / rapid / classical. Default blitz.
countintegerHow many top players to fetch (1โ€“200). Default 50.
maxItemsintegerHard 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 profiles
  • GET /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.



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.