Chess.com API

Beginner's Pick Games & Comics / No Auth Required Beginner HTTPS
Free to Use
89 A
Measured Score 0 50 100 Speed 29/30 Consistency 17/20 Security 20/20 Browser access 15/15 Transparency 8/15 TESTED 2026-08-10

Overview

The Chess.com Published Data API gives you read-only access to public player profiles, game archives, leaderboards, and puzzle data from one of the world's largest chess platforms. No authentication is required — all data is publicly available and returned as JSON. It's a perfect beginner project for building chess stat trackers or analyzing game history.

Beginner Tip

Monthly game archives can be very large; use the archive list endpoint first to get available months, then fetch only the specific month you need.

Measurement Record

What actually happened when we called this API from our own infrastructure. Every value below was recorded by the request, not copied from the provider's documentation.

Request
GET https://api.chess.com/pub/player/hikaru
Result
HTTP 200 · application/json · 611 bytes · compressed
Response time
31 ms (median of 3) · fastest 28 ms
Transport
TLSv1.3 · TLS_AES_256_GCM_SHA384 · certificate issued by Google Trust Services
Browser CORS
Allowed — Access-Control-Allow-Origin: *
Served by
cloudflare
Recorded
2026-08-10

Fields Returned

Top-level fields present in the response we captured, with the type and value we actually received.

Field Type Value received
avatar string (url) https://images.chesscomfiles.com/uploads/v1/u…
player_id integer 15448422
@id string (url) https://api.chess.com/pub/player/hikaru
url string (url) https://www.chess.com/member/Hikaru
name string Hikaru Nakamura
username string hikaru
title string GM
followers integer 1404811
country string (url) https://api.chess.com/pub/country/US
location string Florida
last_online integer 1786366884
joined integer 1389043258
status string premium
is_streamer boolean true

Captured Response

Captured from a real request to https://api.chess.com/pub/player/hikaru on 2026-08-10. Long arrays and nested objects are truncated to keep the shape readable.

JSON Response · Captured
{
  "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": 1404811,
  "country": "https://api.chess.com/pub/country/US",
  "location": "Florida",
  "last_online": 1786366884,
  "joined": 1389043258,
  "status": "premium",
  "is_streamer": true,
  "…": "(4 more fields)"
}

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "https://api.chess.com/pub/player/hikaru/stats";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

How This API Fails

We deliberately sent this API a broken request and recorded exactly what came back on 2026-08-10. Knowing the shape of an error before you hit it makes error handling much easier to write.

HTTP 404 Requesting a path that does not exist application/json
{
  "code": 0,
  "message": "Data provider not found for key \"/pub/player/hikaru/apisscore-nonexistent-path\"."
}

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

404 Not Found for player The username is case-sensitive and must be the exact Chess.com username.
Double-check the player's username on Chess.com; usernames are lowercase on the platform.
Slow response for game archive Monthly archives for active players can contain thousands of games.
Request only the specific month you need (e.g. /games/2024/01) rather than fetching all archives at once.
CORS error in browser The Chess.com API does not set permissive CORS headers for all endpoints.
Make requests from a server-side environment (Node.js, Python) rather than directly from a browser.

Measured Score Breakdown

Live HTTP request to the API endpoint

Speed 29/30
Consistency 17/20
Security 20/20
Browser access 15/15
Transparency 8/15
Endpoint Response Time 31ms

Fully tested on Aug 10, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS UNKNOWN
Category Games & Comics
Difficulty Beginner
Endpoint last called: 2026-08-10

Related Tags

Similar APIs

View All →