Appearance
Basket Cuts
The cuts section in the markings response contains one row for each basket cut we identify in the tracking data.
Overview
A basket cut occurs when an offensive player without the ball cuts towards the rim, not including rolls by the screener out of picks or cuts off of off ball screens. A basket cut is defined as ending when the player stops moving closer to the rim.
This includes players moving along the baseline from the "dunker" area toward the rim. It also includes situations where a player is running to a spot on offense to set up a play. (These types of cuts can be filtered out by using the is_outside_of_halfcourt_action field. See below for more details.)
Sample Response
json
{
"markings": {
"cuts": [
{
"after_hoop_distance_in": 74.61,
"after_loc_x": 45.18,
"after_loc_y": -89.34,
"chance_id_ctg": "chance_51bfc1fda2cc0deb125bee9988859667",
"cut_id_ctg": "cut_2f0fa5a8c7ab41fcb46e2f09e4b7e8a1",
"cut_roundness_distance_in": 21.44,
"cut_roundness_side": "left",
"cutter_action_fouled": false,
"cutter_action_pass": true,
"cutter_action_shot": false,
"cutter_action_turnover": false,
"end_game_clock": 421.57,
"end_he_frame": 68241,
"end_hoop_distance_in": 70.92,
"end_loc_x": 38.74,
"end_loc_y": -95.87,
"end_shot_clock": 11.3,
"end_wall_clock": "2026-01-18T02:22:14.183+00:00",
"game_id_nba": "0022500511",
"is_cross_court": false,
"is_direct": true,
"is_outside_of_halfcourt_action": false,
"period": 3,
"player_id_nba": 1629012,
"received_ball": true,
"start_game_clock": 423.12,
"start_he_frame": 68148,
"start_hoop_distance_in": 82.37,
"start_loc_x": 55.91,
"start_loc_y": -77.02,
"start_shot_clock": 12.8,
"start_wall_clock": "2026-01-18T02:22:12.633+00:00"
}
]
}
}Fields
Identifiers
cut_id_ctg
Type: string
CTG-generated unique identifier for this cut.
game_id_nba
Type: string
NBA game ID
chance_id_ctg
Type: string | Nullable
CTG chance ID linking this cut to the chance in which it occurred.
player_id_nba
Type: integer
NBA player ID of the cutter
Timing
period
Type: integer
Period in which the cut occurred. Overtime would be period 5, double overtime period 6, etc.
start_he_frame
Type: integer
Hawk-Eye frame when cut began
end_he_frame
Type: integer
Hawk-Eye frame when cut ended
start_game_clock
Type: float | Unit: seconds
Game clock when cut began
end_game_clock
Type: float | Unit: seconds
Game clock when cut ended
start_shot_clock
Type: float | Unit: seconds | Nullable
Shot clock when cut began
end_shot_clock
Type: float | Unit: seconds | Nullable
Shot clock when cut ended
start_wall_clock
Type: string
UTC timestamp when cut began
end_wall_clock
Type: string
UTC timestamp when cut ended
Location And Distance
start_hoop_distance_in
Type: float | Unit: inches
Distance from cutter to the offensive basket at cut start.
end_hoop_distance_in
Type: float | Unit: inches
Distance from cutter to the offensive basket at cut end.
after_hoop_distance_in
Type: float | Unit: inches | Nullable
Distance from cutter to the offensive basket shortly after the cut ended. This can help detect if the player stops or continues moving through, for example to the opposite side of the rim.
start_loc_x
Type: float | Unit: inches
X coordinate of the player's centroid at the start of the cut.
start_loc_y
Type: float | Unit: inches
Y coordinate of the player's centroid at the start of the cut.
end_loc_x
Type: float | Unit: inches
X coordinate of the player's centroid at the end of the cut.
end_loc_y
Type: float | Unit: inches
Y coordinate of the player's centroid at the end of the cut.
after_loc_x
Type: float | Unit: inches | Nullable
X coordinate of the player's centroid shortly after the cut ended.
after_loc_y
Type: float | Unit: inches | Nullable
Y coordinate of the player's centroid shortly after the cut ended.
Action Outcomes
received_ball
Type: boolean | Nullable
true if the cutter received the ball during or immediately after the cut.
cutter_action_shot
Type: boolean | Nullable
true when received_ball is true and the cutter's possession touch ended with a shot.
cutter_action_turnover
Type: boolean | Nullable
true when received_ball is true and the cutter's possession touch ended with a turnover.
cutter_action_fouled
Type: boolean | Nullable
true when received_ball is true and the cutter's possession touch ended by being fouled.
cutter_action_pass
Type: boolean | Nullable
true when received_ball is true and the cutter's possession touch ended with a completed pass or a bad pass turnover.
is_direct
Type: boolean | Nullable
true when both of the following are true:
received_ballistrue, and- At least one of these outcomes happened:
cutter_action_shotistruecutter_action_turnoveristruecutter_action_fouledistrue- The cutter made a completed pass, and the receiver took a shot within 3 seconds of that pass, with no more than one dribble before the shot.
Shape And Classification
is_cross_court
Type: boolean | Nullable
true if the cut crosses sides of the court.
is_outside_of_halfcourt_action
Type: boolean | Nullable
true if this cut occurred very early in the shot clock before an action (i.e. a ball screen/1v1) was run by the offense. Many of these may be a player simply setting up for the offense (e.g. cutting to a specific spot or getting low to the dunker spot). But we include them with this flag in case you want to use them. If you'd like to filter these out, just look for instances where this field is false.
cut_roundness_distance_in
Type: float | Unit: inches | Nullable
The maximum perpendicular distance (in inches) that a player deviates from a straight line between their cut start position and cut end position. The higher this number the more they "rounded" their cut.
cut_roundness_side
Type: string | Nullable
Indicates the side that the player's maximum deviation from a straight line between their cut start position and cut end position happened in, as viewed from start to end. In other words, if you stand at the start location of the cut and look at the end location, this tells you which side (right or left) the player got furthest from that line.
