live-stats

Live per-player boxscore

Per-player stat groups for one match, during the game and after it finishes. One response shape for every sport listed below; cached 15s.

COVERAGE, PER SPORT, STATED RATHER THAN IMPLIED. These sports are not at parity and this endpoint does not pretend they are.

  • baseball: broad demonstrated coverage.
  • basketball, ice_hockey: covered for the primary professional league only (NBA, NHL). Other leagues return a 400 naming the league.
  • football: soccer, and only the mapped competitions (EPL, MLS, FIFA World Cup 2026). Anything else returns a 400 naming the league.
  • american_football: NFL and NCAAF (FBS) only, from the 2026 season opener. NCAAF FCS matches are a valid request that will keep returning an empty box score: the live feed does not poll that division, and naming it here is cheaper than letting a caller discover it by waiting. Before kickoff of any covered game the request also succeeds with data.teams: [], meta.stale: true and a meta.note saying so. It is NOT a 404: a match with no rows yet is a correct request whose data has not been written, and the two are different answers.

FRESHNESS. meta.as_of is the timestamp of the most recent stat cell in the response, and meta.stale says whether we would expect to have learned something more recently than that. A box score that has stopped updating mid-game and one that is simply quiet are indistinguishable without those two fields, which is why they are here rather than left for the caller to infer from fetched_at.

get/v1/live-stats/{sport}/{matchId}/players

Request

  • Base URL: https://api.bigballsdata.com
  • URL: https://api.bigballsdata.com/v1/live-stats/{sport}/{matchId}/players
  • Auth: one of:
    • API key in header x-api-key
    • HTTP bearer

Path parameters

sport'basketball' | 'baseball' | 'ice_hockey' | 'football' | 'american_football' required
matchIdstring uuid required

Response

ok

Example response

{
  "data": {
    "teams": [
      {
        "stat_groups": [
          {
            "players": [
              {
                "player_id": "0905f056-26ed-48d0-b6b2-ca851a8836ca",
                "position": {
                  "name": "Second Base",
                  "displayName": "Second Baseman",
                  "abbreviation": "2B"
                }
              }
            ]
          }
        ]
      }
    ]
  },
  "meta": {
    "source": "aggregator-free"
  }
}

Changes

No recorded changes to this operation across all 3 revisions of this API.