BYTETOOLS

Chess.com Published Data API

Free Chess.com published-data API with no key: player profiles, ratings, monthly game archives, clubs, tournaments and daily puzzles. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the Chess.com Published Data API?

The Chess.com Published-Data API is a free, key-free API providing public player profiles, rating statistics, monthly game archives in PGN, club and tournament data, and the daily puzzle.

Chess.com is the largest chess platform, and its published-data API exposes everything public about a player: profile, current ratings across time controls, and complete game archives organised by month.

The monthly archive structure is deliberate and worth planning for. You first fetch a list of archive URLs — one per month the player was active — then fetch each. A player active for years means dozens of requests, so cache aggressively.

Quick facts

Base URL
https://api.chess.com/pub
Authentication
No API key required. Chess.com asks for a descriptive User-Agent with contact details.
Rate limit
No published hard limit, but parallel requests to the same endpoint are throttled — serialise them.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Chess.com Published Data API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Fetch a player profile

GET https://api.chess.com/pub/player/hikaru

curl
curl 'https://api.chess.com/pub/player/hikaru'
JavaScript (fetch)
const res = await fetch("https://api.chess.com/pub/player/hikaru");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.chess.com/pub/player/hikaru", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "avatar": "https://images.chesscomfiles.com/uploads/v1/user/15448422.88c010c1.200x200o.3c5619f5441e.png",
  "player_id": 15448422,
  "@id": "https://api.chess.com/pub/player/hikaru",
  "url": "https://www.chess.com/member/Hikaru",
  "name": "Hikaru Nakamura",
  "username": "hikaru",
  "title": "GM",
  "followers": 1406493,
  "country": "https://api.chess.com/pub/country/US",
  "location": "Florida",
  "last_online": 1787160848,
  "joined": 1389043258,
  "status": "premium",
  "is_streamer": true,
  "twitch_url": "https://twitch.tv/gmhikaru",
  "verified": false,
  "league": "Legend",
  "streaming_platforms": [
    {
      "type": "twitch",
      "channel_url": "https://twitch.tv/gmhikaru"
    }
  ]
}

Parameters

ParameterTypeRequiredDescription
player/<username>pathOptionalPlayer profile. player/hikaru
player/<username>/statspathOptionalRatings and records per time control. stats
player/<username>/games/archivespathOptionalList of monthly archive URLs. games/archives
puzzlepathOptionalThe daily puzzle. puzzle

Response fields

player_id / usernameinteger|string
Player identifiers.
titlestring
Chess title such as GM or IM, when held.
followersinteger
Follower count.
countrystring
URL of the country resource — follow it for the name.
statusstring
Account status such as premium or basic.
last_online / joinedinteger
Unix timestamps.

What you can build with the Chess.com Published Data API

  • Track a player's rating progression over time
  • Download and analyse game archives
  • Build a club or tournament leaderboard
  • Embed the daily puzzle in a chess site

Common errors and how to fix them

Parallel requests throttled

Chess.com serialises concurrent requests to the same endpoint.

Fix: Make requests sequentially rather than in parallel, or you will be rate limited.

Country is a URL, not a name

Several fields are resource links.

Fix: Follow the URL to get the country name and code.

Enormous archive lists

One archive per active month.

Fix: Cache aggressively; historical months never change once complete.

Chess.com Published Data API — frequently asked questions

Is the Chess.com API free?

Yes, the published-data API is free with no key. Chess.com asks that you send a descriptive User-Agent with contact details.

How do I download someone's games?

Fetch /games/archives for a list of monthly archive URLs, then request each. A long-active player has many months, so cache — completed months never change.

Why do my parallel requests fail?

Chess.com serialises concurrent requests to the same endpoint and throttles the rest. Make requests sequentially.

How does it compare with the Lichess API?

Chess.com has far more players; Lichess is open source with a more generous API including an opening explorer. Both are free for public data.

Tools that pair with this API

Chess.com Published Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.