Skip to main content

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.

PolyNode sports endpoints expose Polymarket-native sports market data: leagues, teams, games, markets, token IDs, current CLOB prices, and historical price series. These endpoints replace the old sportsbook/OddsJam experiment. They do not return sportsbook odds. They return Polymarket market prices and metadata, normalized around sports games.

Endpoints

EndpointDescription
GET /v2/sports/leaguesSports and esports league metadata from Polymarket Gamma
GET /v2/sports/summaryLeague-level active/live/date summary
GET /v2/sports/liveBackward-compatible live overview derived from /sports/summary
GET /v2/sports/leagues/{league}/teamsTeams for a league, with logos and records when available
GET /v2/sports/leagues/{league}/gamesGames/events for a league, including markets and token IDs
GET /v2/sports/games/{slug}Full game/event detail with normalized markets
GET /v2/sports/games/{slug}/stateCanonical game state: metadata, score fields, markets, current prices, and subscribe payload
GET /v2/sports/games/{slug}/contextAgent-friendly context bundle from generated game queries and optional external sources
GET /v2/sports/games/{slug}/pricesCurrent bid, ask, midpoint, and spread for game tokens
GET /v2/sports/games/{slug}/historyBatch CLOB price history for game tokens
GET /v2/sports/market-typesPolymarket sports market type codes with PolyNode labels/categories
GET /v2/sports/search?q={query}Search sports events and teams

Game state

Use this when you want one game-centric object instead of manually joining game metadata, CLOB prices, markets, and websocket subscription details.
curl "https://api.polynode.dev/v2/sports/games/nba-cle-nyk-2026-05-31/state?price_limit_tokens=20" \
  -H "x-api-key: YOUR_KEY"
{
  "slug": "nba-cle-nyk-2026-05-31",
  "title": "Cavaliers vs. Knicks",
  "status": "scheduled",
  "source": {
    "metadata": "polymarket_gamma",
    "prices": "polymarket_clob",
    "history": null,
    "score": "polymarket_gamma"
  },
  "score": {
    "source": "gamma:event",
    "score": null,
    "period": "NS",
    "live": null,
    "freshness": "unknown"
  },
  "markets": [
    {
      "question": "Cavaliers vs. Knicks",
      "sportsMarketType": "moneyline",
      "clobTokenIds": ["..."],
      "prices": [
        {
          "outcome": "Cavaliers",
          "best_bid": "0.31",
          "best_ask": "0.47",
          "midpoint": "0.39",
          "spread": "0.16"
        }
      ]
    }
  ],
  "subscribe": {
    "ws": "wss://ws.polynode.dev/ws",
    "action": "subscribe",
    "type": "orderbook",
    "token_ids": ["..."]
  }
}
Add include_history=true to include CLOB price history in the same response:
curl "https://api.polynode.dev/v2/sports/games/nba-cle-nyk-2026-05-31/state?include_history=true&history_limit_tokens=2&interval=1d" \
  -H "x-api-key: YOUR_KEY"

Game context

Use this for agent workflows that need game-specific search context next to the normalized sports object. PolyNode generates a small set of matchup, injury, lineup, news, or market-specific queries from the Polymarket game record, then runs the requested sources.
curl "https://api.polynode.dev/v2/sports/games/nba-cle-nyk-2026-05-31/context?sources=x,online&query_set=injuries&max_queries=2&max_per_query=5&include_state=true&price_limit_tokens=20" \
  -H "x-api-key: YOUR_KEY"
{
  "slug": "nba-cle-nyk-2026-05-31",
  "title": "Cavaliers vs. Knicks",
  "query_set": "injuries",
  "generated_queries": [
    {
      "id": "matchup-injuries",
      "query": "Cavaliers Knicks injury",
      "reason": "Availability and injury context for both teams."
    }
  ],
  "sources_requested": ["x", "online"],
  "sources": {
    "x": {
      "status": "ok",
      "result_count": 5,
      "queries": [
        {
          "query": "Cavaliers Knicks injury",
          "tweets": []
        }
      ]
    },
    "online": {
      "status": "ok",
      "source": "search_online",
      "adapter": "searxng",
      "queries": []
    }
  },
  "state": {
    "slug": "nba-cle-nyk-2026-05-31",
    "markets": []
  }
}
Parameters:
ParameterDescription
sourcesComma-separated sources. Defaults to x. Supported: x, online. web, search, ddg, and ddg_instant alias to online.
query_setQuery strategy. Supported: default, injuries, lineups, news, social, markets.
max_queriesNumber of generated queries to run. Defaults to 3, capped at 5.
max_per_queryPer-source result count per query. Defaults to 5, capped at 10.
include_stateInclude the /state response in the same payload. Defaults to false.
price_limit_tokensToken cap used when include_state=true. Defaults to 20, capped at 200.
The x source uses the same X Search beta quota and 1 request/second key-level rate limit as /v2/x/search. Each generated X query consumes one X Search quota unit. The online source uses /v2/search/online and returns normalized public web results from PolyNode’s internal metasearch adapter.

Current prices

curl "https://api.polynode.dev/v2/sports/games/nba-nyk-cle-2026-05-25/prices?limit_tokens=10" \
  -H "x-api-key: YOUR_KEY"
{
  "slug": "nba-nyk-cle-2026-05-25",
  "title": "Knicks vs. Cavaliers",
  "source": "polymarket_clob",
  "count": 10,
  "total_tokens": 106,
  "truncated": true,
  "tokens": [
    {
      "token_id": "36872217940161491972120830074682109141065398170878601426051147635064624582652",
      "outcome": "Knicks",
      "question": "Knicks vs. Cavaliers",
      "market_type": "moneyline",
      "best_bid": "0.56",
      "best_ask": "0.57",
      "midpoint": "0.565",
      "spread": "0.01"
    }
  ],
  "subscribe": {
    "ws": "wss://ws.polynode.dev/ws",
    "action": "subscribe",
    "type": "orderbook",
    "token_ids": ["..."]
  }
}

Price history

curl "https://api.polynode.dev/v2/sports/games/nba-nyk-cle-2026-05-25/history?interval=1d&limit_tokens=2" \
  -H "x-api-key: YOUR_KEY"
limit_tokens defaults to 20 and is capped at 20 because Polymarket’s batch history endpoint caps requests at 20 market asset IDs.
{
  "slug": "nba-nyk-cle-2026-05-25",
  "source": "polymarket_clob",
  "count": 2,
  "total_tokens": 106,
  "truncated": true,
  "tokens": [
    {
      "token_id": "36872217940161491972120830074682109141065398170878601426051147635064624582652",
      "outcome": "Knicks",
      "history": [
        { "t": 1779615604, "p": 0.555 }
      ]
    }
  ]
}

Notes

  • prices fans out to Polymarket CLOB batch price, midpoint, and spread endpoints.
  • history uses Polymarket CLOB batch price history.
  • Scores are included only where Polymarket Gamma has score fields on the event. Use score fields as best-effort metadata, not guaranteed live scoreboard state.
  • For live orderbook updates, use the returned subscribe.token_ids with PolyNode orderbook WebSocket.