ESPN Scraper — Scores, Schedules, Standings, Rosters & News avatar

ESPN Scraper — Scores, Schedules, Standings, Rosters & News

Pricing

$0.50 / 1,000 rows

Go to Apify Store
ESPN Scraper — Scores, Schedules, Standings, Rosters & News

ESPN Scraper — Scores, Schedules, Standings, Rosters & News

Scrape ESPN scores, schedules, standings, teams, rosters and news for NFL, NBA, MLB, NHL, college sports, soccer, F1, golf and UFC. Any date range, including the ranges ESPN's API now rejects with HTTP 400. $0.50 per 1,000 rows.

Pricing

$0.50 / 1,000 rows

Rating

0.0

(0)

Developer

Technical Dost Solutions

Technical Dost Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

ESPN Scraper gets structured sports data from ESPN for 19 leagues: NFL, NBA, MLB, NHL, WNBA, college football and basketball, Premier League, LaLiga, Bundesliga, Serie A, Ligue 1, MLS, Liga MX, Champions League, Formula 1, PGA Tour and UFC. Choose what you need: games (scores, schedules, line scores, records, venue, attendance, TV, betting line, headline), standings, teams, player rosters (position, jersey, age, height, weight, college, headshot) and news articles. Pick any date range (or relative dates like -7 to +7 for scheduled runs) and filter by team. No API key, no login.

ESPN API date range returning 400? ESPN's scoreboard endpoint stopped accepting dates=YYYYMMDD-YYYYMMDD ranges ("Failed to get events endpoint"), which breaks most scripts that pull a week or a season of games. This Actor requests one day at a time in parallel and merges the results, so any range up to a year works.

What you get

  • 19 leagues across football, basketball, baseball, hockey, soccer, F1, golf and MMA.
  • Games: scores, status, quarter/period line scores, team records, venue, attendance, broadcasters, betting line (for upcoming games) and recap headline.
  • Any date range up to a year, or relative dates (-7, +7, today) that stay valid in scheduled runs.
  • Standings by conference/division with wins, losses, win %, games behind, streak and all ESPN stat columns.
  • Rosters with position, jersey, age, height, weight, birth date and place, college, experience and headshot.
  • Team filter by code, nickname or full name (e.g. KC, Lakers, Real Madrid). News articles with teams and athletes tagged.

How to use ESPN Scraper

  1. Pick Leagues and Data types (games, standings, teams, rosters, news).
  2. For games, set Start date and End date (YYYY-MM-DD, or -7 / +7 / today).
  3. Optionally add Teams to filter (e.g. KC, Lakers).
  4. Run and export to JSON, CSV or Excel, or feed Google Sheets, a dashboard, a betting model or an AI agent.

Input example

{
"leagues": [
"nfl",
"nba"
],
"dataTypes": [
"games",
"standings"
],
"startDate": "-7",
"endDate": "+7"
}

All fields are described in the Input tab.

Output example

{
"type": "game",
"league": "nfl",
"gameId": "401873023",
"date": "2026-10-30T00:15Z",
"name": "Carolina Panthers at Green Bay Packers",
"shortName": "CAR @ GB",
"season": 2026,
"seasonType": "regular-season",
"status": "Final",
"statusDetail": "Final",
"completed": true,
"homeTeam": {
"id": "9",
"name": "Green Bay Packers",
"abbreviation": "GB",
"score": 27,
"winner": true,
"record": "5-3",
"linescores": [
6,
14,
7,
0
],
"leaders": []
},
"awayTeam": {
"id": "29",
"name": "Carolina Panthers",
"abbreviation": "CAR",
"score": 19,
"winner": false,
"record": "3-4",
"linescores": [
3,
7,
3,
6
],
"leaders": []
},
"participants": [],
"venue": "Lambeau Field",
"venueCity": "Green Bay",
"venueState": "WI",
"attendance": 76957,
"broadcasts": [
"Prime Video"
],
"odds": null,
"headline": "Love throws 3 TD passes as the Packers beat the Panthers 27-19",
"url": "https://www.espn.com/nfl/game/_/gameId/401873023/panthers-packers",
"scrapedAt": "2026-11-01T20:47:19.364Z"
}

Output fields

FieldDescription
typegame, team, player, standing or article.
leagueLeague key, e.g. nfl, eng.1.
gameIdESPN game ID.
dateStart time (UTC).
nameGame, team or player name.
shortNameShort game name, e.g. CAR @ GB.
seasonSeason year.
seasonTyperegular-season, post-season...
statusScheduled, In Progress, Final...
statusDetailDetail, e.g. Final/OT or 7:30 PM ET.
completedGame finished.
homeTeamHome team: id, name, abbreviation, score, winner, record, line scores, leaders.
awayTeamAway team (same fields).
participantsParticipants for F1, golf and UFC events.
venueVenue.
venueCityVenue city.
venueStateVenue state/country.
attendanceAttendance.
broadcastsTV/streaming.
oddsBetting line (details, over/under, spread) when shown.
headlineRecap/preview headline.
urlESPN page URL.
teamIdESPN team ID.
abbreviationTeam code.
locationTeam location.
nicknameTeam nickname.
colorTeam color.
alternateColorAlternate color.
logoUrlTeam logo.
playerIdESPN player ID.
teamNameTeam name.
positionPosition.
jerseyJersey number.
ageAge.
heightHeight.
weightWeight.
birthDateBirth date.
birthPlaceBirthplace.
experienceYearsYears of experience.
collegeCollege.
headshotUrlPlayer photo.
groupConference/division/group.
rankRank or seed.
winsWins.
lossesLosses.
tiesTies/draws.
winPercentWin %.
gamesBehindGames behind.
pointsPoints (soccer/hockey).
streakStreak.
statsAll ESPN standings columns.
articleIdArticle ID.
descriptionArticle summary.
publishedPublish time.
articleTypeStory, Recap...
bylineAuthor.
teamsTeams tagged in the article.
athletesAthletes tagged in the article.
imageUrlArticle image.
scrapedAtWhen the row was scraped.

Export results as JSON, CSV, Excel, XML or HTML, or read them with the API.

Use cases

  • Sports apps, Discord bots and newsletters: daily scores, schedules and headlines.
  • Fantasy sports and betting models: results, line scores, standings and rosters.
  • Media and data journalism: season datasets for any league.
  • Dashboards: schedule a run with relative dates for a rolling week of games.
  • AI agents: give an assistant fresh, structured sports facts.

How much does ESPN Scraper cost?

This Actor uses pay-per-event pricing: $0.0005 per row ($0.5 per 1,000). Platform usage is included. There is no start fee. Leagues or dates with no data cost nothing.

Set Maximum cost per run in the run options to cap your spend; the Actor stops when the limit is reached.

Use ESPN Scraper with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through the hosted Apify MCP server:

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=technicaldost/espn-scraper-scores-stats-news" --header "Authorization: Bearer YOUR_APIFY_TOKEN"

Or in a JSON MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=technicaldost/espn-scraper-scores-stats-news",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

The tool is named technicaldost--espn-scraper-scores-stats-news. Ask your agent, for example, to "run ESPN Scraper with {"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"}".

Run ESPN Scraper via API

curl -X POST "https://api.apify.com/v2/acts/technicaldost~espn-scraper-scores-stats-news/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("technicaldost/espn-scraper-scores-stats-news").call(run_input={"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('technicaldost/espn-scraper-scores-stats-news').call({"leagues": ["nfl", "nba"], "dataTypes": ["games", "standings"], "startDate": "-7", "endDate": "+7"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Integrations

Schedule runs (daily, hourly) in Apify Console and send results to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or your own webhook.

FAQ

Where does the data come from?

From the same public ESPN endpoints espn.com's own pages load. No API key or account.

How far back can I go?

Any date ESPN has a scoreboard for, up to one year per run. The Actor reads the scoreboard day by day, because ESPN no longer answers date ranges in one request (that is why some other ESPN scrapers return nothing).

Does it include live scores?

Yes. Games in progress have status In Progress with the current score and period; run it on a schedule for updates.

Why are odds empty?

ESPN shows the betting line only for upcoming games in some leagues.

What about F1, golf and UFC?

They have games (events with participants) and news; ESPN has no team lists, rosters or standings for them.

How is it priced?

$0.50 per 1,000 rows (a game, team, player, standing or article). No start fee.

The Actor collects publicly available information only and does not log in or bypass access controls. Use the data in line with the website's terms and the laws that apply to you, especially when processing personal data.

More tools from the same developer that work well together with this one: