> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polynode.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# List Games

> Games for a league with scores, teams, market data, token IDs, and upstream fallback metadata.

Returns daily matchups for a league. Use `status=closed` to get completed games with final scores.

The endpoint resolves the league code to Polymarket's sports series ID, fetches game events by `series_id`, and applies status filtering, sorting, limit, and offset in PolyNode. This avoids Polymarket Gamma outages in tag and filtered pagination queries. If the primary Gamma event listing is unavailable, PolyNode falls back to alternate Gamma series/event sources and marks `fallback: true`. If all upstream sources fail but a recent good response exists, PolyNode returns that response with `stale: true`.

<ParamField path="code" type="string" required>
  League code from `/v2/sports/leagues` (for example `fifwc`, `fif`, `nba`, `lol`, `cs2`).
</ParamField>

<ParamField query="key" type="string" required>
  Your API key.
</ParamField>

<ParamField query="status" type="string" default="active">
  `active` for upcoming/in-progress games, `closed` for completed games with scores.
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Max results per page (1-200).
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Pagination offset.
</ParamField>

<ParamField query="sort" type="string" default="startDate">
  Sort by `startDate` or `volume`.
</ParamField>

<ParamField query="direction" type="string" default="desc">
  `asc` or `desc`.
</ParamField>

<ResponseField name="league" type="string">
  Requested league code.
</ResponseField>

<ResponseField name="status" type="string">
  Applied status filter, either `active` or `closed`.
</ResponseField>

<ResponseField name="series_id" type="string">
  Polymarket Gamma sports series ID used for discovery.
</ResponseField>

<ResponseField name="source" type="string">
  Upstream source used for this response, such as `gamma:/events`, `gamma:/series/{id}`, or `gamma:/events/pagination`.
</ResponseField>

<ResponseField name="fallback" type="boolean">
  `true` when PolyNode used an alternate Gamma source after the primary event listing was unavailable or unsuitable.
</ResponseField>

<ResponseField name="stale" type="boolean">
  `true` when PolyNode served the last-known-good response because all upstream Gamma sources failed.
</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "league": "fifwc",
    "status": "active",
    "series_id": "11433",
    "source": "gamma:/events",
    "fallback": false,
    "stale": false,
    "count": 2,
    "games": [
      {
        "id": "351718",
        "slug": "fifwc-usa-par-2026-06-12",
        "title": "United States vs. Paraguay",
        "startTime": "2026-06-13T01:00:00Z",
        "eventDate": "2026-06-12",
        "closed": false,
        "status": "scheduled",
        "markets": [
          {
            "id": "1897039",
            "question": "Will United States win on 2026-06-12?",
            "sportsMarketType": "moneyline",
            "outcomes": ["Yes", "No"],
            "outcomePrices": ["0.385", "0.615"],
            "clobTokenIds": ["...", "..."],
            "_links": {
              "ws": "wss://ws.polynode.dev/ws",
              "ws_subscribe": {
                "action": "subscribe",
                "type": "orderbook",
                "token_ids": ["...", "..."]
              },
              "orderbook_rest": "https://api.polynode.dev/v1/orderbook/..."
            }
          }
        ]
      }
    ]
  }
  ```
</ResponseExample>

## How to get scores

```bash theme={null}
# Get last night's NBA results with scores
curl "https://api.polynode.dev/v2/sports/leagues/nba/games?status=closed&limit=10&key=YOUR_KEY"

# Get upcoming World Cup matches in kickoff order
curl "https://api.polynode.dev/v2/sports/leagues/fifwc/games?status=active&sort=startDate&direction=asc&limit=50&key=YOUR_KEY"

# Get upcoming NHL games
curl "https://api.polynode.dev/v2/sports/leagues/nhl/games?status=active&limit=20&key=YOUR_KEY"
```

Each game has an event `id` and a `slug`, while every nested market has its own market `id`. Use any of them with the [Game Detail](/api-reference/sports/game-detail) endpoint to get full team info, all markets, and AI-generated game previews. Event-ID and market-ID lookups use the explicit `/by-event/{event_id}` and `/by-market/{market_id}` paths documented there.

## Esports score format

Esports scores use a different format than traditional sports:

| Sport              | Score format                     | Example             |
| ------------------ | -------------------------------- | ------------------- |
| NBA, NHL, MLB      | `home-away`                      | `94-111`            |
| LoL, CS2, Valorant | `mapScores\|seriesScore\|format` | `000-000\|2-0\|Bo3` |

<Note>
  Only returns daily matchups, not season-long futures (MVP, Champion, etc.). If you need futures markets, use the [Event Detail](/api-reference/enriched/event) endpoint.
</Note>


## OpenAPI

````yaml GET /v2/sports/leagues/{code}/games
openapi: 3.1.0
info:
  title: PolyNode API
  description: >-
    Real-time Polymarket data API with decoded mempool settlements, OHLCV
    candles, and full Polygon JSON-RPC proxy.
  contact:
    name: PolyNode
    url: https://polynode.dev
  license:
    name: ''
  version: 2.0.0
servers:
  - url: https://api.polynode.dev
    description: Production
security:
  - api_key: []
paths:
  /v2/sports/leagues/{code}/games:
    get:
      tags:
        - Sports & Esports
      summary: List Games
      description: >-
        Games for a league with scores, teams, market data, token IDs, and
        upstream fallback metadata. PolyNode resolves the league code to a
        Polymarket sports series ID, fetches by series_id, then applies status
        filtering, sorting, limit, and offset locally. Responses include source,
        fallback, and stale fields so clients can tell when alternate Gamma
        sources or last-known-good cache were used.
      operationId: sports_games
      parameters:
        - name: code
          in: path
          required: true
          description: League code (e.g. fifwc, fif, nba, lol, cs2)
          schema:
            type: string
            default: nba
        - name: status
          in: query
          description: active or closed
          schema:
            type: string
            enum:
              - active
              - closed
            default: active
        - name: limit
          in: query
          description: Max results (1-200)
          schema:
            type: integer
            default: 50
        - name: offset
          in: query
          description: Pagination offset
          schema:
            type: integer
            default: 0
        - name: sort
          in: query
          description: Sort field
          schema:
            type: string
            enum:
              - startDate
              - volume
            default: startDate
        - name: direction
          in: query
          description: Sort direction
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
      responses:
        '200':
          description: >-
            Game list. Top-level fields include league, status, series_id,
            source, fallback, stale, count, and games.
      security:
        - api_key: []
components:
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````