Chess.com Players API

Profiles, stats, online state, archives, clubs, matches, tournaments

Operations 12

GET /player/{username} Get Player Profile #
GET /player/{username}/stats Get Player Stats #
GET /player/{username}/is-online Get Player Online Status #
GET /player/{username}/games Get Player Current Daily Games #
GET /player/{username}/games/to-move Get Player Games To Move #
GET /player/{username}/games/archives List Player Game Archives #
GET /player/{username}/games/{year}/{month} Get Player Monthly Archive #
GET /player/{username}/games/{year}/{month}/pgn Get Player Monthly Archive PGN #
GET /player/{username}/clubs Get Player Club Memberships #
GET /player/{username}/matches Get Player Team Matches #
GET /player/{username}/tournaments Get Player Tournaments #
GET /country/{iso}/players List Players By Country #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chess-com-players-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chess-com-players-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chess.com Published Data Clubs Players API
  description: 'Public, read-only REST API exposing Chess.com data: player profiles and stats, monthly game

    archives (JSON and PGN), clubs and members, daily and live team matches, Swiss and round-robin

    tournaments, titled-player lists, country rosters, the daily puzzle, the streamer list, and

    live leaderboards.


    The API is unauthenticated; rate limiting applies to parallel requests (429 Too Many Requests).

    Responses use JSON-LD with ETag, Last-Modified, gzip, and JSONP support. Most endpoints refresh

    at most every 12-24 hours. Clients are encouraged to send a recognizable User-Agent including a

    contact email or URL.

    '
  version: '2026-05-25'
  contact:
    name: Chess.com Support
    url: https://support.chess.com
  x-logo:
    url: https://www.chess.com/favicon.ico
servers:
- url: https://api.chess.com/pub
  description: Chess.com Published Data API
tags:
- name: Players
  description: Profiles, stats, online state, archives, clubs, matches, tournaments
paths:
  /player/{username}:
    get:
      summary: Get Player Profile
      operationId: getPlayerProfile
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Player profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Player'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
  /player/{username}/stats:
    get:
      summary: Get Player Stats
      operationId: getPlayerStats
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Ratings and statistics across time controls and modes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlayerStats'
        '404':
          $ref: '#/components/responses/NotFound'
  /player/{username}/is-online:
    get:
      summary: Get Player Online Status
      operationId: getPlayerOnline
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Online state
          content:
            application/json:
              schema:
                type: object
                properties:
                  online:
                    type: boolean
  /player/{username}/games:
    get:
      summary: Get Player Current Daily Games
      operationId: getPlayerCurrentGames
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: In-progress daily chess games
          content:
            application/json:
              schema:
                type: object
                properties:
                  games:
                    type: array
                    items:
                      $ref: '#/components/schemas/Game'
  /player/{username}/games/to-move:
    get:
      summary: Get Player Games To Move
      operationId: getPlayerGamesToMove
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Daily games waiting on the player to move
          content:
            application/json:
              schema:
                type: object
  /player/{username}/games/archives:
    get:
      summary: List Player Game Archives
      operationId: listPlayerArchives
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: URLs of available monthly archives
          content:
            application/json:
              schema:
                type: object
                properties:
                  archives:
                    type: array
                    items:
                      type: string
                      format: uri
  /player/{username}/games/{year}/{month}:
    get:
      summary: Get Player Monthly Archive
      operationId: getPlayerMonthlyArchive
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      - $ref: '#/components/parameters/Year'
      - $ref: '#/components/parameters/Month'
      responses:
        '200':
          description: All games completed in the given month
          content:
            application/json:
              schema:
                type: object
                properties:
                  games:
                    type: array
                    items:
                      $ref: '#/components/schemas/Game'
  /player/{username}/games/{year}/{month}/pgn:
    get:
      summary: Get Player Monthly Archive PGN
      operationId: getPlayerMonthlyArchivePgn
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      - $ref: '#/components/parameters/Year'
      - $ref: '#/components/parameters/Month'
      responses:
        '200':
          description: All games in the given month as a multi-game PGN stream
          content:
            application/x-chess-pgn:
              schema:
                type: string
  /player/{username}/clubs:
    get:
      summary: Get Player Club Memberships
      operationId: getPlayerClubs
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Clubs the player belongs to
          content:
            application/json:
              schema:
                type: object
  /player/{username}/matches:
    get:
      summary: Get Player Team Matches
      operationId: getPlayerMatches
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Team match participation
          content:
            application/json:
              schema:
                type: object
  /player/{username}/tournaments:
    get:
      summary: Get Player Tournaments
      operationId: getPlayerTournaments
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Tournaments the player has registered for
          content:
            application/json:
              schema:
                type: object
  /country/{iso}/players:
    get:
      summary: List Players By Country
      operationId: listCountryPlayers
      tags:
      - Players
      parameters:
      - $ref: '#/components/parameters/Iso'
      responses:
        '200':
          description: Players for the given country
          content:
            application/json:
              schema:
                type: object
                properties:
                  players:
                    type: array
                    items:
                      type: string
components:
  schemas:
    PlayerStats:
      type: object
      properties:
        chess_daily:
          $ref: '#/components/schemas/RatingProfile'
        chess_rapid:
          $ref: '#/components/schemas/RatingProfile'
        chess_blitz:
          $ref: '#/components/schemas/RatingProfile'
        chess_bullet:
          $ref: '#/components/schemas/RatingProfile'
        tactics:
          type: object
        puzzle_rush:
          type: object
        fide:
          type: integer
    GamePlayer:
      type: object
      properties:
        rating:
          type: integer
        result:
          type: string
          enum:
          - win
          - checkmated
          - agreed
          - repetition
          - timeout
          - resigned
          - stalemate
          - lose
          - insufficient
          - 50move
          - abandoned
          - kingofthehill
          - threecheck
          - bughousepartnerlose
        '@id':
          type: string
          format: uri
        username:
          type: string
    Game:
      type: object
      properties:
        url:
          type: string
          format: uri
        pgn:
          type: string
        time_control:
          type: string
        end_time:
          type: integer
        rated:
          type: boolean
        fen:
          type: string
        time_class:
          type: string
          enum:
          - daily
          - rapid
          - blitz
          - bullet
        rules:
          type: string
          enum:
          - chess
          - chess960
          - bughouse
          - kingofthehill
          - threecheck
          - crazyhouse
        white:
          $ref: '#/components/schemas/GamePlayer'
        black:
          $ref: '#/components/schemas/GamePlayer'
    RatingProfile:
      type: object
      properties:
        last:
          type: object
          properties:
            rating:
              type: integer
            date:
              type: integer
            rd:
              type: integer
        best:
          type: object
        record:
          type: object
          properties:
            win:
              type: integer
            loss:
              type: integer
            draw:
              type: integer
    Player:
      type: object
      properties:
        '@id':
          type: string
          format: uri
        url:
          type: string
          format: uri
        username:
          type: string
        player_id:
          type: integer
        title:
          type: string
        status:
          type: string
        name:
          type: string
        avatar:
          type: string
          format: uri
        location:
          type: string
        country:
          type: string
          format: uri
        joined:
          type: integer
          description: Unix timestamp
        last_online:
          type: integer
        followers:
          type: integer
        is_streamer:
          type: boolean
        twitch_url:
          type: string
          format: uri
        fide:
          type: integer
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
  parameters:
    Year:
      name: year
      in: path
      required: true
      description: Four-digit year
      schema:
        type: string
        pattern: ^[0-9]{4}$
    Iso:
      name: iso
      in: path
      required: true
      description: ISO 3166-1 alpha-2 country code (e.g. US, RU, IN)
      schema:
        type: string
        minLength: 2
        maxLength: 2
    Username:
      name: username
      in: path
      required: true
      description: All-lowercase Chess.com username
      schema:
        type: string
    Month:
      name: month
      in: path
      required: true
      description: Two-digit month
      schema:
        type: string
        pattern: ^(0[1-9]|1[0-2])$
  responses:
    RateLimited:
      description: Too Many Requests — parallel-request throttling
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'