Skip to content

After Shot Positioning

The after_shot_positioning section in the markings response contains information on how offensive players are moving after each shot. It contains a row for each offensive player on the court (including the shooter) during every field goal attempt.

Overview

For each field goal attempt, we include one row per offensive player on the court (including the shooter), describing:

  • Where the player started (at shot release)
  • Where the player ended (approximately when the ball first arrives at the rim)
  • The closest the player got to the rim during that window
  • A flag to indicate whether it seemed like the player was intentionally positioning for an offensive rebound

After-Shot Window Timing

The window we measure runs from shot release to approximately when the ball first arrives at the rim (specifically, the first frame after the shot's arc peak where the ball enters the vicinity of the basket). This is the reference point for player start and end positions, minimum rim distance, and movement velocity. In unusual cases where the ball never has a detected near-rim frame — such as some blocked shots — the window ends at the shot's canonical end frame instead.

Sample Response

json
{
  "markings": {
    "after_shot_positioning": [
      {
        "avg_speed_xy": 12.8,
        "avg_velocity_x": 2.58,
        "avg_velocity_y": 12.54,
        "chance_id_ctg": "chance_51bfc1fda2cc0deb125bee9988859667",
        "did_position_for_off_reb": false,
        "end_loc_x": 454.24,
        "end_loc_y": -208.23,
        "end_region": "right corner two",
        "game_id_nba": "0022500404",
        "is_shooter": false,
        "min_rim_distance": 213.41,
        "min_rim_distance_loc_area": "long_midrange",
        "min_rim_distance_frame": 761,
        "movement_direction": "stationary",
        "player_id_nba": 1629023,
        "first_touch_loc_x": 390.34,
        "first_touch_loc_y": -170.76,
        "first_touch_region": "right wing two",
        "rebound_loc_x": null,
        "rebound_loc_y": null,
        "rebound_region": null,
        "shot_id_ctg": "shot_105f89542695fcebf740bb7c426ac4c3",
        "start_loc_area": "long_midrange",
        "start_loc_x": 454.76,
        "start_loc_y": -210.74,
        "start_region": "right corner two"
      }
    ]
  }
}

Fields

Identifiers

shot_id_ctg

Type: string

CTG-generated unique shot ID


game_id_nba

Type: string

NBA game ID


chance_id_ctg

Type: string

CTG chance ID in which the shot occurred


player_id_nba

Type: integer

NBA player ID


Player / Rebounding Context

is_shooter

Type: boolean

true if this player is the shooter for the shot


did_position_for_off_reb

Type: boolean

true if this player appeared to be positioning for an offensive rebound based on their movement and proximity to the rim after the shot. This does not always mean the player went toward the rim in a strong "crashing" style movement, as long as they seem not to be heading back on defense or standing and watching but aiming to get in position to get a rebound if they can.

A player who is already near the rim and doesn't clearly sprint back, for example, would be true, as would a player on the perimeter who slowly creeps in toward the rim even if they don't get so far.


movement_direction

Type: string

General movement classification for the player's movement after the shot. Possible values:

  • towards_rim
  • stationary
  • getting_back
  • out_of_bounds - if the player is out of bounds when the shot gets to the rim (often due to momentum after a shot or pass)
  • on_ground

Locations

start_loc_area

Type: string

We bucket the player's start position (when the shot is released) into the following areas:

  • near_rim
  • long_midrange
  • behind_3pt_line
  • backcourt

start_loc_x

Type: float | Unit: inches

X coordinate of the player's centroid at the start of the after-shot window (shot release).


start_loc_y

Type: float | Unit: inches

Y coordinate of the player's centroid at the start of the after-shot window (shot release).


start_region

Type: string

Court region label for the player's start position


end_loc_x

Type: float | Unit: inches

X coordinate of the player's centroid at the end of the after-shot window — approximately the frame when the ball first arrives at the rim after its arc peak. See After-Shot Window Timing.


end_loc_y

Type: float | Unit: inches

Y coordinate of the player's centroid at the end of the after-shot window — approximately the frame when the ball first arrives at the rim after its arc peak. See After-Shot Window Timing.


end_region

Type: string

Court region label for the player's end position (at the same frame as end_loc_x / end_loc_y)


first_touch_loc_x

Type: float | Unit: inches | Nullable

X coordinate of the player's centroid when the ball is first touched after the shot ends


first_touch_loc_y

Type: float | Unit: inches | Nullable

Y coordinate of the player's centroid when the ball is first touched after the shot ends


first_touch_region

Type: string | Nullable

Court region label for the player when the ball is first touched after the shot ends


rebound_loc_x

Type: float | Unit: inches | Nullable

For missed shots, x coordinate of the player's centroid when the ball is first possessed after the shot ends, or when play stops before that possession is established. null for made shots.


rebound_loc_y

Type: float | Unit: inches | Nullable

For missed shots, y coordinate of the player's centroid when the ball is first possessed after the shot ends, or when play stops before that possession is established. null for made shots.


rebound_region

Type: string | Nullable

For missed shots, court region label for the player when the ball is first possessed after the shot ends, or when play stops before that possession is established. null for made shots.


Minimum Rim Distance

min_rim_distance_loc_area

Type: string

We bucket the player's position when they are closest to the rim during the after-shot window (shot release to when the ball first arrives at the rim) into the following areas:

  • near_rim
  • long_midrange
  • behind_3pt_line
  • backcourt

min_rim_distance

Type: float | Unit: inches

Minimum distance from the player's centroid to the rim during the after-shot window (shot release to when the ball first arrives at the rim)


min_rim_distance_frame

Type: integer

Hawk-Eye frame number where the player reached min_rim_distance


Movement

avg_velocity_x

Type: float | Unit: inches/second

Average x velocity during the after-shot window, null if the after-shot window has zero duration (i.e. there are 0 frames between shot release and shot end), which can happen in rare cases like dunks.


avg_velocity_y

Type: float | Unit: inches/second

Average y velocity during the after-shot window, null if the after-shot window has zero duration (i.e. there are 0 frames between shot release and shot end), which can happen in rare cases like dunks.


avg_speed_xy

Type: float | Unit: inches/second

Average speed in the xy plane during the after-shot window, null if the after-shot window has zero duration (i.e. there are 0 frames between shot release and shot end), which can happen in rare cases like dunks.