Basketball API — Data and Field Reference
Field definitions and example payloads from the ShotTracker Event API (basketball). Use this when parsing responses or building integrations.
Box score stats
The system emits box score stats under these abbreviations. Stats are paired together to represent the most current values for the given player.
| Stat name | Description |
|---|---|
| FGA | field goal attempt |
| FG | field goal |
| FGA3 | 3 point field goal attempt |
| FG3 | 3 point field goal |
| FGA2 | 2 point field goal attempt |
| FG2 | 2 point field goal |
| FTA | free throw attempt |
| FT | free throw |
| PTS | points |
| AST | assist |
| TO | turnover |
| STL | steal |
| REB | rebound |
| OFFENSIVE_REB | offensive rebound; typically paired with REB |
| DEFENSIVE_REB | defensive rebound; typically paired with REB |
| DIST | distance traveled in cm |
| FL | foul |
| BLK | block |
| TEAM_SCORE | current team score for the given team_id; only for scoring stat in games |
| OPPOSING_TEAM_SCORE | current opposing team score; only for scoring stat in games |
Stats classification values
Each stats response includes a classification field describing what the stat values represent (e.g. make, miss, deleted, updated).
| Value | Description |
|---|---|
| FREE_THROW_MISS | Missed free throw |
| FREE_THROW_MAKE | Made free throw |
| TWO_POINT_MISS | Missed field goal |
| TWO_POINT_MAKE | Made field goal |
| THREE_POINT_MISS | Missed 3 point field goal |
| THREE_POINT_MAKE | Made 3 point field goal |
| ASSIST | Assist |
| TURNOVER | Turnover |
| STEAL | Steal |
| REBOUND | Rebound |
| OFFENSIVE_REBOUND | Offensive rebound |
| DEFENSIVE_REBOUND | Defensive rebound |
| DISTANCE | Distance traveled |
| DELETED_TWO_POINT_MAKE | Deleted made field goal |
| UPDATED_TWO_POINT_MAKE_TO_MISS | Updated field goal from make to miss |
Shot attributes
Shots can have the following attributes (used in shot data).
| Attribute | Description |
|---|---|
| CAS | Catch and shoot |
| OTD | Off the dribble |
| GUARDED | Guarded shot |
| UNGUARDED | Unguarded shot |
| CLEAN | Made shot without touching the rim |
| DUNK | Dunk |
| LAYUP | Layup |
| JUMPSHOT | Jump shot |
| FADEAWAY | Fade away |
| HOOKSHOT | Hook shot |
| STEPBACKJUMPSHOT | Stepback jump shot |
| PULLUPJUMPSHOT | Pullup jump shot |
Example payloads (live / websocket)
Stats (live / websocket)
Box score stats update. Values reflect the most current stat values for the player.
{"type":"stats","data":{"occurred_at":1500571319432,"team_id":461,"player_id":2623,"stats":{"FGA":15.0,"FG":8.0,"PTS":17.0},"classification":"TWO_POINT_MAKE","version":1941}}Fields
- type— Always "stats" for this payload.
- data.occurred_at(number)— Epoch timestamp in milliseconds when the stat occurred.
- data.team_id(number)— ShotTracker team ID.
- data.player_id(number)— Player ID.
- data.stats(object)— Key-value of stat abbreviation to current value (e.g. FGA, FG, PTS).
- data.classification(string)— What the stat change represents (e.g. TWO_POINT_MAKE, DELETED_TWO_POINT_MAKE).
- data.version(number)— Version number for this stat update.
Shot (live / websocket)
Location data for a made or missed shot, including ShotTracker zones. All xy data is in mm.
{"type":"shot","data":{"occurred_at":1500571319432,"team_id":461,"player_id":2623,"is_make":true,"is_3point":false,"zone":1,"hoop_player_x":685,"hoop_player_y":-475,"status":"RECORDED"}}Fields
- type— Always "shot" for this payload.
- data.occurred_at(number)— Epoch timestamp in milliseconds.
- data.team_id(number)— Team ID.
- data.player_id(number)— Player ID.
- data.is_make(boolean)— True if the shot was made.
- data.is_3point(boolean)— True if a 3-point attempt.
- data.zone(number)— ShotTracker zone ID (see zone maps in docs).
- data.hoop_player_x(number)— X position in mm (hoop-relative).
- data.hoop_player_y(number)— Y position in mm (hoop-relative).
- data.status(string)— e.g. RECORDED.
Location (live / websocket)
Plotable xyz data for a player or the ball. Type denotes sensor (PLAYER or BALL). xyz in mm; speed in m/s; dist in km.
{"type":"location","data":{"occurred_at":1500571321532,"type":"PLAYER","id":2942,"x":2314,"y":-8635,"z":69,"speed":0.1,"dist":1.3}}Fields
- type— Always "location" for this payload.
- data.occurred_at(number)— Epoch timestamp in milliseconds.
- data.type(string)— "PLAYER" or "BALL".
- data.id(number)— For PLAYER: player list ID from subscription; for BALL: ball sensor ID.
- data.x(number)— X position in mm.
- data.y(number)— Y position in mm.
- data.z(number)— Z position in mm.
- data.speed(number)— Current movement speed in m/s.
- data.dist(number)— Total distance traveled in km (players only).
Common response shapes
Events list (e.g. GET /v1/data/teams/{team_id}/events)
- events(array)— List of practice and/or game events.
- events[].id(string)— Event UUID.
- events[].name(string)— Event name (e.g. "TeamAppTeam vs TestTeamAlpha").
- events[].results(array)— Game rounds or drill results with _stats, _shots, _possessions links.
- events[].is_practice_event(boolean)— True if practice.
- events[].is_game_event(boolean)— True if game.
- events[].started_at(number)— Epoch ms when event started.
- events[].ended_at(number)— Epoch ms when event ended.
- events[].game_type(string)— HALF or QUARTER for games.
- events[]._self(string)— Self link for the event.
- events[].totals(object)— Links to full game stats (e.g. _stats_details).
- events[].game_attributes(object)— home_team_id, away_team_id, home_team_name, away_team_name.
Subscription token response
- live_data_source(string)— e.g. "SHOTTRACKER".
- token(string)— Subscription token for websocket or API access.
- token_data_types(array)— ["STATS","SHOTS","LOCATIONS"].
- home_team_id(number)— Home Team ID.
- teams(array)— Team list with id, name, players.
- teams[].id(number)— Team ID.
- teams[].name(string)— Team name.
- teams[].players(array)— Players with id, first_name, last_name, jersey_number, position, is_active, reference_id.
- _stats(string)— URL to stats endpoint (or null).
- _shots(string)— URL to shots endpoint (or null).
- event_totals(object)— e.g. team_scores.
Error response (4xx/5xx)
- status(number)— HTTP-like status (e.g. 422, 403, 404, 500).
- message(string)— Human-readable error message.
- shottrackerRequestId(string)— Request ID for support.