Get live NBA scores

GEThttps://api.sportapi.io/v1/nba/scores/live

Returns all NBA games currently in progress or scheduled for today, with score, period, clock, and last play.

Code samples

# Get tonight's NBA games with live scores
curl "https://api.sportapi.io/v1/nba/scores/live" \
  -H "Authorization: Bearer $API_KEY"

# Response
{
  "games": [{
    "game_id": "0022500412",
    "status": "in_progress",
    "period": 3,
    "clock": "07:42",
    "home": {
      "team": "BOS", "score": 78,
      "timeouts_remaining": 3
    },
    "away": {
      "team": "LAL", "score": 71,
      "timeouts_remaining": 2
    },
    "last_play": "J. Tatum makes 3-pt jumper from 25 ft"
  }]
}

Query parameters

ParameterTypeRequiredDescription
teamstringNoFilter by team abbreviation (e.g. LAL)
sincestringNoISO 8601 timestamp; only return games updated since
includestringNoComma-separated extras: last_play, possession, broadcast
limitintegerNoMax results, default 50, max 100

Response

{
  "games": [
    {
      "game_id": "0022500412",
      "status": "in_progress",
      "period": 3,
      "clock": "07:42",
      "home": {
        "team": "BOS",
        "score": 78,
        "timeouts_remaining": 3
      },
      "away": {
        "team": "LAL",
        "score": 71,
        "timeouts_remaining": 2
      },
      "last_play": "J. Tatum makes 3-pt jumper from 25 ft",
      "updated_at": "2025-11-14T03:42:18Z"
    }
  ],
  "meta": { "count": 1, "request_id": "req_8f3a2b1c", "tier": "realtime" }
}

Response fields

FieldTypeDescription
games[].game_idstringUnique game identifier (NBA league format)
games[].statusenumscheduled | in_progress | halftime | final
games[].periodintegerCurrent quarter (1–4, 5+ for overtime)
games[].clockstringGame clock as MM:SS
games[].home.teamstring3-letter team abbreviation
games[].home.scoreintegerCurrent score
games[].home.timeouts_remainingintegerTimeouts left this half
games[].last_playstringHuman-readable last play description
games[].updated_atstringISO 8601 timestamp of the latest update

Error responses

StatusCodeDescription
401unauthorizedMissing or invalid API key
403tier_insufficientYour plan tier doesn't include this resource
429rate_limitedExceeded rate limit; honor Retry-After
500internal_errorServer error; retry with exponential backoff

Live WebSocket equivalent

For push delivery instead of polling, subscribe to the same data via WebSocket:

const ws = client.stream();
ws.subscribe('nba.scores.live');
ws.on('update', game => console.log(game));

See the WebSocket overview for the full channel reference and reconnection patterns.