Appearance
Closeouts
The closeouts section in the markings response contains a row for each closeout we identify in the tracking data.
Overview
A closeout occurs when a defender closes the distance toward an offensive player who is receiving a pass.
We identify a closeout when:
- A pass is completed to an offensive player
- A defender moves meaningfully toward the pass receiver as a result of that pass
- The receiver catches the ball in a position where they could reasonably score or attack (roughly within 35–40 feet of the rim)
We also include:
- Off-ball screen situations where there is separation between the defender and receiver before the pass, requiring the defender to close distance
- Bobbled catches where the receiver retains possession despite briefly losing control
- Hard stunts where a defender covers meaningful ground toward the receiver, even if they don't end up right on the ball
We do not count as closeouts:
- Handoffs and dribble handoffs — when the separation is created by a screen/handoff action rather than defensive positioning before the pass
- Catches with back to the basket — when the receiver is facing away from the rim on the catch and doesn't turn to face within about a second (since we view this as not in a position to score)
- Catches far from the rim — when a player is simply getting open far from scoring range with no immediate threat
- Incomplete passes and loose balls — when the intended receiver doesn't gain possession (though bobbles that result in retained possession are included)
- Trivial movements — when a defender barely moves (less than roughly a step) because they're already in position
Sample Response
json
{
"markings": {
"closeouts": [
{
"ball_handler_id_nba": 1642852,
"ball_handler_speed_before_touch_inches_per_sec": 58.12,
"chance_id_ctg": "chance_4c33ded97f95174cc013b446c3981347",
"closeout_attack_style": "other",
"closeout_id_ctg": "closeout_a768e79d1936d3f3aef88b58e23472ba",
"closeout_result": "hold",
"closeout_stop_frame_distance_in": 117.98,
"closeout_stop_he_frame": 1475,
"closeout_stop_hips_angle": 14.38,
"closeout_stop_hips_facing": "square",
"closeout_stop_player_angle": -2.65,
"closeout_stop_wall_clock": "2025-12-23T01:10:59.038+00:00",
"defender_id_nba": 203076,
"drive_direction": null,
"end_game_clock": 694.0,
"end_he_frame": 1588,
"end_shot_clock": 13.0,
"end_wall_clock": "2025-12-23T01:11:00.922+00:00",
"game_id_nba": "0022500404",
"hand_up_timing": null,
"jump_timing": null,
"passer_id_nba": 1630529,
"period": 1,
"receiver_touch_start_he_frame": 1417,
"region": "middle three",
"start_distance": 12.08,
"start_game_clock": 698.0,
"start_he_frame": 1394,
"start_shot_clock": 16.0,
"start_wall_clock": "2025-12-23T01:10:57.688+00:00",
"touch_distance": 13.72
}
]
}
}Fields
Identifiers
game_id_nba
Type: string
NBA game ID
closeout_id_ctg
Type: string
CTG-generated unique closeout ID
chance_id_ctg
Type: string
CTG chance ID
Participants
defender_id_nba
Type: integer
NBA player ID of the defender closing out
ball_handler_id_nba
Type: integer
NBA player ID of the offensive player being closed out to
passer_id_nba
Type: integer
NBA player ID of the player who passed to the ball handler
Timing
Period
period
Type: integer
Period in which the closeout occurred
Start (Closeout Begins)
The closeout start frame is placed when the defender begins moving toward the pass receiver.
start_game_clock
Type: float
Game clock when closeout begins
start_shot_clock
Type: float
Shot clock when closeout begins
start_he_frame
Type: integer
Hawk-Eye frame when closeout begins
start_wall_clock
Type: string
UTC timestamp when closeout begins
End (Closeout Ends)
The closeout end frame is placed when the defender's closeout movement ends — either when the defender stops moving toward the receiver, when the receiver's touch ends, or when the ball/receiver has clearly passed the defender (e.g. on a drive), whichever comes first.
end_game_clock
Type: float
Game clock when closeout ends
end_shot_clock
Type: float
Shot clock when closeout ends
end_he_frame
Type: integer
Hawk-Eye frame when closeout ends
end_wall_clock
Type: string
UTC timestamp when closeout ends
Closeout Details
closeout_stop_he_frame
Type: integer
Hawk-Eye frame when the closeout player either (a) leaves the ground to jump at the end of the closeout or (b) decelerates significantly to stay in front of the offensive player
closeout_stop_wall_clock
Type: string
UTC timestamp corresponding to closeout_stop_he_frame
receiver_touch_start_he_frame
Type: integer
Hawk-Eye frame when the pass receiver's possession touch begins
closeout_result
Type: string
What does the offensive player do after receiving the pass that triggered the closeout?
shot- immediately shoots the ball or pump fakes and shootspass- passes the ball very soon after receiving it without dribblingdrive- dribbles toward the baskethold- does not do any of the options above.holdcan include dribbling but not doing so in a way designed to attack the basket.
closeout_stop_frame_distance_in
Type: float | Unit: inches
How many inches the mid hip of the defensive player was from the offensive player at the closeout_stop_he_frame
closeout_stop_player_angle
Type: float | Unit: degrees
The angle formed by the defender, the offensive player and the rim at the closeout_stop_he_frame. If these players are in a straight line, the angle would be 0. The angle will be negative when the defender is to the right of the offensive player, as looked at as if you were standing under the basket.
closeout_stop_hips_angle
Type: float | Unit: degrees
The angle formed by the way the defensive player's hips are facing relative to the rim and the offensive player at the closeout_stop_he_frame. 0 degrees means if you draw a line from the rim to the offensive player, the defensive player's hips are parallel with that line — i.e. completely square to the offensive player. A positive angle means the defender has his hips turned to his right, a negative angle means to his left.
closeout_stop_hips_facing
Type: string
A category for how the defender's hips are facing at the closeout_stop_he_frame, attempting to measure whether the defender is forcing no middle, middle, or is square to the offensive player.
no_middle- when the defender's hips are facing away from the middle of the court, or the defender is significantly to the side of the offensive player in a way that would encourage a drive away from the middle of the courtmiddle- when the defender's hips are facing toward the middle of the court, or the defender is significantly to the side of the offensive player in a way that would encourage a drive toward the middle of the courtsquare- when the defender's hips and position are not facing either middle or no middle
drive_direction
Type: string
When the closeout_result is drive, does the offensive player drive toward the middle of the floor or away from the middle of the floor (no_middle)? If the closeout_result is not drive, this field will be null.
hand_up_timing
Type: string
When does the defender put his hand up? Options:
before_catch- if the hand is up before the offensive player catches the passbefore_action- if the hand is up before the player jumps to shoot/passes/drivesafter_action- if the hand is up after the player jumps to shoot/passes/drivesnull- if the defender never gets their hand up
jump_timing
Type: string
When does the defender leave his feet? Options:
early- if the defender leaves his feet before the offensive player’s action (e.g. bites on a pump fake)normal- if the defender leaves his feet in reaction to the offensive player’s actionnull- if the defender never jumps
closeout_attack_style
Type: string
Uses the pose data to determine how the offensive player attacked the closeout:
catch_to_shoot- caught the pass and immediately got into a shooting position before shooting/making a movecatch_to_drive- caught the pass in a position oriented for an immediate driveother- something else
ball_handler_speed_before_touch_inches_per_sec
Type: float | Unit: inches/second
The speed of the offensive player's mid hips in the half second before the touch. The combination of this field and closeout_attack_style could help you identify things like "stampede" catches, for example.
region
Type: string
Court region label for where the ball handler is located at the end of the closeout
start_distance
Type: float
Distance (in feet) between defender and ball handler at start_he_frame
touch_distance
Type: float
Distance (in feet) between defender and ball handler at the receiver’s touch start frame
