Skip to main content
The Scores family is the heart of V1. Each endpoint returns the same game shape so you only build one renderer.

Endpoints

EndpointPurposeTTL
GET /api/v1/scoresEvery live + scheduled + recently ended game across all 9 sports.5s
GET /api/v1/{sport}/liveOnly in-progress games for one sport.5s
GET /api/v1/{sport}/allLive + scheduled + ended for one sport.5s
GET /api/v1/{sport}/currentToday’s slate for one sport (extended window).5s
GET /api/v1/games?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&sportId={id}Date-range query.30s
Baseball: use /api/v1/baseball/all instead of /api/v1/baseball/live — the live endpoint is intentionally disabled for baseball because the round structure makes “live” ambiguous between innings. The all payload already filters to in-progress games via statusGroup === 3.

Per-sport examples

curl -H "x-api-key: YOUR_API_KEY" \
  "https://v1.football.sportsapipro.com/api/v1/football/live"

Game object (real sample)

Trimmed from /api/v1/football/all:
{
  "id": 4697696,
  "sportId": 1,
  "competitionId": 5930,
  "competitionDisplayName": "World Cup 2026",
  "seasonNum": 73,
  "stageNum": 1,
  "roundNum": 1,
  "startTime": "2026-06-11T19:00:00+00:00",
  "statusGroup": 4,
  "statusText": "Ended",
  "shortStatusText": "FT",
  "gameTime": 90.0,
  "gameTimeDisplay": "90'",
  "hasStats": true,
  "hasStandings": true,
  "hasLineups": true,
  "hasBrackets": true,
  "homeCompetitor": {
    "id": 5040,
    "name": "Mexico",
    "symbolicName": "MEX",
    "score": 2,
    "isWinner": true,
    "color": "#006847"
  },
  "awayCompetitor": {
    "id": 2383,
    "name": "South Africa",
    "symbolicName": "RSA",
    "score": 1,
    "isWinner": false
  }
}

Useful fields

FieldNotes
idGame ID. Use it against /game/{id} for full detail.
statusGroup1 upcoming, 2 postponed, 3 live, 4 ended.
gameTimeMinutes elapsed (football, handball, rugby) or period number for clock-based sports. gameTimeDisplay is the formatted version.
has* flagsTell you which child endpoints will return data — gate UI accordingly.
homeCompetitor / awayCompetitorInline team objects with logo color, score, winner flag.

Date-range query

curl -H "x-api-key: YOUR_API_KEY" \
  "https://v1.football.sportsapipro.com/api/v1/games?startDate=2026-06-11&endDate=2026-06-18&sportId=1"
Dates are inclusive and interpreted in UTC. The response contains the same games[] shape plus a paging object — page through with ?page=N.

Incremental polling

Every scores payload includes lastUpdateId. To avoid re-downloading identical data:
let cursor = -1;
async function poll() {
  const r = await fetch(
    `https://v1.football.sportsapipro.com/api/v1/football/live?lastUpdateId=${cursor}`,
    { headers: { 'x-api-key': KEY } }
  );
  const { data } = await r.json();
  if (data.lastUpdateId !== cursor) {
    cursor = data.lastUpdateId;
    render(data.games);
  }
}
setInterval(poll, 2000);
For sub-second latency, prefer the WebSocket.
Last modified on June 12, 2026