Last two minute report data from the NBA
this is the csv of the data that you most likely want
This repository maintains the Last Two Minute (L2M)
reports
that the NBA releases for some NBA games depending on how close the game
was in the final two minutes. The clean, processed version of the data
can be found in
1-tidy/L2M/L2M_stats_nba.csv while the
corresponding R
code to create this data
is scattered across the 0-data and 1-tidy folders.
The 0-data/L2M/archived-pdf folder hosts the
raw pdf data from the games before the NBA utilized an API for storing
L2M information. The
0-data/official_nba/raw/l2m-api
folder hosts individual game files from the API.
Season | Games | Grades per period | Calls per period | IC per period | CC Percentage | INC per period | Bad Calls Percentage | CNC per period |
---|---|---|---|---|---|---|---|---|
2015 | 139 | 11.27 | 4.82 | 0.15 | 97% | 1.37 | 25% | 5.08 |
2016 | 439 | 12.88 | 4.77 | 0.21 | 96% | 1.66 | 29% | 6.45 |
2017 | 428 | 15.00 | 4.15 | 0.08 | 98% | 2.49 | 39% | 8.36 |
2018 | 475 | 19.67 | 4.14 | 0.12 | 97% | 2.46 | 39% | 13.07 |
2019 | 455 | 21.28 | 3.59 | 0.13 | 96% | 2.55 | 44% | 15.14 |
2020 | 389 | 18.05 | 3.79 | 0.15 | 96% | 1.08 | 25% | 13.18 |
2021 | 405 | 17.18 | 3.85 | 0.19 | 95% | 0.87 | 22% | 12.47 |
2022 | 441 | 17.53 | 4.18 | 0.19 | 95% | 1.18 | 26% | 12.18 |
2023 | 474 | 20.80 | 4.41 | 0.16 | 96% | 1.15 | 24% | 15.24 |
2024 | 411 | 17.50 | 4.34 | 0.17 | 96% | 0.92 | 21% | 12.24 |
2025 | 85 | 14.76 | 4.49 | 0.15 | 97% | 0.73 | 17% | 9.54 |
All games with L2M Call Accuracy updated through 2024-11-19
Season | Playoffs | Games | Grades per period | Calls per period | IC per period | CC Percentage | INC per period | Bad Calls Percentage | CNC per period |
---|---|---|---|---|---|---|---|---|---|
2015 | FALSE | 113 | 10.74 | 4.84 | 0.15 | 97% | 1.36 | 24% | 4.54 |
2015 | TRUE | 26 | 13.40 | 4.74 | 0.14 | 97% | 1.43 | 25% | 7.23 |
2016 | FALSE | 410 | 12.58 | 4.81 | 0.21 | 96% | 1.58 | 28% | 6.18 |
2016 | TRUE | 29 | 17.26 | 4.12 | 0.18 | 96% | 2.82 | 43% | 10.32 |
2017 | FALSE | 403 | 14.81 | 4.14 | 0.08 | 98% | 2.46 | 38% | 8.21 |
2017 | TRUE | 25 | 18.29 | 4.18 | 0.04 | 99% | 3.07 | 43% | 11.04 |
2018 | FALSE | 452 | 19.79 | 4.14 | 0.11 | 97% | 2.47 | 39% | 13.18 |
2018 | TRUE | 23 | 17.35 | 4.12 | 0.23 | 94% | 2.42 | 41% | 10.81 |
2019 | FALSE | 424 | 21.18 | 3.61 | 0.13 | 96% | 2.57 | 44% | 14.99 |
2019 | TRUE | 31 | 22.67 | 3.33 | 0.15 | 95% | 2.21 | 43% | 17.13 |
2020 | FALSE | 364 | 17.88 | 3.80 | 0.15 | 96% | 1.08 | 25% | 13.00 |
2020 | TRUE | 25 | 20.50 | 3.67 | 0.13 | 96% | 1.03 | 25% | 15.80 |
2021 | FALSE | 379 | 17.13 | 3.82 | 0.18 | 95% | 0.84 | 22% | 12.48 |
2021 | TRUE | 26 | 17.87 | 4.26 | 0.29 | 93% | 1.26 | 28% | 12.35 |
2022 | FALSE | 412 | 17.31 | 4.16 | 0.19 | 95% | 1.17 | 25% | 11.98 |
2022 | TRUE | 29 | 21.17 | 4.47 | 0.23 | 95% | 1.33 | 27% | 15.37 |
2023 | FALSE | 442 | 20.63 | 4.40 | 0.16 | 96% | 1.15 | 24% | 15.09 |
2023 | TRUE | 32 | 23.17 | 4.58 | 0.14 | 97% | 1.19 | 23% | 17.39 |
2024 | FALSE | 385 | 17.28 | 4.30 | 0.16 | 96% | 0.90 | 20% | 12.09 |
2024 | TRUE | 26 | 20.83 | 4.97 | 0.24 | 95% | 1.21 | 23% | 14.66 |
2025 | FALSE | 85 | 14.76 | 4.49 | 0.15 | 97% | 0.73 | 17% | 9.54 |
L2M Call Accuracy updated through 2024-11-19
The process for compiling the L2M dataset is to:
The final output includes the following variables:
period
: period at which point the play occurredtime
: time remaining in the period when play occurredcall_type
: raw call type variable in L2Mcommitting
: committing player or team of the graded infraction in
L2M, may be blankdisadvantaged
: disadvantaged player or team of the graded infraction
in L2M, may be blankdecision
: judgment of L2M for the call, could be CC, CNC, IC, INC,
or blank where CC = Correct Call, CNC = Correct Non-Call, IC =
Incorrect Call, INC = Incorrect Non-Call and blank = not detectable
without technologycomments
: L2M comments on the playgame_details
: game details of L2M, only relevant for PDFspage
: page of L2M for pdf, not applicable for games accessed through
APIfile
: name of L2M file, will be the saved .csv file for API datagame_date
: game date according to L2M report headeraway_team
: away team nicknamehome_team
: home team nicknamedate
: date of game in YYYY-MM-DD formatcall
: first part of call_type, this is before the colon in call_typetype
: second part of call_type, this is after the colon in call_typehome
: home team abbreviationaway
: away team abbreviationgid
: NBA game IDgcode
: NBA game codehome_score
: home final score from the L2M reports, incomplete
variableaway_score
: away final score from the L2M reports, incomplete
variablenational_tv
: national TV network for the game, “no” indicates nonenetworks
: shorthand TV network for the game, NBALP indicates league
passgame_id
: nba.com url for L2M game, last part of
“https://official.nba.com/l2m/L2MReport.html/”, not applicable for
PDFsPCTime
: from official APIImposibleIndicator
: from official APIDifficulty
: from official APIVideolLink
: from official APIQualifier
: from official APIposID
: from official APIposStart
: from official APIposEnd
: from official APIposTeamId
: from official APIteamIdInFavor
: from official APIerrorInFavor
: from official APIimgChart
: from official APIGameId
: from official APIGameDate
: from official APIHomeTeamId
: from official APIAwayTeamId
: from official APIL2M_Comments
: from official APIseason
: NBA season for which the graded play was a part of,
convention is to use the last year of the NBA season so 2015 refers to
the 2014-15 Seasonplayoff
: dummy variable equal to TRUE
if the game occurred in the
playoffsGAME_ID
: NBA API game ID, same as gid
OFFICIAL_1
: name of first referee for gameOFFICIAL_2
: name of second referee for gameOFFICIAL_3
: name of third referee for gameOFFICIAL_ID_1
: ID of first referee for gameOFFICIAL_ID_2
: ID of second referee for gameOFFICIAL_ID_3
: ID of third referee for gameOFFICIAL_4
: name of fourth referee for game, typically only for
playoff gamesOFFICIAL_ID_4
: ID of fourth referee for game, typically only for
playoff gamesATTENDANCE
: attendance for the gamecommitting_min
: total minutes played by player committing action
(note, may be NA because the player did not play and likely an input
error from NBA on L2M)committing_team
: team for committing playercommitting_side
: home/away for committing playerdisadvantaged_min
: total minutes played by player disadvantaged by
actiondisadvantaged_team
: team for disadvantaged playerdisadvantaged_side
: home/away for disadvantaged playertype2
: consistent format for type of infractiontime_min
: minutes remaining in periodtime_sec
: seconds remaining in periodtime2
: fractional minutes left (ie 1.9 would be one minute and 54
seconds)And an overview of the changes in L2M reporting is provided in 2-eda/2-through-2019-finals. Further, there is a bit of a how-to for downloading and extracting data on the L2M that is provided in 2-eda/2-how-to-last-two-minutes