๐Ÿ€DUNKLADDER

DATA METHODOLOGY

How NBA Dunks Are Tracked

A complete explanation of our data pipeline, classification logic, and accuracy standards.

The Data Source

Dunk Ladder uses the Sportradar NBA Play-by-Play API (v8) as its primary data source. Sportradar is the official data partner of the NBA and provides real-time event data for every game. Every shot attempt in the NBA returns a shot_type field.

How Dunks Are Classified

Sportradar's taxonomy treats shot_type = "Dunk" as a first-class, discrete category โ€” a peer of "Jump Shot," "Layup," "Hook," and "Tip Shot." This is not a substring match or a description parse.

// Dunk filter โ€” exact string match
const isDunk = (event) => event.shot_type === 'Dunk'

The shot_type_desc field provides the sub-type:

// Sub-types
alley-oop | tip | driving | driving reverse
putback | running | reverse | running reverse
running alley-oop | cutting

Made, Missed, and Blocked Dunks

We track all three outcomes. A made dunk appears as a twopointmake event. A missed or blocked dunk appears as twopointmiss โ€” with the sameshot_type = "Dunk" classification. The blocking object is populated when a dunk is blocked.

Historical Data

For historical data (2004-2025), we cross-reference the DomSamangy NBA shot dataset from NBA.com, which uses an identical taxonomy (ACTION_TYPE ending in "Dunk Shot"). Both sources are structurally aligned.

Real-Time Updates

During live games, we consume Sportradar's Push Events feed โ€” a server-sent event stream that fires dunk events within approximately 2 seconds of the play occurring in the arena. The leaderboard and live feed update within 5 minutes during games.