Skip to content

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": 93.16,
				"after_loc_x": -441.48,
				"after_loc_y": 71.67,
				"after_region": "key",
				"chance_id_ctg": "chance_372af9b72f010d29ed41a77f9848a51b",
				"cut_id_ctg": "cut_036af87aace6f3d47095864905af5d62",
				"cut_roundness_distance_in": 35.66,
				"cut_roundness_side": "right",
				"cutter_action_fouled": false,
				"cutter_action_pass": false,
				"cutter_action_shot": false,
				"cutter_action_turnover": false,
				"cutter_action_violation": false,
				"defender_id_nba": 1630532,
				"end_game_clock": 710.0,
				"end_he_frame": 626,
				"end_hoop_distance_in": 89.06,
				"end_loc_x": -436.12,
				"end_loc_y": 61.0,
				"end_region": "key",
				"end_shot_clock": 14.0,
				"end_wall_clock": "2025-10-26T01:13:47.45+00:00",
				"game_id_nba": "0022500104",
				"is_cross_court": false,
				"is_direct": false,
				"is_outside_of_halfcourt_action": false,
				"period": 1,
				"player_id_nba": 1627750,
				"possession_touch_id_ctg": null,
				"received_ball": false,
				"start_game_clock": 713.0,
				"start_he_frame": 413,
				"start_hoop_distance_in": 418.69,
				"start_loc_x": -85.67,
				"start_loc_y": -52.9,
				"start_region": "middle three",
				"start_shot_clock": 17.0,
				"start_wall_clock": "2025-10-26T01:13:43.901+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.


possession_touch_id_ctg ​

Type: string | Nullable

CTG-generated ID for the possession touch received by the cutter after the cut. null if the cutter did not receive the ball.


player_id_nba ​

Type: integer

NBA player ID of the cutter


defender_id_nba ​

Type: integer | Nullable

NBA player ID of the cutter's assigned defender near the start of the cut.


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.


start_region ​

Type: string | Nullable

Court region containing the cutter at the start of the cut.


end_region ​

Type: string | Nullable

Court region containing the cutter at the end of the cut.


after_region ​

Type: string | Nullable

Court region containing the cutter 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_violation ​

Type: boolean | Nullable

true when received_ball is true and the cutter's possession touch ended with a violation.


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:

  1. received_ball is true, and
  2. At least one of these outcomes happened:
    • cutter_action_shot is true
    • cutter_action_turnover is true
    • cutter_action_fouled is true
    • 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.