Chess.com Clubs API

Club profiles, members, and team matches

Operations 5

GET /player/{username}/clubs Get Player Club Memberships #
GET /club/{url-ID} Get Club Profile #
GET /club/{url-ID}/members Get Club Members #
GET /club/{url-ID}/matches Get Club Matches #
GET /country/{iso}/clubs List Clubs 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-clubs-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-clubs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chess.com Published Data Clubs 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: Clubs
  description: Club profiles, members, and team matches
paths:
  /player/{username}/clubs:
    get:
      summary: Get Player Club Memberships
      operationId: getPlayerClubs
      tags:
      - Clubs
      parameters:
      - $ref: '#/components/parameters/Username'
      responses:
        '200':
          description: Clubs the player belongs to
          content:
            application/json:
              schema:
                type: object
  /club/{url-ID}:
    get:
      summary: Get Club Profile
      operationId: getClub
      tags:
      - Clubs
      parameters:
      - $ref: '#/components/parameters/ClubUrlId'
      responses:
        '200':
          description: Club profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Club'
  /club/{url-ID}/members:
    get:
      summary: Get Club Members
      operationId: getClubMembers
      tags:
      - Clubs
      parameters:
      - $ref: '#/components/parameters/ClubUrlId'
      responses:
        '200':
          description: Club members grouped by activity level
          content:
            application/json:
              schema:
                type: object
                properties:
                  weekly:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClubMember'
                  monthly:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClubMember'
                  all_time:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClubMember'
  /club/{url-ID}/matches:
    get:
      summary: Get Club Matches
      operationId: getClubMatches
      tags:
      - Clubs
      parameters:
      - $ref: '#/components/parameters/ClubUrlId'
      responses:
        '200':
          description: Team matches for the club
          content:
            application/json:
              schema:
                type: object
  /country/{iso}/clubs:
    get:
      summary: List Clubs By Country
      operationId: listCountryClubs
      tags:
      - Clubs
      parameters:
      - $ref: '#/components/parameters/Iso'
      responses:
        '200':
          description: Clubs for the given country
          content:
            application/json:
              schema:
                type: object
                properties:
                  clubs:
                    type: array
                    items:
                      type: string
components:
  parameters:
    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
    ClubUrlId:
      name: url-ID
      in: path
      required: true
      description: Club URL-ID slug from chess.com/club/{url-ID}
      schema:
        type: string
    Username:
      name: username
      in: path
      required: true
      description: All-lowercase Chess.com username
      schema:
        type: string
  schemas:
    ClubMember:
      type: object
      properties:
        username:
          type: string
        joined:
          type: integer
    Club:
      type: object
      properties:
        '@id':
          type: string
        name:
          type: string
        club_id:
          type: integer
        country:
          type: string
        average_daily_rating:
          type: integer
        members_count:
          type: integer
        created:
          type: integer
        last_activity:
          type: integer
        admin:
          type: array
          items:
            type: string
        visibility:
          type: string
        join_request:
          type: string
        description:
          type: string