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": 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:

  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.