Skip to main content

NBA — additional Python functions — NBA Official Injury Report

nba_injury_report​

nba_injury_report(date: 'dt.date | None' = None, report_time: 'dt.datetime | None' = None, *, return_as_pandas: 'bool' = False, proxy: 'Any' = None, **kwargs: 'Any') -> 'pl.DataFrame | pd.DataFrame'

Fetch and parse an official NBA injury report.

Parameters

ParameterTypeDefaultDescription
datedate | NoneNoneReport date (US Eastern). Defaults to today. With no report_time, the LATEST published slot of that date is used (probing backwards through nba_injury_report_slots, only slots up to now: a date ahead of today in US Eastern probes none).
report_timedatetime | NoneNoneAn exact slot (naive US Eastern), e.g. dt.datetime(2026, 1, 15, 17, 30). Overrides date.
return_as_pandasboolFalseReturn a pandas.DataFrame instead of polars.
proxyAnyNoneProxy configuration in the requests proxies= shape.

Returns

The parsed report (see parse_nba_injury_report).

col_nametypedescription
report_datetimeDatetimeUS Eastern time the league published this report, read from the PDF title (a slot before 2025-12-22 09:00 named HH is the HH:30 snapshot).
game_dateDateDate of the game the row's player status applies to.
game_timeStringScheduled tip as printed on the report, e.g. "07:30 (ET)"; the PDF carries no AM/PM.
matchupStringAway@home team abbreviations, e.g. "WAS@SAC".
away_team_abbrStringAway team abbreviation split from matchup.
home_team_abbrStringHome team abbreviation split from matchup.
teamStringFull name of the team that filed the row, e.g. "Memphis Grizzlies".
player_nameStringPlayer as printed, "Last, First" (no player id on the report); null on a team's NOT YET SUBMITTED row.
current_statusStringOut, Doubtful, Questionable, Probable or Available; null on a NOT YET SUBMITTED row.
reasonStringReason for the status (e.g. "Injury/Illness - Right Calf; Strain", "G League - Two-Way"), or "NOT YET SUBMITTED" when the team has not filed.
categoryString2018-19 layout only - the reason's category (e.g. "Injury/Illness", "G League Team"); null afterwards.
previous_statusString2018-19 layout only - the status on the previous report; null afterwards.

Raises

ExceptionDescription
NoDataErrorThe slot (or every slot of the date) is not published (S3's 403 AccessDenied).
AssetFetchErrorAny other non-200 answer -- including a 404 and a 403 that is not S3's AccessDenied (a CDN / WAF block) -- an HTTP-200 body that is not a readable PDF (a CDN error page, a truncated file), or a connection that fails after the retries.
ImportErrorpdfplumber is not installed.

Example

import datetime as dt
from sportsdataverse.nba.nba_official_injury import nba_injury_report

df = nba_injury_report(report_time=dt.datetime(2026, 1, 15, 17, 30))
print(df.shape)

# Latest report today

df = nba_injury_report()

# Pandas output

df_pd = nba_injury_report(dt.date(2024, 1, 15), return_as_pandas=True)

nba_injury_report_slots​

nba_injury_report_slots(date: 'dt.date') -> 'list[dt.datetime]'

Every slot the league's schedule allows on date, earliest first.

Parameters

ParameterTypeDefaultDescription
datedateThe report date (US Eastern).

Returns

Naive US Eastern datetimes: three a day (13:00 / 17:00 / 20:00) before 2021-10-15, hourly until 2025-12-22 09:00, every 15 minutes after. Empty before the archive's first report (2018-12-17). Not every slot is published (off days, the All-Star break), so a slot is a candidate.

Example

import datetime as dt
from sportsdataverse.nba.nba_official_injury import nba_injury_report_slots

len(nba_injury_report_slots(dt.date(2026, 1, 15))) # 96

nba_injury_report_url​

nba_injury_report_url(report_time: 'dt.datetime') -> 'str'

The archive URL of the report published at report_time (US Eastern).

Parameters

ParameterTypeDefaultDescription
report_timedatetimeThe slot, naive and in US Eastern time. Before 2025-12-22 09:00 only the hour is used (05PM); after it the slot is quarter-hourly (05_30PM).

Returns

The PDF URL. Whether that slot exists is only known by fetching it.

Example

import datetime as dt
from sportsdataverse.nba.nba_official_injury import nba_injury_report_url

nba_injury_report_url(dt.datetime(2026, 1, 15, 17, 30))
# '.../Injury-Report_2026-01-15_05_30PM.pdf'