Lichess Opening Explorer API

Lookup positions from the [Lichess opening explorer](https://lichess.org/analysis#explorer). Runs . > [!important] > The hostname for these endpoints is `explorer.lichess.org` and not `lichess.org`.

Operations 4

GET /masters Masters database #
GET /lichess Lichess games #
GET /player Player games #
GET /masters/pgn/{gameId} OTB master game #

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/lichess-opening-explorer-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

lichess-opening-explorer-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.0.144
  title: Lichess.org API reference Account Opening Explorer API
  contact:
    name: Lichess.org API
    url: https://lichess.org/api
    email: contact@lichess.org
  x-logo:
    url: https://lichess1.org/assets/logo/lichess-pad12.svg
  license:
    name: AGPL-3.0-or-later
    url: https://www.gnu.org/licenses/agpl-3.0.txt
  description: '# Introduction

    Welcome to the reference for the Lichess API! Lichess is free/libre,

    open-source chess server powered by volunteers and donations.

    - Get help in the [Lichess Discord channel](https://discord.gg/lichess)

    - API demo app with OAuth2 login and gameplay: [source](https://github.com/lichess-org/api-demo) / [demo](https://lichess-org.github.io/api-demo/)

    - API UI app with OAuth2 login and endpoint forms: [source](https://github.com/lichess-org/api-ui) / [website](https://lichess.org/api/ui)

    - [Contribute to this documentation on Github](https://github.com/lichess-org/api)

    - Check out [Lichess widgets to embed in your website](https://lichess.org/developers)

    - [Download all Lichess rated games](https://database.lichess.org/)

    - [Download all Lichess puzzles with themes, ratings and votes](https://database.lichess.org/#puzzles)

    - [Download all evaluated positions](https://database.lichess.org/#evals)


    ## Endpoint

    All requests go to `https://lichess.org` (unless otherwise specified).


    ## Clients

    - [Python general API](https://github.com/lichess-org/berserk)

    - [MicroPython general API](https://github.com/mkomon/uberserk)

    - [Python general API - async](https://pypi.org/project/async-lichess-sdk)

    - [Python Lichess Bot](https://github.com/lichess-bot-devs/lichess-bot)

    - [Python Board API for Certabo](https://github.com/haklein/certabo-lichess)

    - [Java general API](https://github.com/tors42/chariot)

    - [JavaScript & TypeScript general API](https://github.com/devjiwonchoi/equine)

    - [LichessNET - C# API Wrapper](https://github.com/Rabergsel/LichessNET)

    - [.NET general API](https://github.com/Dblike/LichessSharp)


    ## Rate limiting

    All requests are rate limited using various strategies,

    to ensure the API remains responsive for everyone.

    Only make one request at a time.

    If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429),

    you have exceded one of the rate limits.

    In most cases, waiting one minute before retrying will be sufficient, but some limits may require longer.

    Reduce your request frequency before retrying.


    ## Streaming with ND-JSON

    Some API endpoints stream their responses as [Newline Delimited JSON a.k.a. **nd-json**](https://github.com/ndjson/ndjson-spec), with one JSON object per line.


    Here''s a [JavaScript utility function](https://gist.github.com/ornicar/a097406810939cf7be1df8ea30e94f3e) to help reading NDJSON streamed responses.


    ## Authentication

    ### Which authentication method is right for me?

    [Read about the Lichess API authentication methods and code examples](https://github.com/lichess-org/api/blob/master/example/README.md)


    ### Personal Access Token

    Personal API access tokens allow you to quickly interact with Lichess API without going through an OAuth flow.

    - [Generate a personal access token](https://lichess.org/account/oauth/token)

    - `curl https://lichess.org/api/account -H "Authorization: Bearer {token}"`

    - [NodeJS example](https://github.com/lichess-org/api/tree/master/example/oauth-personal-token)


    ### Token Security

    - Keep your tokens secret. Do not share them in public repositories or public forums.

    - Your tokens can be used to make your account perform arbitrary actions (within the limits of the tokens'' scope). You remain responsible for all activities on your account.

    - Do not hardcode tokens in your application''s code. Use environment variables or a secure storage and ensure they are not shipped/exposed to users. Be especially careful that they are not included in frontend bundles or apps that are shipped to users.

    - If you suspect a token has been compromised, revoke it immediately.


    To see your active tokens or revoke them, see [your Personal API access tokens](https://lichess.org/account/oauth/token).


    ### Authorization Code Flow with PKCE

    The authorization code flow with PKCE allows your users to **login with Lichess**.

    Lichess supports unregistered and public clients (no client authentication, choose any unique client id).

    The only accepted code challenge method is `S256`.

    Access tokens are long-lived (expect one year), unless they are revoked.

    Refresh tokens are not supported.


    See the [documentation for the OAuth endpoints](#tag/OAuth) or

    the [PKCE RFC](https://datatracker.ietf.org/doc/html/rfc7636#section-4) for a precise protocol description.


    - [Demo app](https://lichess-org.github.io/api-demo/)

    - [Minimal client-side example](https://github.com/lichess-org/api/tree/master/example/oauth-app)

    - [Flask/Python example](https://github.com/lakinwecker/lichess-oauth-flask)

    - [Java example](https://github.com/tors42/lichess-oauth-pkce-app)

    - [NodeJS Passport strategy to login with Lichess OAuth2](https://www.npmjs.com/package/passport-lichess)


    #### Real life examples

    - [PyChess](https://github.com/gbtami/pychess-variants) ([source code](https://github.com/gbtami/pychess-variants))

    - [Lichess4545](https://www.lichess4545.com/) ([source code](https://github.com/cyanfish/heltour))

    - [English Chess Federation](https://ecf.octoknight.com/)

    - [Rotherham Online Chess](https://rotherhamonlinechess.azurewebsites.net/tournaments)


    ### Token format

    Access tokens and authorization codes match `^[A-Za-z0-9_]+$`.

    The length of tokens can be increased without notice. Make sure your application can handle at least 512 characters.

    By convention tokens have a recognizable prefix, but do not rely on this.

    '
servers:
- url: https://lichess.org
- url: https://lichess.dev
- url: http://localhost:{port}
  variables:
    port:
      default: '8080'
- url: http://l.org
tags:
- name: Opening Explorer
  description: 'Lookup positions from the [Lichess opening explorer](https://lichess.org/analysis#explorer).


    Runs <https://github.com/lichess-org/lila-openingexplorer>.


    > [!important]

    > The hostname for these endpoints is `explorer.lichess.org` and not `lichess.org`.

    '
paths:
  /masters:
    get:
      operationId: openingExplorerMaster
      summary: Masters database
      description: '**Endpoint: <https://explorer.lichess.org/masters>**


        Example: `curl https://explorer.lichess.org/masters?play=d2d4,d7d5,c2c4,c7c6,c4d5`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: fen
        description: X-FEN of the root position
        schema:
          type: string
        example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5,c2c4,c7c6,c4d5
      - in: query
        name: since
        description: Include only games from this year or later
        schema:
          type: integer
          default: 1952
      - in: query
        name: until
        description: Include only games from this year or earlier
        schema:
          type: integer
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
          default: 12
      - in: query
        name: topGames
        description: Number of top games to display
        schema:
          type: integer
          default: 15
          maximum: 15
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpeningExplorerMasters'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-masters.json'
  /lichess:
    get:
      operationId: openingExplorerLichess
      summary: Lichess games
      description: '**Endpoint: <https://explorer.lichess.org/lichess>**


        Aggregated rated games from all Lichess players.


        Example: `curl https://explorer.lichess.org/lichess?variant=standard&speeds=blitz,rapid,classical&ratings=2200,2500&fen=rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR%20w%20KQkq%20-%200%201`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: variant
        description: Variant
        schema:
          $ref: '#/components/schemas/VariantKey'
          default: standard
      - in: query
        name: fen
        description: X-FEN or EPD of the root position
        schema:
          type: string
        example: rnbqkbnr/ppp1pppp/8/3pP3/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5,c2c4,c7c6,c4d5
      - in: query
        name: speeds
        description: Comma separated list of game speeds to filter by
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Speed'
      - in: query
        name: ratings
        description: 'Comma separated list of ratings groups to filter by.

          Each group ranges from its value to the next higher

          group in the enum (`0` from 0 to 999, `1000` from 1000 to 1199,

          ..., `2500` from 2500 to any rating above).

          '
        schema:
          type: array
          items:
            type: integer
            enum:
            - 0
            - 1000
            - 1200
            - 1400
            - 1600
            - 1800
            - 2000
            - 2200
            - 2500
      - in: query
        name: since
        description: Include only games from this month or later
        schema:
          type: string
          default: 1952-01
      - in: query
        name: until
        description: Include only games from this month or earlier
        schema:
          type: string
          default: 3000-12
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
          default: 12
      - in: query
        name: topGames
        description: 'Maximum number of top games to display.


          Due to the way banned users are handled internally, the response may

          contain fewer games than expected.

          '
        schema:
          type: integer
          default: 4
          maximum: 4
      - in: query
        name: recentGames
        description: 'Maximum number of recent games to display.


          Due to the way banned users are handled internally, the response may

          contain fewer games than expected.

          '
        schema:
          type: integer
          default: 4
          maximum: 4
      - in: query
        name: history
        description: Optionally retrieve history
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpeningExplorerLichess'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-lichess.json'
  /player:
    get:
      operationId: openingExplorerPlayer
      summary: Player games
      description: '**Endpoint: <https://explorer.lichess.org/player>**


        Games of a Lichess player.


        Responds with a stream of [newline delimited JSON](#description/streaming-with-nd-json). Will start indexing

        on demand, immediately respond with the current results, and stream

        more updates until indexing is complete. The stream is throttled

        and deduplicated. Empty lines may be sent to avoid timeouts.


        Will index new games at most once per minute, and revisit previously

        ongoing games at most once every day.


        Example: `curl https://explorer.lichess.org/player?player=revoof&color=white&play=d2d4,d7d5&recentGames=1`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: query
        name: player
        description: Username or ID of the player
        schema:
          type: string
        example: revoof
        required: true
      - in: query
        name: color
        description: Look for games with *player* on the given side
        schema:
          type: string
          enum:
          - white
          - black
        example: white
        required: true
      - in: query
        name: variant
        description: Variant
        schema:
          $ref: '#/components/schemas/VariantKey'
          default: standard
      - in: query
        name: fen
        description: X-FEN of the root position
        schema:
          type: string
        example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
      - in: query
        name: play
        description: 'Comma separated sequence of legal moves in UCI notation.

          Play additional moves starting from `fen`.

          Required to find an opening name, if `fen` is not an exact match

          for a named position.

          '
        schema:
          type: string
          default: ''
        example: d2d4,d7d5
      - in: query
        name: speeds
        description: Comma separated list of game speeds to look for
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Speed'
      - in: query
        name: modes
        description: Comma separated list of modes
        schema:
          type: array
          items:
            type: string
            enum:
            - casual
            - rated
      - in: query
        name: since
        description: Include only games from this month or later
        schema:
          type: string
          default: 1952-01
      - in: query
        name: until
        description: Include only games from this month or earlier
        schema:
          type: string
          default: 3000-12
      - in: query
        name: moves
        description: Number of most common moves to display
        schema:
          type: integer
      - in: query
        name: recentGames
        description: Number of recent games to display
        schema:
          type: integer
          default: 8
          maximum: 8
      responses:
        '200':
          description: Opening statistics and game references for the position.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-ndjson:
              schema:
                $ref: '#/components/schemas/OpeningExplorerPlayer'
              examples:
                default:
                  $ref: '#/components/examples/openingExplorer-player.json'
  /masters/pgn/{gameId}:
    get:
      operationId: openingExplorerMasterGame
      summary: OTB master game
      description: '**Endpoint: `https://explorer.lichess.org/masters/pgn/{gameId}`**


        Example: `curl https://explorer.lichess.org/masters/pgn/aAbqI4ey`

        '
      tags:
      - Opening Explorer
      servers:
      - url: https://explorer.lichess.org
      - url: http://localhost:{port}
        variables:
          port:
            default: '9002'
      security:
      - OAuth2: []
      parameters:
      - in: path
        name: gameId
        schema:
          type: string
        required: true
      responses:
        '200':
          description: The PGN representation of the game.
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                default: '''*'''
          content:
            application/x-chess-pgn:
              schema:
                type: string
                description: Game PGN
              examples:
                pgn:
                  $ref: '#/components/examples/openingExplorer-otbMasterGame.pgn'
components:
  examples:
    openingExplorer-lichess.json:
      value:
        white: 5061745
        draws: 492487
        black: 4458129
        moves:
        - uci: c6d5
          san: cxd5
          averageRating: 1806
          white: 4517660
          draws: 450366
          black: 4016728
          game: null
          opening: null
        - uci: d8d5
          san: Qxd5
          averageRating: 1662
          white: 236785
          draws: 17561
          black: 170379
          game: null
          opening: null
        - uci: g8f6
          san: Nf6
          averageRating: 1973
          white: 195502
          draws: 17425
          black: 184987
          game: null
          opening:
            eco: D06
            name: 'Queen''s Gambit Declined: Marshall Defense, Tan Gambit'
        - uci: e7e6
          san: e6
          averageRating: 1839
          white: 40807
          draws: 2695
          black: 32332
          game: null
          opening: null
        - uci: d8a5
          san: Qa5+
          averageRating: 1436
          white: 19458
          draws: 1221
          black: 13712
          game: null
          opening: null
        - uci: c8f5
          san: Bf5
          averageRating: 1705
          white: 17503
          draws: 1118
          black: 15374
          game: null
          opening: null
        - uci: c6c5
          san: c5
          averageRating: 1802
          white: 11081
          draws: 678
          black: 6174
          game: null
          opening: null
        - uci: g7g6
          san: g6
          averageRating: 1861
          white: 3867
          draws: 325
          black: 3561
          game: null
          opening: null
        - uci: c8g4
          san: Bg4
          averageRating: 1866
          white: 3775
          draws: 255
          black: 3715
          game: null
          opening: null
        - uci: e7e5
          san: e5
          averageRating: 1820
          white: 2796
          draws: 156
          black: 2555
          game: null
          opening: null
        - uci: a7a6
          san: a6
          averageRating: 1877
          white: 2180
          draws: 139
          black: 1876
          game: null
          opening: null
        - uci: b8d7
          san: Nd7
          averageRating: 1627
          white: 2302
          draws: 119
          black: 1574
          game: null
          opening: null
        recentGames:
        - uci: c6d5
          id: PFRcQXaV
          winner: white
          speed: bullet
          mode: rated
          black:
            name: chaotic_logic
            rating: 2611
          white:
            name: AritzMancha
            rating: 2626
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: 1Eu0KMO6
          winner: white
          speed: blitz
          mode: rated
          black:
            name: Helmy-Saber2
            rating: 2160
          white:
            name: denk_er
            rating: 2222
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: Oykwl4gi
          winner: white
          speed: blitz
          mode: rated
          black:
            name: JonKi1002
            rating: 1831
          white:
            name: KonstantinXCII
            rating: 1940
          year: 2026
          month: 2026-01
        - uci: c6d5
          id: ayG0PtAu
          winner: black
          speed: bullet
          mode: rated
          black:
            name: IlyaGaon
            rating: 1364
          white:
            name: hitomii
            rating: 1413
          year: 2026
          month: 2026-01
        topGames:
        - uci: g8f6
          id: EqJcFS1j
          winner: white
          speed: ultraBullet
          mode: rated
          black:
            name: toivok
            rating: 2708
          white:
            name: penguingim1
            rating: 2969
          year: 2018
          month: 2018-04
        - uci: c6d5
          id: Z8bSC15J
          winner: black
          speed: rapid
          mode: rated
          black:
            name: ShadowsOfPain
            rating: 2971
          white:
            name: rightup
            rating: 2630
          year: 2025
          month: 2025-07
        - uci: c6d5
          id: IGCORYDn
          winner: null
          speed: rapid
          mode: rated
          black:
            name: torombot
            rating: 2987
          white:
            name: the_magnificent_bob
            rating: 2981
          year: 2024
          month: 2024-03
        opening:
          eco: D10
          name: 'Slav Defense: Exchange Variation'
    openingExplorer-player.json:
      value:
        white: 366
        draws: 23
        black: 279
        moves:
        - uci: c2c4
          san: c4
          averageOpponentRating: 1695
          performance: 1744
          white: 361
          draws: 23
          black: 272
          game: null
          opening:
            eco: D06
            name: Queen's Gambit
        - uci: c2c3
          san: c3
          averageOpponentRating: 1797
          performance: 1797
          white: 2
          draws: 0
          black: 2
          game: null
          opening: null
        - uci: e2e4
          san: e4
          averageOpponentRating: 1762
          performance: 1640
          white: 1
          draws: 0
          black: 2
          game: null
          opening:
            eco: D00
            name: Blackmar-Diemer Gambit
        - uci: g1f3
          san: Nf3
          averageOpponentRating: 1497
          performance: 1374
          white: 1
          draws: 0
          black: 2
          game: null
          opening:
            eco: D02
            name: 'Queen''s Pawn Game: Zukertort Variation'
        - uci: h2h4
          san: h4
          averageOpponentRating: 1674
          performance: 874
          white: 0
          draws: 0
          black: 1
          game:
            id: 9vA24xBn
            winner: black
            speed: bullet
            mode: rated
            black:
              name: MentalBlood
              rating: 1674
            white:
              name: revoof
              rating: 1657
            year: 2020
            month: 2020-06
          opening: null
        - uci: h2h3
          san: h3
          averageOpponentRating: 1696
          performance: 2496
          white: 1
          draws: 0
          black: 0
          game:
            id: zyI4GGKv
            winner: white
            speed: bullet
            mode: rated
            black:
              name: gocool99
              rating: 1696
            white:
              name: revoof
              rating: 1702
            year: 2020
            month: 2020-07
          opening: null
        recentGames:
        - uci: c2c4
          id: ycZbWQZO
          winner: white
          speed: bullet
          mode: rated
          black:
            name: Winavesh
            rating: 1700
          white:
            name: revoof
            rating: 1700
          year: 2024
          month: 2024-11
        opening:
          eco: D00
          name: Queen's Pawn Game
        queuePosition: 178
    openingExplorer-otbMasterGame.pgn:
      value: '[Event "Wch Blitz"]

        [Site "Astana"]

        [Date "2012.07.10"]

        [Round "23"]

        [White "Carlsen, Magnus"]

        [Black "Chadaev, Nikolay"]

        [Result "1-0"]

        [WhiteElo "2837"]

        [BlackElo "2580"]


        1. e4 e5 2. f4 d5 3. exd5 exf4 4. Nf3 Nf6 5. c4 c6 6. d4 cxd5 7. c5 Nc6 8. Bb5 Be7 9. O-O O-O 10. Bxf4 Bg4 11. Nc3 Ne4 12. Qd3 Bf5 13. Qe3 Bf6 14. Bxc6 bxc6 15. Ne5 Bxe5 16. Bxe5 Bg6 17. Nxe4 Bxe4 18. Qg3 f6 19. Bd6 Re8 20. b4 Bg6 21. a4 a6 22. h4 Qd7 23. h5 Bxh5 24. Rxf6 Qg4 25. Qxg4 Bxg4 26. Rf4 Bh5 27. Raf1 h6 28. Be5 Ra7 29. b5 axb5 30. axb5 cxb5 31. c6 Raa8 32. c7 Kh7 33. Rb1 Be2 34. Rf7 Rg8 35. Re7 Bc4 36. Kh2 Rae8 37. Rd7 Ra8 38. Rb2 Raf8 39. g4 Ra8 40. Rf2 b4 41. Rff7 h5 42. Rxg7+ Rxg7 43. Rxg7+ 1-0

        '
    openingExplorer-masters.json:
      value:
        white: 1927
        draws: 5215
        black: 1469
        moves:
        - uci: c6d5
          san: cxd5
          averageRating: 2412
          white: 1927
          draws: 5215
          black: 1468
          game: null
          opening: null
        - uci: g8f6
          san: Nf6
          averageRating: 2515
          white: 0
          draws: 0
          black: 1
          game:
            id: 1EErB5jc
            winner: black
            black:
              name: Dobrov, Vladimir
              rating: 2515
            white:
              name: Drozdovskij, Yuri
              rating: 2509
            year: 2006
            month: 2006-01
          opening:
            eco: D06
            name: 'Queen''s Gambit Declined: Marshall Defense, Tan Gambit'
        topGames:
        - uci: c6d5
          id: kN6d9l2i
          winner: black
          black:
            name: Anand, V.
            rating: 2785
          white:
            name: Carlsen, M.
            rating: 2881
          year: 2014
          month: 2014-06
        - uci: c6d5
          id: qeYPJL2y
          winner: white
          black:
            name: Carlsen, M.
            rating: 2843
          white:
            name: So, W.
            rating: 2778
          year: 2018
          month: 2018-06
        - uci: c6d5
          id: VpWYyv3g
          winner: null
          black:
            name: Carlsen, M..
            rating: 2847
          white:
            name: So, W..
            rating: 2770
          year: 2021
          month: 2021-03
        - uci: c6d5
          id: nlh6QPSg
          winner: white
          black:
            name: Vachier Lagrave, Maxime
            rating: 2778
          white:
            name: Caruana, Fabiano
            rating: 2835
          year: 2020
          month: 2020-06
        - uci: c6d5
          id: IYy7abvG
          winner: black
          black:
            name: Caruana, Fabiano
            rating: 2835
          white:
            name: So, Wesley
            rating: 2770
          year: 2020
          month: 2020-06
        - uci: c6d5
          id: sKEBcLbM
          winner: null
          black:
            name: Carlsen, M.
            rating: 2832
          white:
            name: Grischuk, A.
            rating: 2761
          year: 2017
          month: 2017-06
        - uci: c6d5
          id: ambcPQzJ
          winner: white
          black:
            name: Nakamura, Hikaru
            rating: 2775
          white:
            name: Aronian, Levon
            rating: 2813
          year: 2013
          month: 2013-05
        - uci: c6d5
          id: 7x23lu2J
          winner: black
          black:
            name: Karjakin, Sergey
            rating: 2771
          white:
            name: Aronian, L.
            rating: 2815
          year: 2014
          month: 2014-06
        - uci: c6d5
          id: FLar3fv2
          winner: white
          black:
            name: Duda, Jan Krzysztof
            rating: 2757
          white:
            name: Caruana, Fabiano
            rating: 2828
          year: 2020
          month: 2020-10
        - uci: c6d5
          id: mOtWn31m
          winner: black
          black:
            name: Nakamura, Hi
            rating: 2804
          white:
            name: Caruana, F.
            rating: 2776
          year: 2025
          month: 2025-05
        - uci: c6d5
          id: 2O6imBL4
          winner: black
          black:
            name: Aronian, L.
            rating: 2764
          white:
            name: Mamedyarov, S.
            rating: 2808
          year: 2018
          month: 2018-06
        - uci: c6d5
          id: 4DG6brd6
          winner: null
          black:
            name: Caruana, Fabiano
            rating: 2835
          white:
            name: Nakamura, Hikaru
            rating: 2736
          year: 2020
          month: 2020-05
        - uci: c6d5
          id: LNwpnUi7
          winner: null
          black:
            name: Vachier Lagrave, M.
            rating: 2779
          white:
            name: Nakamura, Hi
            rating: 2777
          year: 2018
          month: 2018-10
        - uci: c6d5
          id: f7QMeZlL
          winner: black
          black:
            name: Carlsen, M.
            rating: 2840
          white:
            name: Vallejo Pons, F.
            rating: 2711
          year: 2016
          month: 2016-12
        - uci: c6d5
          id: vZzIG6Vo
          winner: white
          black:
            name: Nakamura, Hikaru
            rating: 2774
          white:
            name: Ivanchuk, Vassily
            rating: 2776
          year: 2011
          month: 2011-06
        opening:
          eco: D10
          name: 'Slav Defense: Exchange Variation'
  schemas:
    OpeningExplorerGamePlayer:
      type: object
      properties:
        name:
          type: string
        rating:
          type: integer
      required:
      - name
      - rating
    OpeningExplorerLichess:
      type: object
      properties:
        opening:
          oneOf:
          - $ref: '#/components/schemas/OpeningExplorerOpening'
          - type: 'null'
        white:
          type: integer
        draws:
          type: integer
        black:
          type: integer
        moves:
          type: array
          items:
            type: object
            properties:
              uci:
                type: string
              san:
                type: string
              averageRating:
                type: integer
              white:
                type: integer
              draws:
                type: integer
              black:
                type: integer
              game:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerLichessGame'
                - type: 'null'
              opening:
                oneOf:
                - $ref: '#/components/schemas/OpeningExplorerOpening'
                - type: 'null'
            required:
            - uci
            - san
            - averageRating
            - white
            - draws
            - black
            - game
            - opening
        topGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/OpeningExplorerLichessGame'
        recentGames:
          type: array
          items:
            allOf:
            - type: object
              properties:
                uci:
                  type: string
              required:
              - uci
            - $ref: '#/components/schemas/Op

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lichess/refs/heads/main/openapi/lichess-opening-explorer-api-openapi.yml