ESPN Injury Report Scraper - NFL, NBA, MLB, NHL Injuries avatar

ESPN Injury Report Scraper - NFL, NBA, MLB, NHL Injuries

Pricing

from $1.00 / 1,000 injury report row saveds

Go to Apify Store
ESPN Injury Report Scraper - NFL, NBA, MLB, NHL Injuries

ESPN Injury Report Scraper - NFL, NBA, MLB, NHL Injuries

Scrape the ESPN injury report for the NFL, NBA, MLB, NHL, WNBA and college football. Get Out, Questionable, IR and IL players with injury type, expected return date and news. Export to JSON, CSV, Excel

Pricing

from $1.00 / 1,000 injury report row saveds

Rating

0.0

(0)

Developer

Harish Garg

Harish Garg

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

ESPN Injury Report Scraper — NFL, NBA, MLB, NHL, WNBA Injuries

Get today's ESPN injury report for the NFL, NBA, MLB, NHL, WNBA and college football as clean, structured data. You get every player listed as Out, Doubtful, Questionable, Day-To-Day, on Injured Reserve or on the MLB Injured List. Each row has the injury (body part, type and side), the expected return date, the fantasy status and the latest injury news.

Filter by league, team, player, position or status. Download the results as JSON, CSV or Excel, call the Actor from the API, or ask an AI assistant such as Claude or ChatGPT for injury updates. You do not need an ESPN account or an API key.

What does ESPN Injury Report Scraper do?

It collects the current injury report for every team in the leagues you pick and returns one row per player. Each row tells you:

  • Who — player name, ESPN player ID, position, team and headshot photo
  • Status — Out, Doubtful, Questionable, Day-To-Day, Injured Reserve, 7/10/15/60-Day IL, Suspension and more, plus the fantasy designation (GTD, IR-R, PUP-R and others)
  • What — the injury: body part (Knee, Hamstring, Ankle), type (Sprain, Fracture, Surgery) and side (Left, Right)
  • When back — ESPN's expected return date
  • Why — the latest news note and the full note with the outlook, and who wrote it (for example RotoWire)
  • When — the date and time the report was posted, in UTC and US Eastern time

A run for all six leagues takes a few seconds.

Who is it for?

  • Fantasy sports players — check who is out or questionable before lineup lock, every day, without opening 32 team pages.
  • Sports bettors and betting model builders — injuries move lines. Collect a daily snapshot and build an injury history for your models.
  • Sports media, newsletters and apps — feed an injury table, a Slack or Discord alert, or a website widget.
  • Analysts and researchers — study injury rates by team, position, body part or season.

Supported leagues

LeagueCodeTypical players on the report
NFLnfl~200 injured, plus ~600 news notes on healthy players
MLBmlb~290
NHLnhl~70–110
NBAnba~60–80
WNBAwnba~50
NCAA Football (college football)ncaafa handful

ESPN does not publish injury reports for college basketball or soccer, so those leagues are not offered. Report sizes change with the season. For example, the NBA report is short in the off-season and grows during the season.

How to get an ESPN injury report

  1. Open the Actor and pick one or more leagues.
  2. Optionally, choose an injury status (for example only "Out"), or filter by team, player or position.
  3. Click Start.
  4. Open the Output tab to see the table, or export the data as JSON, CSV, Excel, XML or HTML.

To keep your data current, create a schedule (for example every morning at 9 AM) and connect it to Google Sheets, Slack, a webhook or your database.

Input

FieldWhat it doesExample
LeaguesLeagues to get injury reports for (at least one)["nfl", "nba"]
Injury statusOnly these statuses. Leave empty for every player who is hurt, sick, suspended or on leave["Out", "Injured Reserve"]
TeamsTeam abbreviation or name["KC"], ["Chiefs"], ["Los Angeles Lakers"]
Player namesPart of a player's name["mahomes"], ["LeBron James"]
PositionsPosition abbreviation or name["QB", "WR"], ["Pitcher"]
Only reports from the last N daysDrop older reports (1–365)7

The text filters ignore upper and lower case and accents, so Dončić finds Doncic and Montréal finds Montreal Canadiens. If a team or player in your filter is not on today's report, the run log and the run status tell you.

Injury status options

OptionCoversLeagues
OutWill not playAll
DoubtfulUnlikely to playNFL
QuestionableUncertain to playNFL
Day-To-DayShort-term injury, status checked dailyNBA, NHL, MLB
Injured ReserveNFL and NHL injured reserve, and the MLB 7-, 10-, 15- and 60-Day Injured ListNFL, NHL, MLB
SuspensionSuspended by the leagueMLB, NHL
Personal LeavePaternity or bereavement leaveMLB
ActiveHealthy player with a news noteNFL, NCAAF

Tip: ESPN also posts news notes on healthy players (status "Active"). By default they are not included, so you get only real injuries. Select "Active" when you want the latest news on a specific player, healthy or not.

Example: today's NFL injury report

{
"leagues": ["nfl"]
}

Example: every player ruled out or on IR/IL in the four major leagues

{
"leagues": ["nfl", "nba", "mlb", "nhl"],
"injuryStatuses": ["Out", "Injured Reserve"]
}

Example: injured quarterbacks and wide receivers on two teams

{
"leagues": ["nfl"],
"teams": ["Chiefs", "SF"],
"positions": ["QB", "WR"]
}

Example: all news on one player, injured or not

{
"leagues": ["nfl"],
"players": ["mahomes"],
"injuryStatuses": ["Out", "Doubtful", "Questionable", "Injured Reserve", "Active"]
}

Output

You get one row per player on the injury report, newest report first. This is a real row from an NBA run:

{
"recordType": "injury",
"league": "nba",
"leagueName": "NBA",
"sport": "basketball",
"season": { "year": 2027, "type": 1, "typeName": "Preseason", "displayName": "2026-27" },
"team": { "id": "29", "name": "Memphis Grizzlies", "abbreviation": "MEM" },
"player": {
"id": "4600663",
"name": "Zach Edey",
"shortName": "Z. Edey",
"position": "Center",
"positionAbbreviation": "C",
"headshot": "https://a.espncdn.com/i/headshots/nba/players/full/4600663.png"
},
"injuryId": "533071",
"status": "Day-To-Day",
"statusAbbreviation": "DD",
"statusType": "INJURY_STATUS_DAYTODAY",
"isInjured": true,
"fantasyStatus": "GTD",
"injury": { "type": "Ankle", "detail": "Surgery", "side": "Left", "location": "Leg" },
"expectedReturnDate": "2026-10-05",
"shortComment": "Edey (ankle) remains on track for Opening Night, per Drew Hill of The Daily Memphian.",
"longComment": "The Grizzlies continue to evaluate Edey throughout training camp, and they believe he's trending in the right direction. Fantasy managers should keep an eye on his recovery from elbow and ankle surgeries.",
"source": "RotoWire",
"date": "2026-10-02T20:16Z",
"dateLocal": "2026-10-02T16:16:00.000-04:00",
"retrievedAt": "2026-10-03T09:22:06.485Z"
}

The Output tab shows two tables: Injury report (player, team, status, injury, expected return and the latest note) and Injury details (body part, type, side, fantasy status and the full note).

Output fields

FieldDescription
league, leagueName, sportLeague code (nfl), name (NFL) and sport
seasonSeason year, phase (Preseason, Regular Season, Postseason) and label (2026-27)
teamTeam ESPN ID, name and abbreviation
playerESPN player ID, name, short name, position and headshot URL
statusStatus as ESPN shows it, e.g. Out, Day-To-Day, 60-Day-IL
statusAbbreviationShort status, e.g. O, Q, DD, IR, IL60
isInjuredfalse only for Active (a news note on a healthy player)
fantasyStatusFantasy designation, e.g. OUT, GTD, IR, IR-R, PUP-R, 15-Day IL
injury.typeBody part or reason, e.g. Knee, Hamstring, Lower Body, Illness
injury.detailKind of injury, e.g. Sprain, Strain, Fracture, Surgery
injury.sideLeft or Right
injury.locationBody region, e.g. Leg, Arm, Torso (NFL and NBA)
expectedReturnDateESPN's estimated return date
shortCommentOne-line news note
longCommentFull note with the outlook
sourceWho wrote the note, e.g. RotoWire
date / dateLocalWhen the report was posted, in UTC and US Eastern time
retrievedAtWhen your run collected the data. It is the same for every row of a run, so daily snapshots are easy to group

A field is null when ESPN does not give it. injury.type and expectedReturnDate are set for nearly every injured player in the NFL, NBA, MLB, NHL and WNBA. injury.detail and injury.side are set only when the team discloses them.

Each run also saves a run summary in the key-value store under SUMMARY. It contains the row counts, the leagues, the filters, and any team or player name that was not on the report.

Good to know:

  • date is when ESPN posted the report, not when the injury ends. A player placed on injured reserve in August keeps that August date all season. For this reason "Only reports from the last N days" is empty by default, because a short window would hide long-term injuries.
  • expectedReturnDate is an estimate. For season-ending injuries it is often the start of the next season (for example 1 February for MLB).

How to use ESPN Injury Report Scraper

In Apify Console

  1. Open the Actor and fill in the input form.
  2. Click Start.
  3. Open the Output tab, or export the results.

Save your setup as a task to run it again with one click, or add a schedule to run it every day.

With the Apify API (HTTP)

Run the Actor and get the results in one HTTP call. Replace YOUR_API_TOKEN with your token from Settings → API & Integrations in Apify Console.

curl -X POST "https://api.apify.com/v2/acts/hgservices~espn-injury-report-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"leagues": ["nfl"], "injuryStatuses": ["Out", "Doubtful", "Questionable"]}'

Add &format=csv to the URL to get CSV instead of JSON.

With the JavaScript client

Install the client with npm install apify-client.

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('hgservices/espn-injury-report-scraper').call({
leagues: ['nba'],
injuryStatuses: ['Out', 'Day-To-Day'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(item.player.name, item.status, item.injury.type, item.expectedReturnDate);
}

With the Python client

Install the client with pip install apify-client.

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("hgservices/espn-injury-report-scraper").call(
run_input={"leagues": ["mlb"], "injuryStatuses": ["Injured Reserve"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["player"]["name"], item["status"], item["injury"]["type"], item["expectedReturnDate"])

With Claude, ChatGPT and other AI assistants (MCP)

Connect your AI assistant to the Apify MCP server. Then ask in plain language. The assistant runs this Actor for you and answers from the results. To give the assistant this Actor as a tool, use this server URL:

https://mcp.apify.com?tools=hgservices/espn-injury-report-scraper
  • Claude (claude.ai or Claude Desktop): go to Settings → Connectors, add a custom connector, and paste the URL above.
  • Claude Code: run claude mcp add --transport http apify "https://mcp.apify.com?tools=hgservices/espn-injury-report-scraper".
  • ChatGPT: add the URL above as a custom connector (MCP server) in ChatGPT's connector settings.
  • Cursor, VS Code, Windsurf and other MCP clients: add the URL above as an HTTP MCP server.

Sign in with your Apify account when the assistant asks. Example prompts:

  • "Who is out for the Chiefs this week?"
  • "List every NBA player who is day-to-day today, with the injury and the expected return date."
  • "Which MLB pitchers are on the 60-day IL?"
  • "Is Patrick Mahomes injured? Show me the latest note."

With integrations

Send the results to Google Sheets, Slack, Discord, email, Zapier, Make, n8n, Airbyte or any webhook from the Actor's Integrations tab. A common setup: run every morning, then post new "Out" players to a Slack channel.

Scheduling ideas

Use caseCron (UTC)When
Daily injury report0 13 * * *Every day at 9 AM US Eastern
NFL Sunday pre-lock check0 16 * * 0Sunday noon US Eastern, before the early kickoffs
NBA pre-game check0 22 * * *Every day at 6 PM US Eastern

FAQ

How current is the data? Each run gets the injury report as ESPN shows it at that moment. Run it again, or schedule it, for newer data.

Why do I see fewer rows than on the ESPN website? By default, news notes on healthy players (status "Active") are not included. Add "Active" to the injury status filter to include them.

My team or player filter returns nothing. Why? The injury report lists only injured players and the teams that have them. If a name in your filter is not on today's report, the run status and the run log name it, and the log lists every team on the report. You can use the team abbreviation (KC) or the team name (Chiefs).

Does it include the body part and the return date? Yes. injury.type gives the body part (for example Knee), injury.detail the kind of injury when it is known, injury.side the side, and expectedReturnDate ESPN's estimated return date.

Can I combine it with other sports data? Yes. See the related Actors below. They use the same league codes, team fields and player fields, so their data joins directly.

Feedback

Do you need a league, a field or a filter that is not here? Open an issue on the Actor's Issues tab. We read every request.

Disclaimer

This Actor is not affiliated with, endorsed by or sponsored by ESPN. It collects publicly available injury information. Use the data in line with ESPN's terms and the laws that apply to you.