Chess.com
App · Gaming · 16 actions
Access public Chess.com data through the keyless PubAPI: player profiles and stats, games and PGN archives, clubs, tournaments, titled players, leaderboards, streamers, and the daily puzzle. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Get club members | List a club's members, grouped by how recently they were active (weekly, monthly, and all-time). |
| Get club profile | Retrieve a club's public details: name, member count, average rating, and admins. |
| Get country players | List the usernames of recently active Chess.com players who identify with a given country. |
| Get country profile | Look up a country's Chess.com profile by ISO code. |
| Get current daily games | List the player's Daily (correspondence) games that are currently in progress. |
| Get daily puzzle | Fetch the current Daily Puzzle, or a random puzzle from the archive when Random is enabled. |
| Get leaderboards | Retrieve the top-50 leaderboards across every category (daily, live rapid/blitz/bullet, tactics, and more). |
| Get monthly games | Retrieve every finished game a player completed in a given month, including PGN, ratings, and results. |
| Get player clubs | List the Chess.com clubs a player belongs to. |
| Get player profile | Look up a Chess.com member's public profile: name, title, country, follower count, and account status. |
| Get player stats | Retrieve a player's rating, best rating, and win/loss/draw record across each game type (rapid, blitz, bullet, daily, tactics, and puzzle rush). |
| Get player tournaments | List the tournaments a player has joined, grouped into finished, in-progress, and registered. |
| Get streamers | List Chess.com streamers along with their live status and streaming-platform links. |
| Get titled players | List the usernames of every player holding a given chess title (for example, GM or WIM). |
| Get tournament | Retrieve a tournament's details, settings, standings, and rounds. |
| List monthly game archives | Get the list of monthly archive URLs available for a player. |
Get club members
List a club's members, grouped by how recently they were active (weekly, monthly, and all-time).
Inputs
- Club URL ID
club_idtextRequired - The club's URL ID, the slug at the end of its chess.com/club/ address (for example, san-francisco-mechanics-uscl). The full club URL works too, such as the url Get player clubs returns.
Outputs
membersobject- Each member appears in one list, by how recently they were active in the club.
Example output
{
"members": {
"all_time": [
{
"joined": 1500000000,
"username": "player_three"
}
],
"monthly": [
{
"joined": 1700000000,
"username": "player_two"
}
],
"weekly": [
{
"joined": 1710000000,
"username": "player_one"
}
]
}
}Get club profile
Retrieve a club's public details: name, member count, average rating, and admins.
Inputs
- Club URL ID
club_idtextRequired - The club's URL ID, the slug at the end of its chess.com/club/ address (for example, san-francisco-mechanics-uscl). The full club URL works too, such as the url Get player clubs returns.
Outputs
clubobject- admin lists the admins' profile URLs; created and last_activity are Unix timestamps in seconds.
Example output
{
"club": {
"@id": "https://api.chess.com/pub/club/chess-com-developer-community",
"average_daily_rating": 1300,
"club_id": 57796,
"country": "https://api.chess.com/pub/country/XX",
"created": 1400000000,
"description": "For developers building on the Chess.com API.",
"icon": "https://images.chesscomfiles.com/uploads/club/icon.png",
"join_request": "https://www.chess.com/club/chess-com-developer-community/join",
"last_activity": 1717000000,
"members_count": 5200,
"name": "Chess.com Developer Community",
"url": "https://www.chess.com/club/chess-com-developer-community",
"visibility": "public"
}
}Get country players
List the usernames of recently active Chess.com players who identify with a given country. Chess.com caps the list at 10,000, so it isn't a full roster.
Inputs
- Country ISO code
iso_codetextRequired - The 2-letter country code (for example, US, GB, or IN), or a country URL such as a player profile's country. Chess.com also uses XE for England, XS for Scotland, XW for Wales, and XX for International.
Outputs
playersobject
Example output
{
"players": {
"players": [
"hikaru",
"sample_player_2",
"sample_player_3"
]
}
}Get country profile
Look up a country's Chess.com profile by ISO code.
Inputs
- Country ISO code
iso_codetextRequired - The 2-letter country code (for example, US, GB, or IN), or a country URL such as a player profile's country. Chess.com also uses XE for England, XS for Scotland, XW for Wales, and XX for International.
Outputs
countryobject
Example output
{
"country": {
"@id": "https://api.chess.com/pub/country/US",
"code": "US",
"name": "United States"
}
}Get current daily games
List the player's Daily (correspondence) games that are currently in progress.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
gamesobject
Example output
{
"games": {
"games": [
{
"black": "https://api.chess.com/pub/player/magnuscarlsen",
"fen": "r1bqkbnr/pppp1ppp/2n5/...",
"last_activity": 1717000000,
"move_by": 1717100000,
"pgn": "[Event \"Let's Play!\"]\\n...",
"rated": true,
"time_control": "1/86400",
"turn": "black",
"url": "https://www.chess.com/game/daily/123456789",
"white": "https://api.chess.com/pub/player/hikaru"
}
]
}
}Get daily puzzle
Fetch the current Daily Puzzle, or a random puzzle from the archive when Random is enabled.
Inputs
- Random
randomtrue/false - Set to true to fetch a random puzzle instead of today's Daily Puzzle.Default:
false.
Outputs
puzzleobject- publish_time is a Unix timestamp in seconds.
Example output
{
"puzzle": {
"fen": "6k1/5ppp/8/8/8/8/5PPP/4R1K1 w - - 0 1",
"image": "https://www.chess.com/dynboard?fen=...",
"pgn": "[Event \"Daily Puzzle\"]\\n...",
"publish_time": 1717000000,
"title": "Mate in Two",
"url": "https://www.chess.com/forum/view/daily-puzzles/example"
}
}Get leaderboards
Retrieve the top-50 leaderboards across every category (daily, live rapid/blitz/bullet, tactics, and more).
Inputs
None.
Outputs
leaderboardsobject- Each board lists its top 50 players, best first.
Example output
{
"leaderboards": {
"daily": [],
"live_blitz": [
{
"@id": "https://api.chess.com/pub/player/hikaru",
"player_id": 15448422,
"rank": 1,
"score": 3312,
"url": "https://www.chess.com/member/Hikaru",
"username": "hikaru"
}
],
"live_bullet": [],
"live_rapid": [],
"tactics": []
}
}Get monthly games
Retrieve every finished game a player completed in a given month, including PGN, ratings, and results.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
- Year
yearnumberRequired - The 4-digit year of the archive (for example, 2024).From 2007 to 2100.
- Month
monthnumberRequired - The month number, 1 (January) through 12 (December).From 1 to 12.
Outputs
gamesobject
Example output
{
"games": {
"games": [
{
"black": {
"rating": 2755,
"result": "checkmated",
"username": "opponent"
},
"eco": "https://www.chess.com/openings/Sicilian-Defense",
"end_time": 1704067200,
"pgn": "[Event \"Live Chess\"]\\n...",
"rated": true,
"rules": "chess",
"time_class": "rapid",
"time_control": "600",
"url": "https://www.chess.com/game/live/987654321",
"white": {
"rating": 2801,
"result": "win",
"username": "hikaru"
}
}
]
}
}Get player clubs
List the Chess.com clubs a player belongs to.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
clubsobject
Example output
{
"clubs": {
"clubs": [
{
"@id": "https://www.chess.com/club/chess-com-developer-community",
"icon": "https://images.chesscomfiles.com/uploads/club/icon.png",
"joined": 1500000000,
"last_activity": 1717000000,
"name": "Chess.com Developer Community",
"url": "https://www.chess.com/club/chess-com-developer-community"
}
]
}
}Get player profile
Look up a Chess.com member's public profile: name, title, country, follower count, and account status.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
profileobject- country is the URL of the player's country profile; joined and last_online are Unix timestamps in seconds.
Example output
{
"profile": {
"@id": "https://api.chess.com/pub/player/hikaru",
"country": "https://api.chess.com/pub/country/US",
"followers": 1129950,
"is_streamer": true,
"joined": 1389043258,
"last_online": 1717000000,
"location": "Sunrise, FL",
"name": "Hikaru Nakamura",
"player_id": 15448422,
"status": "premium",
"title": "GM",
"url": "https://www.chess.com/member/Hikaru",
"username": "hikaru",
"verified": false
}
}Get player stats
Retrieve a player's rating, best rating, and win/loss/draw record across each game type (rapid, blitz, bullet, daily, tactics, and puzzle rush).
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
statsobject- One entry per game type the player has played; a type they haven't played is absent.
Example output
{
"stats": {
"chess_blitz": {
"last": {
"date": 1717000000,
"rating": 3201,
"rd": 27
},
"record": {
"draw": 2500,
"loss": 4210,
"win": 20345
}
},
"chess_bullet": {
"last": {
"date": 1717000000,
"rating": 3312,
"rd": 22
},
"record": {
"draw": 1500,
"loss": 8123,
"win": 40012
}
},
"chess_rapid": {
"best": {
"date": 1651000000,
"rating": 2909
},
"last": {
"date": 1717000000,
"rating": 2789,
"rd": 45
},
"record": {
"draw": 180,
"loss": 210,
"win": 1234
}
}
}
}Get player tournaments
List the tournaments a player has joined, grouped into finished, in-progress, and registered.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
tournamentsobject- Each entry's url can be passed as the Tournament URL ID of Get tournament.
Example output
{
"tournaments": {
"finished": [
{
"@id": "https://api.chess.com/pub/tournament/example",
"draws": 1,
"losses": 1,
"placement": 2,
"points_awarded": 7,
"status": "finished",
"total_players": 24,
"url": "https://www.chess.com/tournament/live/example",
"wins": 3
}
],
"in_progress": [],
"registered": []
}
}Get streamers
List Chess.com streamers along with their live status and streaming-platform links.
Inputs
None.
Outputs
streamersobject
Example output
{
"streamers": {
"streamers": [
{
"avatar": "https://images.chesscomfiles.com/uploads/v1/user/avatar.png",
"is_community_streamer": true,
"is_live": true,
"twitch_url": "https://twitch.tv/gmhikaru",
"url": "https://www.chess.com/member/Hikaru",
"username": "hikaru"
}
]
}
}Get titled players
List the usernames of every player holding a given chess title (for example, GM or WIM).
Inputs
- Title
titletextRequired - The title abbreviation: GM, WGM, IM, WIM, FM, WFM, NM, WNM, CM, or WCM.One of:
GM,WGM,IM,WIM,FM,WFM,NM,WNM,CM,WCM.
Outputs
playersobject
Example output
{
"players": {
"players": [
"hikaru",
"magnuscarlsen",
"fabianocaruana",
"gothamchess"
]
}
}Get tournament
Retrieve a tournament's details, settings, standings, and rounds.
Inputs
- Tournament URL ID
tournament_idtextRequired - The tournament's URL ID, the slug at the end of its chess.com/tournament/ address. The full tournament URL works too, such as the url Get player tournaments returns.
Outputs
tournamentobject- settings holds the format (type, rules, time_class, time_control, total_rounds, and so on); start_time and finish_time are Unix timestamps in seconds.
Example output
{
"tournament": {
"@id": "https://api.chess.com/pub/tournament/monthly-blitz-championship",
"name": "Monthly Blitz Championship",
"players": [
{
"status": "winner",
"username": "winner"
},
{
"status": "eliminated",
"username": "runner_up"
}
],
"rounds": [
"https://api.chess.com/pub/tournament/monthly-blitz-championship/1"
],
"settings": {
"rules": "chess",
"time_class": "blitz",
"time_control": "180",
"total_rounds": 9,
"type": "swiss"
},
"start_time": 1704067200,
"status": "finished",
"url": "https://www.chess.com/tournament/live/monthly-blitz-championship"
}
}List monthly game archives
Get the list of monthly archive URLs available for a player. Each URL points to that month's finished games.
Inputs
- Username
usernametextRequired - The player's Chess.com username (for example, hikaru). A player URL works too, such as a leaderboard entry's url or a game's white or black player.
Outputs
archivesobject
Example output
{
"archives": {
"archives": [
"https://api.chess.com/pub/player/hikaru/games/2024/01",
"https://api.chess.com/pub/player/hikaru/games/2024/02",
"https://api.chess.com/pub/player/hikaru/games/2024/03"
]
}
}