List Games
curl --request GET \
--url https://api.polynode.dev/v2/sports/leagues/{code}/games \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v2/sports/leagues/{code}/games"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v2/sports/leagues/{code}/games', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.polynode.dev/v2/sports/leagues/{code}/games",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v2/sports/leagues/{code}/games"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.polynode.dev/v2/sports/leagues/{code}/games")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v2/sports/leagues/{code}/games")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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/..."
}
}
]
}
]
}
List Games
Games for a league with scores, teams, market data, token IDs, and upstream fallback metadata.
GET
/
v2
/
sports
/
leagues
/
{code}
/
games
List Games
curl --request GET \
--url https://api.polynode.dev/v2/sports/leagues/{code}/games \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v2/sports/leagues/{code}/games"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v2/sports/leagues/{code}/games', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.polynode.dev/v2/sports/leagues/{code}/games",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v2/sports/leagues/{code}/games"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.polynode.dev/v2/sports/leagues/{code}/games")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v2/sports/leagues/{code}/games")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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/..."
}
}
]
}
]
}
Returns daily matchups for a league. Use
Each game has an event
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.
string
required
League code from
/v2/sports/leagues (for example fifwc, fif, nba, lol, cs2).string
required
Your API key.
string
default:"active"
active for upcoming/in-progress games, closed for completed games with scores.integer
default:"50"
Max results per page (1-200).
integer
default:"0"
Pagination offset.
string
default:"startDate"
Sort by
startDate or volume.string
default:"desc"
asc or desc.string
Requested league code.
string
Applied status filter, either
active or closed.string
Polymarket Gamma sports series ID used for discovery.
string
Upstream source used for this response, such as
gamma:/events, gamma:/series/{id}, or gamma:/events/pagination.boolean
true when PolyNode used an alternate Gamma source after the primary event listing was unavailable or unsuitable.boolean
true when PolyNode served the last-known-good response because all upstream Gamma sources failed.{
"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/..."
}
}
]
}
]
}
How to get scores
# 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"
id and a slug, while every nested market has its own market id. Use any of them with the 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 |
Only returns daily matchups, not season-long futures (MVP, Champion, etc.). If you need futures markets, use the Event Detail endpoint.
Authorizations
Path Parameters
League code (e.g. fifwc, fif, nba, lol, cs2)
Query Parameters
active or closed
Available options:
active, closed Max results (1-200)
Pagination offset
Sort field
Available options:
startDate, volume Sort direction
Available options:
asc, desc Response
200
Game list. Top-level fields include league, status, series_id, source, fallback, stale, count, and games.

