Lichess

Open chess data — players, games and puzzles

🎮 GamesUNMONITORED
AUTH NONECORS AGENT ?HTTPS COMMERCIAL ?

Lichess exposes profiles, ratings, game exports (PGN/JSON) and tournaments through a public API. Many read endpoints need no token (one raises rate limits and unlocks account routes). The go-to open alternative to Chess.com for chess tooling.

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://lichess.org/api/user/thibault

{
  "id": "thibault",
  "username": "thibault",
  "perfs": {
    "ultraBullet": {
      "games": 3,
      "rating": 1688,
      "rd": 359,
      "prog": 0,
      "prov": true
    },
    "bullet": {
      "games": 7482,
      "rating": 1785,
      "rd": 92,
      "prog": 12
    },
    "blitz": {
      "games": 11625,
      "rating": 1760,
      "rd": 51,
      "prog": -31
    },
    "rapid": {
      "games": 912,
      "rating": 1814,
      "rd": 58,
      "prog": -74
    },
    "classical": {
      "games": 25,
      "rating": 1858,
      "rd": 244,
      "prog": 48,
      "prov": true
    },
    "correspondence": {
      "games": 377,
      "rating": 1942,
      "rd": 169,
      "prog": -12,
      "prov": true
    },
    "chess960": {
      "games": 348,
      "rating": 1551,
      "rd": 267,
      "prog": 61,
      "prov": true
    },
    "kingOfTheHill": {
      "games": 94,
      "rating": 1744,
      "rd": 287,
      "prog": 14,
      "prov": true
    }
  },
  "flair": "nature.seedling",
  "patron": true,
  "patronColor": 10,
  "verified": true,
  "createdAt": 1290415680000
}
Call itcurl · fetch · python
curl "https://lichess.org/api/user/thibault"
const res = await fetch("https://lichess.org/api/user/thibault");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://lichess.org/api/user/thibault")
print(res.json())
Endpoints · 6On scheduleFULL DOCS ↗
On schedule — GET /user/thibault awaits first probe
GET/user/thibaultPROBED

Open chess data — players, games and puzzles

GET/user

Single user profile.

GET/user/1

User details by ID (example: 1).

GET/user?limit=10

Single user profile.

GET/user/search?q=test

Search by query parameters.

GET/api/assets/index-7o4Qoux5.js

Index 7o4Qoux5 Js — documented GET route.

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

Lichess: common questions

Is Lichess free to use?

Yes — Lichess is a free games API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.

Does Lichess need an API key?

No — Lichess needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).

Can I call Lichess from the browser?

Yes — Lichess returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.

Is Lichess up right now?

Lichess is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.