Browse by category below. Select any group or question to jump straight to it. Use your browser's find (Ctrl/Cmd + F) to search the page.
Table of Contents
Getting Started
Coverage
How is each NBA game covered?
Coverage information for the NBA can be found here.
How do you handle the In-Season and Play-In Tournaments?
See our In-Season Tournament and Play-In Tournament documentation for all info.
Do you cover the NBA Summer League?
The Summer League is not covered in the NBA API. All Summer League tournaments are available under sr:competition:15822 in the Global Basketball API.
Integration
Are simulations available for this API?
Yes. You can replay past games as though they were live using our on-demand Simulations service.
What format are date fields presented in?
Date values are presented in the ISO 8601 standard format.
Timestamp fields are in UTC. These could include scheduled start times or play-by-play event timestamps. Examples: scheduled="2024-02-11T23:30:00+00:00", created_at="2024-02-11T23:43:20+00:00"
Date-only fields reflect local league convention and are not UTC-adjusted. These could include season start dates and birth dates. Examples: start_date="2024-08-16", date_of_birth="1984-09-22"
How do I locate the TTL (Time to Live)/cache on an API endpoint?
The cache (in seconds) can be accessed in the returned header information on each RESTful API call, under cache-control.
ex. cache-control: max-age=1, public, s-maxage=1 or cache-control: public, must-revalidate, max-age=120
The TTL may adjust when an event is live for some game-centric endpoints. This information is available for each endpoint on our developer portal.
Data Workflow
How can I find timings for data entry updates?
Our NBA Data Entry Workflow section covers data availability updates. This includes updates for transactions, rankings, stat validation, and more.
Schedules
How do I pull in schedule data for future games in which teams are not yet known?
This API features a TBD team used for entries into to-be-determined matchups. This virtual team will have its own unique ID specific to this API.
Find the TBD team in the Teams endpoint.
<team id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" name="TBD" alias="TBD" market="Team"/>
The matchups will appear as below in the Schedule endpoints.
<series id="0f81bb4d-1d0c-4a3b-82de-507534154095" title="NBA Finals - TBD vs TBD" round="4" start_date="2024-06-06" status="scheduled">
<games>
<game id="342f103b-0fd7-47ac-a84d-1391e3605e96" status="time-tbd" title="Game 1" coverage="full" scheduled="2024-06-06T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="71d8d5fc-6836-43c1-85a0-61a828296a06" status="time-tbd" title="Game 2" coverage="full" scheduled="2024-06-09T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="50b170b9-37e2-47d0-b517-e56ebb960cba" status="time-tbd" title="Game 3" coverage="full" scheduled="2024-06-12T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="8e94445c-c223-4a49-a759-0b651e440b95" status="time-tbd" title="Game 4" coverage="full" scheduled="2024-06-14T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="aaa3ddb3-dd1b-459e-a686-d2bfc4408881" status="if-necessary" title="Game 5 (if necessary)" coverage="full" scheduled="2024-06-17T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="7c16f1ec-6629-4675-aaaa-2a31835862a6" status="if-necessary" title="Game 6 (if necessary)" coverage="full" scheduled="2024-06-20T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
<game id="09129676-2320-4151-976d-713ea785d97b" status="if-necessary" title="Game 7 (if necessary)" coverage="full" scheduled="2024-06-23T17:00:00+00:00" neutral_site="false" track_on_court="true" home_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6" away_team="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
<time_zones/>
<home name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</home>
<away name="Team TBD" alias="TBD" id="907dc4e5-6957-4d19-b7d4-b1b7003b91e6">
</away>
</game>
</games>
</series>
"series": [
{
"id": "0f81bb4d-1d0c-4a3b-82de-507534154095",
"title": "NBA Finals - TBD vs TBD",
"round": 4,
"start_date": "2024-06-06",
"status": "scheduled",
"participants": [],
"games": [
{
"id": "342f103b-0fd7-47ac-a84d-1391e3605e96",
"status": "time-tbd",
"title": "Game 1",
"coverage": "full",
"scheduled": "2024-06-06T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "71d8d5fc-6836-43c1-85a0-61a828296a06",
"status": "time-tbd",
"title": "Game 2",
"coverage": "full",
"scheduled": "2024-06-09T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "50b170b9-37e2-47d0-b517-e56ebb960cba",
"status": "time-tbd",
"title": "Game 3",
"coverage": "full",
"scheduled": "2024-06-12T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "8e94445c-c223-4a49-a759-0b651e440b95",
"status": "time-tbd",
"title": "Game 4",
"coverage": "full",
"scheduled": "2024-06-14T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "aaa3ddb3-dd1b-459e-a686-d2bfc4408881",
"status": "if-necessary",
"title": "Game 5 (if necessary)",
"coverage": "full",
"scheduled": "2024-06-17T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "7c16f1ec-6629-4675-aaaa-2a31835862a6",
"status": "if-necessary",
"title": "Game 6 (if necessary)",
"coverage": "full",
"scheduled": "2024-06-20T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
},
{
"id": "09129676-2320-4151-976d-713ea785d97b",
"status": "if-necessary",
"title": "Game 7 (if necessary)",
"coverage": "full",
"scheduled": "2024-06-23T17:00:00+00:00",
"neutral_site": false,
"track_on_court": true,
"home": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
},
"away": {
"name": "Team TBD",
"alias": "TBD",
"id": "907dc4e5-6957-4d19-b7d4-b1b7003b91e6"
}
}
]
},
Make note of the status attribute to determine whether the time of the game is known. A status of time-tbd indicates the game has been scheduled, but a time has yet to be announced. A status of scheduled indicates the game time is known.
Game Data
Game & Series Statuses
What game statuses can I expect to see and what are their definitions?
Here are the valid game statuses and their definitions:
scheduled- The game is scheduled to occur.created- The game has been created and we have begun logging information.inprogress- The game is in progress.halftime- The game is currently at halftime.complete- The game is over, but stat validation is not complete.closed- The game is over and the stats have been validated.cancelled- The game has been cancelled. No makeup game will be played as a result.delayed- The start of the game is currently delayed or the game has gone from in progress to delayed for some reason.postponed- The game has been postponed, to be made up at another day and time. Once the makeup game is announced, a new game and ID will be created and scheduled on the announced makeup date.time-tbd- The game has been scheduled, but a time has yet to be announced.if-necessary- The game will be scheduled if it is required.unnecessary- The series game was scheduled to occur, but will not take place due to one team clinching the series early.
Learn more: the Game Status Workflow guide shows how each status maps to the right endpoint through a game's lifecycle.
What series statuses can I expect to see and what are their definitions?
Here are the valid series statuses and their definitions:
scheduled- The series is scheduled to occur.inprogress- The series is in progress.closed- The series is over.
Event Types
What are the valid events types tracked in the Play-by-Play endpoint?
Here are the valid event types tracked in the Play-by-Play endpoint:
challengereview- Instant replay (challenge: outcome)challengetimeout- team name challenge timeoutclearpathfoul- charged_to clear path foul (drawn_by draws the foul)deadball- given_to rebound (deadball)defaultviolation- charged_to violationdefensivegoaltending- charged_to defensive goaltending violationdefensivethreeseconds- charged_to defensive 3 seconds violationdelay- charged_to delay of game violationdoublelane- charged_to double lane violationejection- given_to ejected from the game (ejection_type)endperiod- End of nth period/halfflagrantone- charged_to flagrant 1 (drawn_by draws the foul)flagranttwo- charged_to flagrant 2 (drawn_by draws the foul)freethrowmade- taken_by makes free_throw_type free throw attemptfreethrowmiss- taken_by misses free_throw_type free throw attempt (charged_to lane_violation)heave- team misses heave shotjumpball- Jump ball reason. possessor vs challenger (possession gains possession)jumpballviolation- charged_to jump ball violationkickball- charged_to kicked ball violationlane- charged_to lane violationlineupchange- team_name lineup change (players)offensivefoul- charged_to offensive foul (foul_type_desc) (drawn_by draws the foul)officialtimeout- Official timeoutopeninbound- Open inbound team_nameopentip- home vs away (possession gains possession)personalfoul- charged_to personal foul (foul_type_desc) (drawn_by draws the foul)possession- possession gain possessionrebound- given_to offensive/defensive reboundrequestreview- Instant replay (request)resettimeout* - team_name reset timeoutreview- Play review (reason, outcome)shootingfoul- charged_to shooting foul (drawn_by draws the foul)startperiod- Start of nth period/halfstoppage- Stoppage (reason)teamtimeout- team_name duration second timeouttechnicalfoul- charged_to technical foul (foul_type_desc)technicalfoulnonunsportsmanlike- charged_to technical foul (foul_type_desc)threepointmade- taken_by makes three point shot_type_desc shot_type (assisted_by assists)threepointmiss- taken_by misses three point shot_type_desc shot_type or blocked_by blocks taken_by three point shot_type_desc shot_typeturnover- charged_to turnover (turnover_type_desc_)tvtimeout- TV Timeouttwopointmade- taken_by makes two point shot_type_desc shot_type (assisted_by assists)twopointmiss- taken_by misses two point shot_type_desc shot_type or blocked_by blocks taken_by two point shot_type_desc shot_type
*WNBA only
<event id="b2979d2c-f1e5-4871-bd19-570b14102491" clock="11:42" updated="2023-10-25T01:55:30Z" wall_clock="2023-10-24T23:36:13Z" sequence="1698190573000" home_points="0" away_points="2" clock_decimal="11:42" number="7" event_type="twopointmade">
<description>Anthony Davis makes two point dunk (D'Angelo Russell assists)</description><event id="fa7ebeaf-b05f-47f1-a7ce-f5976048d07c" clock="9:16" updated="2023-10-25T01:55:32Z" wall_clock="2023-10-24T23:39:22Z" sequence="1698190762600" home_points="9" away_points="10" clock_decimal="9:16" number="30" event_type="freethrowmiss" attempt="1 of 1">
<description>Nikola Jokic misses regular free throw 1 of 1</description><event id="3a67d3c2-3dfb-4c34-bf77-6f5db86c548e" clock="3:52" updated="2023-10-25T01:55:50Z" wall_clock="2023-10-25T00:22:22Z" sequence="1698193342400" home_points="54" away_points="42" clock_decimal="3:52" number="268" event_type="personalfoul">
<description>Rui Hachimura personal foul (Loose ball) (Nikola Jokic draws the foul)</description>What are the possible values for event category used in the Push Events feed?
Here are the valid event category values in the Push Events feed:
freethrowfreethrow,scorefoulfoul,flagrantfoul,warninglineupchangeperiod,stoppageperiod,stoppage,possessionpossessionshotshot,scorestoppagetimeout,stoppageturnoverviolation
"locale":"en",
"metadata":{
"league":"NBA",
"match":"sd:match:d8539eb6-3e27-40c8-906f-9cd1736321d8",
"status":"inprogress",
"team":"sd:team:583ecefd-fb46-11e1-82cb-f4ce4684ea4c,sr:team:3410",
"players":"sd:player:68b7aac9-02fd-4bd8-b10c-6702d2c5eb98,sd:player:ffa9a64f-d624-4033-bd23-59dcfd805175,sd:player:c7a6b9c5-c600-49d9-b7be-e2b12b464e40,sd:player:c179fb5c-9845-4e37-aef7-6e00d97548eb,sd:player:65700e81-3aa0-49a9-8a94-004f2cfb64e5,sd:player:266cd359-f378-45c6-957e-6e21378e5219,sd:player:906578a8-c01e-4799-a972-2b47e02108b9,sd:player:1c9a1c2e-3e3b-439e-8d72-0b41b17e4ba9,sd:player:c978afe7-cf22-45fc-8d0f-da8f867eb5ee,sd:player:931f7ae2-4ce4-49e6-a3ad-e24790469fec",
"event_type":"threepointmade",
"event_category":"shot,score",
"locale":"en",
"operation":"update",
"version":"v7"
}What is a heave shot and how does it behave in the API?
Heave Shot Definition:
- A “heave” shot is defined as a long-distance shot taken at the end of a quarter or half, typically when time is expiring.
- If the shot is unsuccessful (missed), it does not count as a field goal attempt for the individual player. Instead, it is logged as a team missed field goal attempt.
- If the shot is successful (made), it is credited as a normal field goal attempt for the player and team.
Play-by-Play Sample:
Game ID c4b777f4-cc46-4593-908b-8fb85a58b089 includes a good sample of heave shot behavior in the NBA API.
Note that, while the event is recorded as a team shot in the description field (Grizzlies miss heave shot), there is no corresponding statistics object which adds a shot attempt to the team for the game.
<event id="9492ef09-dd7c-496c-9aac-aa37486e896e" clock="00:00" updated="2025-10-16T01:37:08Z" wall_clock="2025-10-16T01:27:48Z" sequence="1760578068100" home_points="145" away_points="116" clock_decimal="00:00.60" created="2025-10-16T01:36:24Z" number="782" event_type="heave">
<description>Grizzlies miss heave shot</description>
<qualifiers>
<qualifier name="fromturnover"/>
</qualifiers>
<attribution name="Grizzlies" market="Memphis" id="583eca88-fb46-11e1-82cb-f4ce4684ea4c" team_basket="left" sr_id="sr:team:3415" reference="1610612763"/>
<location coord_x="455" coord_y="38" action_area="outsideright"/>
<on_court>
<home name="Hornets" market="Charlotte" id="583ec97e-fb46-11e1-82cb-f4ce4684ea4c" sr_id="sr:team:3430" reference="1610612766">
<player full_name="Liam McNeeley" jersey_number="33" id="fa142a43-00a4-4e79-be7b-d469c09dfdd0" sr_id="sr:player:2865129" reference="1642862"/>
<player full_name="KJ Simpson" jersey_number="25" id="8f6ef350-1d9a-4eda-bee9-294d0e9e64db" sr_id="sr:player:1163986" reference="1642354"/>
<player full_name="Sion James" jersey_number="4" id="fba3e1cf-82e4-412a-b8db-148f9b93ebf3" sr_id="sr:player:2079995" reference="1642883"/>
<player full_name="Pat Connaughton" jersey_number="21" id="298852ca-299d-4cb9-a9e5-6ac909582f78" sr_id="sr:player:852114" reference="1626192"/>
<player full_name="Moussa Diabate" jersey_number="14" id="78dc76b4-a810-4e4a-9418-5cf3fa03582f" sr_id="sr:player:2216782" reference="1631217"/>
</home>
<away name="Grizzlies" market="Memphis" id="583eca88-fb46-11e1-82cb-f4ce4684ea4c" sr_id="sr:team:3415" reference="1610612763">
<player full_name="Vince Williams Jr." jersey_number="5" id="0e5eb37e-e112-4587-98d8-8a9b46254f28" sr_id="sr:player:1591504" reference="1631246"/>
<player full_name="Lawson Lovering" jersey_number="34" id="b72c0b0f-48df-4724-920f-efde15dce017" sr_id="sr:player:2217844" reference="1643133"/>
<player full_name="Cam Spencer" jersey_number="24" id="9e51be65-7d39-433c-8d8c-de896da6267d" sr_id="sr:player:1876310" reference="1642285"/>
<player full_name="Cedric Coward" jersey_number="23" id="9f666f68-046c-4315-a89d-d9ec2e9a852d" sr_id="sr:player:2252757" reference="1642907"/>
<player full_name="GG Jackson" jersey_number="45" id="28549c0f-c6e6-4757-a515-dbc2e1b78007" sr_id="sr:player:2438851" reference="1641713"/>
</away>
</on_court>
</event>Play-by-Play Types
What are the valid turnover type descriptions?
Here are the valid turnover type descriptions:
-
Traveling -
Bad Pass -
Lost Ball -
Carrying -
Palming -
Out of BoundsLost BallStepBad Pass
-
Double Dribble -
Offensive Goaltending -
3-second violation -
5-second violation -
8-second violation -
10-second violation -
Back Court Violation -
Shot Clock Violation -
Lane Violation -
Illegal Assist -
Illegal Screen -
Turnover -
Too Many Players -
Excess Timeout -
Basket from Below -
Swinging Elbows -
Offensive Foul -
Punched Ball -
Opposite Basket -
Jump Ball Violation -
Inbound -
Discontinue Dribble -
5-second Violation Inbound -
Kicked ball Violation -
5-second Violation Back to the Basket
<event id="5f7be1b5-b4a2-4da9-a0d7-053f24dc8345" clock="2:14" updated="2023-10-25T01:55:52Z" wall_clock="2023-10-25T00:25:28Z" sequence="1698193528300" home_points="58" away_points="48" clock_decimal="2:14" number="289" event_type="turnover" turnover_type="Bad Pass">
<description>Austin Reaves turnover (bad pass) (Michael Porter Jr. steals)</description>{
"id": "f359da78-1de6-493d-a868-a1fa9d084edd",
"clock": "8:36",
"updated": "2023-10-25T01:55:59Z",
"description": "Nuggets turnover (shot clock violation)",
"wall_clock": "2023-10-25T00:58:14Z",
"sequence": 1698195494100,
"home_points": 70,
"away_points": 62,
"clock_decimal": "8:36",
"number": 372,
"event_type": "turnover",
"turnover_type": "Shot Clock Violation",
"qualifiers": [
{
"qualifier": "team"
}
],What are the valid stoppage reasons I can expect to see?
Here are the valid stoppage reasons:
Out of BoundsEquipment MalfunctionBlood RuleCourt CleanupInjuryOther
{
"id": "c4febe02-deb8-4855-867e-ee91e1d26147",
"clock": "00:09",
"updated": "2023-10-25T01:56:08Z",
"description": "Stoppage (Out of bounds)",
"wall_clock": "2023-10-25T01:17:27Z",
"sequence": 1698196647900,
"home_points": 87,
"away_points": 80,
"clock_decimal": "00:09.80",
"number": 486,
"event_type": "stoppage",
"on_court": {
"home": {
"name": "Nuggets",What are the valid free throw types I can expect to see?
Here are the valid free throw types:
RegularTechnicalFlagrantClear Path
<freethrow made="true" free_throw_type="regular" points="1">What are the possible values for statistics type used in the Push Events feed?
Here are the valid statistics type values in the Push Events feed:
fieldgoalassistblockattemptblockedreboundfreethrowturnoverstealpersonalfoulflagrantfoultechnicalfoulejectionfouldrawnoffensivefoul
What are the valid qualifier names?
Here are the valid qualifier names:
2ndchancefastbreakfromturnoverdefensivegoaltendingpointsinthepaintteamdeadball1freethrow2freethrowmandatory
<event id="bab1f014-4aa0-43d9-a6ca-ae52620b4165" clock="2:24" updated="2023-11-09T02:33:19Z" wall_clock="2023-11-09T01:00:33Z" sequence="1699491633100" home_points="55" away_points="51" clock_decimal="2:24" number="295" event_type="rebound">
<description>Pacers offensive rebound</description>
<qualifiers>
<qualifier name="deadball"/>
<qualifier name="team"/>
</qualifiers>Shot Types
What shot type descriptions can I expect to see?
Jump Shot (This is the only shot type for 3-point attempts)
bankdrivingdriving bankdriving floatingdriving floating bankturnaroundturnaround bankturnaround fadeawayturnaround fadeaway bankfloatingfadeawayfadeaway bankstepbackstepback bankpulluppullup bankrunningrunning pullup
Layup
alley-oopcuttingcutting finger rolldrivingdriving reversedriving finger rollfinger rollputbackreverserunningrunning reverserunning finger rollrunning alley-ooptip
Dunk
alley-ooptipdrivingdriving reverseputbackrunningreverserunning reverserunning alley-oopcutting
Tip Shot
Hook
bankdrivingdriving bankturnaroundturnaround bank
Foul Types
What are the valid foul type descriptions I can expect to see?
Here are the valid foul type descriptions:
ChargeOff the BallBlockTakeDoubleShootingClear PathLoose BallBlockingPlayer ControlShooting blockElbowingPunchingFlagrant OneFlagrant TwoAway from PlayUnsportsmanlike ConductRim HangingDelay of GameTauntingIndirectExcess TimeoutToo Many PlayersInboundDefensive Three SecondFlopping
What are the possible Unsportsmanlike and Non-Unsportsmanlike technical foul descriptions?
Non-Unsportsmanlike (Player):
Non-unsportsmanlikeRim HangingDefensive 3 secondsFlopping
Non-Unsportsmanlike (Team):
DelayIndirectExcess TimeoutToo many playersBenchTeam
Unsportsmanlike (Player):
- Null (empty)
DoubleTaunting
What ejection types can I expect to see?
Here are the valid ejection types:
TechnicalSecond TechnicalSecond Flagrant Type 1Flagrant Type 2Other
Court Dimensions
What is the scale of the X Y coordinates?
The court we use is 1128 by 600. The scale is in inches.
What x/y vertices define action areas in the x/y coordinate graph?
A list of areas is included below. Note that these vertices are for the left side of the court. For the right side, we use the following calculation, where length=1128 and width=600:
- right-court-point = (length - x, width - y)
- left_basket=[63, 300]
- right_basket=[1065, 300]
Areas:
- underbasket: [ 48, 252 ], [ 64, 252 ], [ 80, 255 ], [ 94, 263 ], [ 105, 276 ], [ 111, 292 ], [ 111, 308 ], [ 105, 324 ], [ 94, 337 ], [ 80, 345 ], [ 64, 348 ], [ 48, 348 ]
- inthepaint: [ 0, 203 ], [ 228, 203 ], [ 228, 395 ], [ 0, 395 ]
- insiderightwing: [ 0, 36 ], [ 168, 36 ], [ 101, 203 ], [ 0, 203 ]
- insideright: [ 168, 36 ], [ 200, 50 ], [ 230, 69 ], [ 259, 93 ], [ 279, 114 ], [ 300, 141 ], [ 308, 155 ], [ 228, 203 ], [ 228, 203 ],[ 101, 203 ]
- insidecenter: [ 228, 203 ], [ 308, 155 ], [ 325, 188 ], [ 338, 224 ], [ 345, 261 ], [ 348, 299 ], [ 346, 337 ], [ 338, 374 ],[ 326, 410 ], [ 309, 444 ], [ 228, 395 ]
- insideleft: [ 228, 395 ], [ 228, 395 ], [ 309, 444 ], [ 300, 458 ], [ 280, 485 ], [ 260, 506 ], [ 230, 531 ], [ 200, 550 ], [ 168, 564 ], [ 101, 395 ]
- insideleftwing: [ 0, 564 ], [ 168, 564 ], [ 100, 395 ], [ 0, 395 ]
- outsiderightwing: [ 0, 0 ], [ 182, 0 ], [ 168, 36 ], [ 0, 36 ]
- outsideright: [ 182, 0 ], [ 564, 0 ], [ 308, 155 ], [ 300, 141 ], [ 279, 114 ], [ 259, 93 ], [ 230, 69 ], [ 200, 50 ], [ 168, 36 ]
- outsidecenter: [ 308, 155 ], [ 564, 0 ], [ 564, 600 ], [ 309, 444 ], [ 326, 410 ], [ 338, 374 ], [ 346, 337 ], [ 348, 299 ], [ 345, 261 ], [ 338, 224 ], [ 325, 188 ]
- outsideleft: [ 182, 600 ], [ 564, 600 ], [ 309, 444 ], [ 300, 458 ], [ 280, 485 ], [ 260, 506 ], [ 230, 531 ], [ 200, 550 ], [ 168, 564 ]
- outsideleftwing: [ 0, 600 ], [ 182, 600 ], [ 168, 564 ], [ 0, 564 ]
- backcourt: [ 564, 0 ], [ 1128, 0 ], [ 1128, 600 ], [ 564, 600 ]
Why does the team_basket attribution in the Play-by-Play endpoint not match the basket orientation (left vs. right) in the broadcast or game tracking?
team_basket attribution in the Play-by-Play endpoint not match the basket orientation (left vs. right) in the broadcast or game tracking?Our team_basket attribution is set to match the orientation of the local television broadcast, which is on the opposite side of the scorer's table. The team_basket attribution may not match the orientation used by the particular broadcast or game tracker that you are viewing.
If you want to provide a perspective from the scorer's table, you will have to map the coordinates so that the coordinates attributed to left side of the court are attributed to the right side of the court on your end (and vice versa).
Scoring
When are scores added to the schedule feeds?
Final scores are added to the schedule feeds when the game status changes to complete.
Players & Personnel
Player Statuses
What player statuses can I expect to see?
Here are the valid player statuses:
ACT- The player is on the team’s active rosterSUS- The player is suspendedIR- The player is on injured reserveTWO-WAY- The player is on a two-way contractNWT- The player is no longer with the teamFA- Free AgentRET- RetiredDUP- DuplicateTEN-DAY- The player is on a ten-day contract
Why is a player missing a player.id in a game?
player.id in a game?Player id is an optional attribute and may be absent for a period of time in a game.
In some instances (mostly preseason games) players will appear on a roster who are previously unmapped in Sportradar's database. In these instances, a player may be without an id for a period of time.
This could also occur in a regular season game, but will be resolved prior to game start.
Why does a player have a status of active=true alongside a not_playing_reason?
active=true alongside a not_playing_reason?For more information on in-game player statuses and rosters see our NBA Integration Guide.
Do in-game injuries affect player status updates?
In-game injuries do not affect player status updates.
Player Positions
What player positions can I expect to see?
Here are the valid player positions:
NACC-FFF-CF-GGG-F
What player primary positions can I expect to see?
Here are the valid player primary positions:
NACPFPGSFSG
<player id="d0c7135a-1aea-40cb-ba20-df656de71749" status="ACT" full_name="Anthony Edwards" first_name="Anthony" last_name="Edwards" abbr_name="A.Edwards" height="76" weight="225" position="G" primary_position="SG"Injuries
What player injury statuses can I expect to see?
What are the possible values for player - not_playing_reason?
player - not_playing_reason?Click to view all valid reasons
- DND - Coaches Decision
- DND - Concussion Protocol
- DND - G League - On Assignment
- DND - G league
- DND - G league - Two-Way
- DND - Health and Safety Protocols
- DND - Injury/Illness
- DND - League Suspension
- DND - Not With Team
- DND - Return to Competition Reconditioning
- DND - Suspended
- DND - Team Suspension
- DND - Trade Pending
- DND – Ineligible to Play
- DND – Personal
- DND – Rest
- DNP - Concussion Protocol
- DNP - G LEAGUE - Two-Way
- DNP - G League
- DNP - G League - On Assignment
- DNP - Health and Safety Protocols
- DNP - League Suspension
- DNP - Not With Team
- DNP - Return to Competition Reconditioning
- DNP - Team Suspension
- DNP - Trade Pending
- DNP – Coach's Decision
- DNP – Ineligible to Play
- DNP – Injury/Illness
- DNP – Personal
- DNP – Rest
- DNP – Suspended
- Inactive - Coaches Decision
- Inactive - G League - On Assignment
- Inactive - G League - Two-Way
- Inactive - G League Team
- Inactive - Health and Safety Protocols
- Inactive - Injury/Illness
- Inactive - League Suspension
- Inactive - Not With Team
- Inactive - Not With Team Return To Competition Reconditioning
- Inactive - Self Isolating
- Inactive - Team Suspension
- Inactive - Trade Pending
- Inactive – Concussion Protocol
- Inactive – Ineligible to Play
- Inactive – Personal
- Inactive – Pregnancy Childbirth
- Inactive – Rest
- Inactive – Return to Competition Reconditioning
- Inactive – Suspended
- NWT - Coaches Decision
- NWT - Concussion Protocol
- NWT - G League
- NWT - G League - On Assignment
- NWT - G League - Two-Way
- NWT - Health and Safety Protocols
- NWT - Injury/Illness
- NWT - League Suspension
- NWT - Not With Team
- NWT - Return to Competition Reconditioning
- NWT - Self Isolating
- NWT - Suspended
- NWT - Team Suspension
- NWT - Trade Pending
- NWT – Ineligible to Play
- NWT – Personal
- NWT – Rest
- NWT- Returning to Competition Reconditioning
<player full_name="Trey Murphy III" jersey_number="25" id="51b62fe8-1e5c-4c65-8ad3-2ad06e749b70" first_name="Trey" last_name="Murphy III" position="G-F" primary_position="SF" name_suffix="III" not_playing_reason="Inactive - Injury/Illness" not_playing_description="Left Knee; Partial Meniscectomy " on_court="false" sr_id="sr:player:2196318" reference="1630530">{
"full_name": "Wendell Moore Jr.",
"jersey_number": "7",
"id": "e23521cd-8e92-4701-b9e7-dc4acd21dfec",
"first_name": "Wendell",
"last_name": "Moore Jr.",
"position": "G",
"primary_position": "SG",
"name_suffix": "Jr.",
"not_playing_reason": "Inactive - G League - On Assignment",
"on_court": false,
"sr_id": "sr:player:1797216",
"reference": "1631111",
"statistics": {}
},When do DND (Did Not Dress) and DNP (Did Not Play) populate?
DND (Did Not Dress) and DNP (Did Not Play) populate?DNDstatus populates when the initial game rosters are setDNPstatus populates after the game is complete
<player full_name="Devonte' Graham" jersey_number="4" id="604571ce-5be8-4938-b8fb-945ff8d15f8d" first_name="Devonte'" last_name="Graham" position="G" primary_position="PG" active="true" not_playing_reason="DNP – Coach's Decision" on_court="false" sr_id="sr:player:1497683" reference="1628984">{
"full_name": "Devonte' Graham",
"jersey_number": "4",
"id": "604571ce-5be8-4938-b8fb-945ff8d15f8d",
"first_name": "Devonte'",
"last_name": "Graham",
"position": "G",
"primary_position": "PG",
"active": true,
"not_playing_reason": "DNP – Coach's Decision",
"on_court": false,
"sr_id": "sr:player:1497683",
"reference": "1628984",
}See this guide for more on integrating injury data into your application.
Transactions
What are the valid transaction_code and transaction_type values?
transaction_code and transaction_type values?Here are the valid transaction codes and types:
ACT-ActivatedMIN-Assigned to MinorsCL-ClaimedCEXP-Contract ExpiredCEXT-Contract ExtensionDEC-DeceasedFA-Declared Free AgencyDRA-DraftedSUS-League SuspensionABS-Leave of AbsenceNWT-Not With TeamTRAN-Other TransactionINACT-Placed on Inactive ListRSGN-Re-SignedREC-Recalled from MinorsRSUS-Reinstated from SuspensionREL-ReleasedRET-RetiredEDRA-Selected in Expansion DraftSGN-Signed10D-Signed to 10-Day Contract10D2-Signed to Second 10-Day ContractTSUS-Team SuspensionTRD-TradedWA-Waived
For more on integrating transaction data into your application, see this guide.
Statistics
Standings & Rankings
What are the valid clinched playoff values for a team in the Rankings endpoint?
clinched playoff values for a team in the Rankings endpoint?Here is a list of the clinched values and their definitions:
conference- The team has clinched the best record home-court advantage throughout the conference playoffsdivision- The team has clinched their divisiondivision_playoff_berth- The team has clinched both their division and a playoff bertheliminated- The team has been eliminated from postseason contentionplayoff_berth- The team has clinched a playoff berth (top 6 seed in regular season, or advanced through Play-In Tournament)play_in_berth- The team has clinched a Play-In Tournament berth (locked into 7-10 seed)postseason_berth- The team has clinched a spot in the postseason (guaranteed top 10 seed), but has not yet secured either a playoff berth or play-in positioning
<division id="582d6502-9a93-4a8d-8785-69374d732875" name="Atlantic" alias="ATLANTIC">
<team id="583eccfa-fb46-11e1-82cb-f4ce4684ea4c" name="Celtics" market="Boston" sr_id="sr:team:3422" reference="1610612738">
<rank conference="1" division="1" clinched="conference"/>
</team>
<team id="583ec70e-fb46-11e1-82cb-f4ce4684ea4c" name="Knicks" market="New York" sr_id="sr:team:3421" reference="1610612752">
<rank conference="2" division="2" clinched="playoff_berth"/>
</team>
<team id="583ec87d-fb46-11e1-82cb-f4ce4684ea4c" name="76ers" market="Philadelphia" sr_id="sr:team:3420" reference="1610612755">
<rank conference="7" division="3" clinched="playoff_berth"/>
</team>
<team id="583ec9d6-fb46-11e1-82cb-f4ce4684ea4c" name="Nets" market="Brooklyn" sr_id="sr:team:3436" reference="1610612751">
<rank conference="11" division="4" clinched="eliminated"/>
</team>
<team id="583ecda6-fb46-11e1-82cb-f4ce4684ea4c" name="Raptors" market="Toronto" sr_id="sr:team:3433" reference="1610612761">
<rank conference="12" division="5" clinched="eliminated"/>
</team>
</division>{
"id": "582d6502-9a93-4a8d-8785-69374d732875",
"name": "Atlantic",
"alias": "ATLANTIC",
"teams": [
{
"id": "583eccfa-fb46-11e1-82cb-f4ce4684ea4c",
"name": "Celtics",
"market": "Boston",
"sr_id": "sr:team:3422",
"reference": "1610612738",
"rank": {
"conference": 1,
"division": 1,
"clinched": "conference"
}
},
{
"id": "583ec70e-fb46-11e1-82cb-f4ce4684ea4c",
"name": "Knicks",
"market": "New York",
"sr_id": "sr:team:3421",
"reference": "1610612752",
"rank": {
"conference": 2,
"division": 2,
"clinched": "playoff_berth"
}
},
{
"id": "583ec87d-fb46-11e1-82cb-f4ce4684ea4c",
"name": "76ers",
"market": "Philadelphia",
"sr_id": "sr:team:3420",
"reference": "1610612755",
"rank": {
"conference": 7,
"division": 3,
"clinched": "playoff_berth"
}
},
{
"id": "583ec9d6-fb46-11e1-82cb-f4ce4684ea4c",
"name": "Nets",
"market": "Brooklyn",
"sr_id": "sr:team:3436",
"reference": "1610612751",
"rank": {
"conference": 11,
"division": 4,
"clinched": "eliminated"
}
},
{
"id": "583ecda6-fb46-11e1-82cb-f4ce4684ea4c",
"name": "Raptors",
"market": "Toronto",
"sr_id": "sr:team:3433",
"reference": "1610612761",
"rank": {
"conference": 12,
"division": 5,
"clinched": "eliminated"
}
}
]
},Why do early-season standings list teams that haven’t played yet above teams that are 0-1?
We follow the official NBA standings ordering. In the NBA’s published standings (including preseason/early regular season), teams with no games played are listed ahead of teams with a loss.
Stat Definitions
How do you define a team rebound?
A team rebound is recorded when no individual player is credited with a rebound following a missed field goal or free throw, but the team gains or is awarded possession of the ball.
Typical scenarios include:
- The ball goes out of bounds after a missed shot without any player securing control
- Possession is awarded after certain violations (e.g., lane violations, loose-ball fouls)
- Simultaneous recovery situations where no single player can be identified as controlling the rebound
Every missed shot must result in either a player rebound or a team rebound to maintain statistical balance.
{
"id": "287b808f-c78d-4dfc-b0a6-cc1b21a555ea",
"clock": "10:13",
"updated": "2025-10-16T01:36:06Z",
"description": "Ryan Kalkbrenner misses two point tip layup",
"wall_clock": "2025-10-15T23:12:54Z",
"sequence": 1760569974300,
"home_points": 5,
"away_points": 4,
"clock_decimal": "10:13",
"created": "2025-10-15T23:16:43Z",
"number": 41,
"event_type": "twopointmiss",
"qualifiers": [
{
"qualifier": "pointsinthepaint"
},
{
"qualifier": "2ndchance"
}
],
"attribution": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"team_basket": "left",
"sr_id": "sr:team:3430",
"reference": "1610612766"
},
"location": {
"coord_x": 78,
"coord_y": 313,
"action_area": "underbasket"
},
"on_court": {
"home": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3430",
"reference": "1610612766",
"players": [
{
"full_name": "LaMelo Ball",
"jersey_number": "1",
"id": "be53f27f-c666-4bd2-8fcd-0713f963aa2b",
"sr_id": "sr:player:1875466",
"reference": "1630163"
},
{
"full_name": "Kon Knueppel",
"jersey_number": "7",
"id": "0b9a642d-d6f6-4c65-a7bd-d82e016e1b5d",
"sr_id": "sr:player:2838879",
"reference": "1642851"
},
{
"full_name": "Miles Bridges",
"jersey_number": "0",
"id": "af8f331b-96a6-416e-8837-b14d5b11c52d",
"sr_id": "sr:player:1158306",
"reference": "1628970"
},
{
"full_name": "Ryan Kalkbrenner",
"jersey_number": "11",
"id": "388ec80d-171a-48f7-9cc8-5a8bebde54e0",
"sr_id": "sr:player:2075373",
"reference": "1641750"
},
{
"full_name": "Brandon Miller",
"jersey_number": "24",
"id": "775e4450-cdcd-43a1-b4cd-dc29fba48503",
"sr_id": "sr:player:2438503",
"reference": "1641706"
}
]
},
"away": {
"name": "Grizzlies",
"market": "Memphis",
"id": "583eca88-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3415",
"reference": "1610612763",
"players": [
{
"full_name": "Jaylen Wells",
"jersey_number": "0",
"id": "f2d36d30-3544-41cb-831d-afec9e256418",
"sr_id": "sr:player:2492961",
"reference": "1642377"
},
{
"full_name": "Javon Small",
"jersey_number": "10",
"id": "d1951755-732a-453b-bede-69ff9e5a595c",
"sr_id": "sr:player:2218444",
"reference": "1642914"
},
{
"full_name": "Jaren Jackson Jr.",
"jersey_number": "8",
"id": "3e492a6a-ed3c-499d-b3f5-ff68ca16f6fd",
"sr_id": "sr:player:1316824",
"reference": "1628991"
},
{
"full_name": "Jock Landale",
"jersey_number": "31",
"id": "02dc6e18-95a4-4919-b4fc-f8a981ccd359",
"sr_id": "sr:player:1159256",
"reference": "1629111"
},
{
"full_name": "Kentavious Caldwell-Pope",
"jersey_number": "3",
"id": "cecc054e-b9ec-4c71-8bbb-5ee665a8c3a9",
"sr_id": "sr:player:608182",
"reference": "203484"
}
]
}
},
"statistics": [
{
"type": "fieldgoal",
"made": false,
"shot_type": "layup",
"shot_type_desc": "tip",
"shot_distance": 1.65,
"team": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3430",
"reference": "1610612766"
},
"player": {
"full_name": "Ryan Kalkbrenner",
"jersey_number": "11",
"id": "388ec80d-171a-48f7-9cc8-5a8bebde54e0",
"sr_id": "sr:player:2075373",
"reference": "1641750"
}
}
]
},
{
"id": "a908bef6-b62a-4bd7-b66d-f862e6942e32",
"clock": "10:13",
"updated": "2025-10-16T01:36:06Z",
"description": "Hornets offensive rebound",
"wall_clock": "2025-10-15T23:12:54Z",
"sequence": 1760569974300,
"home_points": 5,
"away_points": 4,
"clock_decimal": "10:13",
"created": "2025-10-15T23:16:43Z",
"number": 42,
"event_type": "rebound",
"qualifiers": [
{
"qualifier": "team"
}
],
"attribution": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"team_basket": "left",
"sr_id": "sr:team:3430",
"reference": "1610612766"
},
"location": {
"coord_x": 78,
"coord_y": 313,
"action_area": "underbasket"
},
"possession": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3430",
"reference": "1610612766"
},
"on_court": {
"home": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3430",
"reference": "1610612766",
"players": [
{
"full_name": "LaMelo Ball",
"jersey_number": "1",
"id": "be53f27f-c666-4bd2-8fcd-0713f963aa2b",
"sr_id": "sr:player:1875466",
"reference": "1630163"
},
{
"full_name": "Kon Knueppel",
"jersey_number": "7",
"id": "0b9a642d-d6f6-4c65-a7bd-d82e016e1b5d",
"sr_id": "sr:player:2838879",
"reference": "1642851"
},
{
"full_name": "Miles Bridges",
"jersey_number": "0",
"id": "af8f331b-96a6-416e-8837-b14d5b11c52d",
"sr_id": "sr:player:1158306",
"reference": "1628970"
},
{
"full_name": "Ryan Kalkbrenner",
"jersey_number": "11",
"id": "388ec80d-171a-48f7-9cc8-5a8bebde54e0",
"sr_id": "sr:player:2075373",
"reference": "1641750"
},
{
"full_name": "Brandon Miller",
"jersey_number": "24",
"id": "775e4450-cdcd-43a1-b4cd-dc29fba48503",
"sr_id": "sr:player:2438503",
"reference": "1641706"
}
]
},
"away": {
"name": "Grizzlies",
"market": "Memphis",
"id": "583eca88-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3415",
"reference": "1610612763",
"players": [
{
"full_name": "Jaylen Wells",
"jersey_number": "0",
"id": "f2d36d30-3544-41cb-831d-afec9e256418",
"sr_id": "sr:player:2492961",
"reference": "1642377"
},
{
"full_name": "Javon Small",
"jersey_number": "10",
"id": "d1951755-732a-453b-bede-69ff9e5a595c",
"sr_id": "sr:player:2218444",
"reference": "1642914"
},
{
"full_name": "Jaren Jackson Jr.",
"jersey_number": "8",
"id": "3e492a6a-ed3c-499d-b3f5-ff68ca16f6fd",
"sr_id": "sr:player:1316824",
"reference": "1628991"
},
{
"full_name": "Jock Landale",
"jersey_number": "31",
"id": "02dc6e18-95a4-4919-b4fc-f8a981ccd359",
"sr_id": "sr:player:1159256",
"reference": "1629111"
},
{
"full_name": "Kentavious Caldwell-Pope",
"jersey_number": "3",
"id": "cecc054e-b9ec-4c71-8bbb-5ee665a8c3a9",
"sr_id": "sr:player:608182",
"reference": "203484"
}
]
}
},
"statistics": [
{
"type": "rebound",
"rebound_type": "offensive",
"team": {
"name": "Hornets",
"market": "Charlotte",
"id": "583ec97e-fb46-11e1-82cb-f4ce4684ea4c",
"sr_id": "sr:team:3430",
"reference": "1610612766"
}
}
]
},What formulas are used to calculate efficiency and efficiency game score?
Here are the formulas we use:
Efficiency
Points + Rebounds + Assists + Steals + Blocks
− Missed Field Goal Attempts − Missed Free Throw Attempts − Turnovers
Efficiency Game Score
Points
+ (0.4 × Field Goals Made)
− (0.7 × Field Goals Attempted)
− (0.4 × Free Throws Missed)
+ (0.7 × Offensive Rebounds)
+ (0.3 × Defensive Rebounds)
+ Steals
+ (0.7 × Assists)
+ (0.7 × Blocks)
− (0.4 × Personal Fouls)
− Turnovers
Note: For team efficiency calculations, statistics attributed to the team rather than a player are not counted (i.e. team rebounds, team turnovers, team fouls, etc.).
Reference Data
Splits
What types of splits do you provide?
Our splits are broken down into the following categories based on feed endpoint:
Game:
homelossopponentover_500roadunder_500venuewin
Hierarchy:
conferencedivision
In-game:
higher_fg_pctless_personal_foulsless_reboundsless_turnoverslower_fg_pctmore_personal_foulsmore_reboundsmore_turnoversover_100_againstover_100_forsame_personal_foulssame_reboundssame_turnoversunder_100_againstunder_100_for
Schedule:
days_of_restday_of_weeklast_5last_10monthweek
Languages
Do you provide your feeds in any languages other than English?
Currently, we provide our feeds in the following languages:
- Brazilian Portuguese:
br - English:
en - French:
fr - German:
de - Greek:
el - Indonesian:
id - Italian:
it - Japanese:
ja - Korean:
ko - Russian:
ru - Simplified Chinese:
zh - Spanish:
es - Tagalog:
tl - Turkish:
tr
Please note our translations include teams, players, and play-by-play descriptions. The feeds themselves are in English, but the content of the attributes is translated.
Failover
Are there cases when not all game data is available?
Yes, in cases when Sportradar is unable to receive data from the venue, Sportradar's in-house operators will take over coverage of the game. In these cases, the following data points will not be available or will not update during the game.
For more information about failover data points, see the Live Game Updates section in the NBA Integration Guide.
Special Events
All-Star Game
How do I locate the All-Star game(s)?
The games can be found in the regular season Schedule endpoint or in the Daily Schedule endpoint.
Every game-centric feed (e.g. Game Play-by-Play, Game Summary, Push Events) can be accessed during the game. Click here for a Game Summary or Play-by-Play sample of the 2022 game, or replay available games via our Simulations.
Is the All-Star game covered in realtime?
Yes. Each All-Star game is covered in realtime, with full team and player statistics.
How are team Ids handled?
All-Star teams may represent Conferences (East/West), team captains (Team Durant East), or other groupings (Team USA/Global Stars/Young Stars). Each team retains their unique Id across seasons. Conference team Ids are consistent beginning in 2024.
All team Ids can be found in the Teams endpoint. Please note that they are not present in the League Hierarchy endpoint.
When are the All-Star rosters set?
All-Star game rosters will be available shortly prior to tipoff.
Please note that we only provide game rosters (not team rosters) for each game. Request the Game Summary endpoint prior to the game to receive rosters.
If you require rosters earlier, we suggest using the Team Profile endpoints of each NBA team to pull in players manually.
Do you cover any of the other All-Star game events?
Yes. We also cover the Rising Stars Challenge in the NBA API. Locate these games in the Schedule or Daily Schedule endpoints.
We do not cover any of the isolated events, such as the Slam Dunk Contest or Three-Point Contest.
How do clock values and minutes played behave for untimed games?
Clock values - Games begin with a clock value of 99 minutes and decrease as the game progresses. We recommend to ignore our clock values for these events.
Player minutes played - Due to unlimited events, minutes played for players may return odd values during a game. Our data entry team will adjust the values during the closing process.
Click here for inprogress samples of a 2025 "OGs at Rising Stars" game, or replay available games via our Simulations.
NBA Draft
When should I expect to see prospect data in the Prospects endpoint?
College prospects will appear after the NCAA Early-Entrant withdrawal deadline has passed.
International prospects will appear after the NBA Early-Entrant withdrawal deadline has passed.
When does the Draft order become available?
We set the NBA Draft order - and populate the yearly Draft Summary endpoint - after all 1st and 2nd round picks have been determined. This is typically made available after the NBA Draft lottery in mid-May.
When should I expect pre-draft trades to be reflected in Trades and Draft Summary endpoints?
The Trades and Draft Summary endpoints will reflect pre-draft trades after the NBA Draft Lottery has occurred.
When are drafted players added to the core endpoints?
Drafted players will be available on their NBA team (Team Profile) after each completed round.
For more details about NBA Draft solutions, check out our Draft integration scenario.
More questions?Reach out to [email protected] for further assistance.
