Game detail API

Everything about one game by id: teams, score, status, venue, season and week, officials and notes. Game-day rosters (starters, did-not-play) are a separate call once published. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Paths and parameters

GET/api/v1/sports/{sport}/leagues/{league}/events/{eventId}

Get an event

  • sport (path, required): Sport slug: football, basketball, baseball, hockey, soccer.
  • league (path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
  • eventId (path, required): Event (game) id, as returned by the events endpoints.
  • includeOdds (query): Attach current betting odds (when available) to each event. Adds latency.

GET/api/v1/sports/{sport}/leagues/{league}/events/{eventId}/roster

Get game rosters. Game-specific rosters with per-player flags (starter, didNotPlay, active). Published by the source at kickoff.

  • sport (path, required): Sport slug: football, basketball, baseball, hockey, soccer.
  • league (path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
  • eventId (path, required): Event (game) id, as returned by the events endpoints.
  • team (query): Return only this team id.
  • starters (query): Only starters.
  • enrich (query): Resolve athlete names, teams and positions for play participants (default true). Pass false for faster, id-only results.

Live example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401872978"

Response captured from live data at 2026-10-05 02:11 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key.

Response

{
  "success": true,
  "data": {
    "id": "401872978",
    "uid": "s:20~l:28~e:401872978",
    "name": "Detroit Lions at Carolina Panthers",
    "shortName": "DET @ CAR",
    "date": "2026-10-05T00:20Z",
    "status": {
      "state": "in",
      "completed": false,
      "period": 3,
      "clock": "12:20",
      "detail": "12:20 - 3rd Quarter",
      "halftime": false,
      "firstHalfEnded": true
    },
    "homeTeam": {
      "id": "29",
      "name": "Carolina Panthers",
      "abbreviation": "CAR",
      "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0HVl9AUlxGAEwbSkoYVg",
      "color": "0085ca",
      "alternateColor": "000000",
      "winner": false,
      "score": 16
    },
    "awayTeam": {
      "id": "8",
      "name": "Detroit Lions",
      "abbreviation": "DET",
      "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0HVl9AUlxGB0gdSkoYVg",
      "color": "0076b6",
      "alternateColor": "bbbbbb",
      "winner": false,
      "score": 16
    },
    "competition": {
      "attendance": 0,
      "neutralSite": false,
      "conferenceCompetition": false,
      "divisionCompetition": false,
      "playByPlayAvailable": true,
      "highlightsAvailable": true
    },
    "venue": {
      "id": "3628",
      "name": "Bank of America Stadium",
      "city": "Charlotte",
      "state": "NC",
      "indoor": false,
      "grass": false
    },
    "notes": [],
    "season": {
      "year": 2026,
      "displayName": "2026",
      "type": {
        "id": "2",
        "name": "Regular Season",
        "abbreviation": "reg"
      },
      "week": {
        "number": 4,
        "startDate": "2026-09-30T07:00Z",
        "endDate": "2026-10-07T06:59Z",
        "text": "Week 4"
      }
    },
    "broadcasts": [
      {
        "network": {
          "id": "1",
          "type": "National"
        },
        "type": "TV"
      }
    ],
    "officials": [
      {
        "id": "17690",
        "fullName": "Greg Wilson",
        "displayName": "Greg Wilson",
        "order": 1,
        "position": "Back Judge"
      },
      {
        "id": "3055005",
        "fullName": "Clay Martin",
        "displayName": "Clay Martin",
        "order": 2,
        "position": "Referee"
      },
      {
        "id": "3055221",
        "fullName": "Eugene Hall",
        "displayName": "Eugene Hall",
        "order": 3,
        "position": "Side Judge"
      },
      "... 4 more"
    ]
  },
  "meta": {
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1793491200000
    }
  }
}

Fields

FieldTypeNotes
idstringEvent id; use it with the detail, plays, box score and odds endpoints.
uidstring
namestringFull matchup name.
shortNamestringAbbreviated matchup, e.g. "AWAY @ HOME".
datestringStart time, ISO-8601 UTC.
statusEventStatusstate (pre, in, post), completed, period, clock and display detail.
homeTeamEventTeamid, name, abbreviation, colors, logo (proxied), record, score, winner.
awayTeamEventTeamSame shape as homeTeam.
competitionobjectattendance, neutralSite, conference/division flags, playByPlayAvailable.
venueobjectVenue id, name, city, state, indoor, grass (null when unknown).
notesstring[]Headline notes, e.g. round or rivalry names.
seasonobjectyear, type (preseason/regular/postseason) and week where the league uses weeks.
broadcastsobject[]TV/stream networks for the game.
officialsobject[]Game officials when published.
oddsOddsOnly with includeOdds=true and when the game has odds.

League support

Checked against live data on 2026-10-04: 29 available, 0 limited, 0 seasonal or not verified, 0 not available.

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401872978"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401872978", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/events/401872978",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

MCP prompt (Claude, Cursor, ChatGPT)

Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_event with sport "football" and league "nfl" and pick the first game from get_events and describe it for NFL.

Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

FAQ

What does the event detail endpoint return?
Everything about one game by id: teams, score, status, venue, season and week, officials and notes. Game-day rosters (starters, did-not-play) are a separate call once published.
Which leagues support event detail?
All 29 monitored leagues returned data when we checked on 2026-10-04.
Is it free to try?
Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. Every successful call counts as one call.
How fresh is the data?
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
Can I get updates pushed instead of polling?
Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview.