ESPN Sports Scraper avatar

ESPN Sports Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
ESPN Sports Scraper

ESPN Sports Scraper

Scores, league tables, rosters and news from ESPN for 25 leagues in 11 sports, in one table with the same fields for every sport. Mix leagues in one run, from MLB and the NFL to the Premier League, ATP tennis and Formula 1, over a date range of up to 120 days.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

ESPN Sports Scraper reads 25 leagues in 11 sports from ESPN's public JSON feeds and puts them in one table with the same fields for every sport: games and results, league tables, teams, rosters, team schedules and news. Click Start on the prefilled input and the MLB, NFL and Premier League games of 20 and 21 September 2026 come back as 37 rows in one dataset. Player statistics and play-by-play are not included. It costs $1.00 per 1,000 results on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 results.

What does a row contain?

FieldDescription
sport, league, leagueNameSport group, league key and name, e.g. americanfootball, nfl and National Football League. Filter or group on these when you mix leagues.
typeWhat the row is: game, standing, team, athlete, article, injury, ranking or tournament, depending on What to return.
keyStable ID such as espn:nfl:401872945, used to merge days and to spot changes between runs.
name, shortNameThe away side first for team games (IND @ KC); the event name for tournaments, races and fight cards.
startsAtStart time in UTC, the shared timeline for all sports.
status, statusDetail, completedpre, in or post in every sport, plus ESPN's own label, e.g. Final/OT.
period, clockLast period in the sport's own unit: innings in baseball, quarters in the NFL (5 means overtime), periods in hockey, halves in soccer, sets in tennis, rounds in MMA.
home, awayThe two sides of a game with name, score, winner, record and periodScores, the score of each period, e.g. [10, 7, 7, 3, 6].
venue, attendanceVenue with city, state and country, and the reported crowd.
broadcastsUS TV and streaming channels, e.g. NBC.
oddsESPN's betting line when it publishes one in American odds: provider, moneylines, spread and total, plus the price of a draw in drawMoneyLine for soccer.
urlThe game or event page on espn.com; null for IndyCar races, which have no page there.

Sports without two sides use participants instead: a bout holds both fighters, and golf leaderboards and race classifications give one row per player or driver with competitorName, standingPosition and standingScore. Tennis matches keep home and away and add draw and result. Standing rows carry the table figures in stats (motorsport driver rows identify the driver in athleteId and leave teamId empty), athlete rows jersey, position, heightCm and weightKg, and article rows title, summary and publishedAt.

How to read several leagues in one run

  1. Enter the league keys in Leagues, one per line, in the order you want them read, for example mlb, nfl and epl.
  2. Pick What to return. Games and results fits every league; the table, team, roster and schedule modes return rows only where ESPN has teams.
  3. Set From date and To date. Every league is read day by day over the same range, up to 120 days.
  4. Raise Maximum rows, prefilled with 200, if the combined result can be larger, because the cap counts rows across all leagues. Without that field a run stops at 2,000 rows.
  5. Click Start. All leagues land in one dataset in the Output tab, where you can filter on sport or league and export to CSV, Excel or JSON, or read the rows through the API. The prefilled input looks like this:
{
"leagues": ["mlb", "nfl", "epl"],
"mode": "scoreboard",
"dateFrom": "2026-09-20",
"dateTo": "2026-09-21",
"maxItems": 200
}

Example output

An NFL game from a run of that input on 27 September 2026. It went to overtime, so period is 5 and each team has five numbers in periodScores.

{
"key": "espn:nfl:401872945",
"type": "game",
"sport": "americanfootball",
"league": "nfl",
"leagueName": "National Football League",
"gameId": "401872945",
"name": "Indianapolis Colts at Kansas City Chiefs",
"shortName": "IND @ KC",
"round": null,
"startsAt": "2026-09-21T00:20:00.000Z",
"status": "post",
"statusDetail": "Final/OT",
"completed": true,
"period": 5,
"clock": "0:00",
"seasonYear": 2026,
"seasonType": "regular-season",
"home": {
"id": "12",
"kind": "team",
"name": "Kansas City Chiefs",
"shortName": "KC",
"location": "Kansas City",
"score": 33,
"winner": true,
"record": "2-0",
"position": 0,
"homeAway": "home",
"periodScores": [
10,
7,
7,
3,
6
],
"logo": "https://a.espncdn.com/i/teamlogos/nfl/500/scoreboard/kc.png"
},
"away": {
"id": "11",
"kind": "team",
"name": "Indianapolis Colts",
"shortName": "IND",
"location": "Indianapolis",
"score": 30,
"winner": false,
"record": "0-2",
"position": 1,
"homeAway": "away",
"periodScores": [
7,
13,
0,
7,
3
],
"logo": "https://a.espncdn.com/i/teamlogos/nfl/500/scoreboard/ind.png"
},
"venue": {
"name": "Arrowhead Stadium",
"city": "Kansas City",
"state": "MO",
"country": "USA",
"indoor": false
},
"attendance": 73351,
"neutralSite": false,
"broadcasts": [
"NBC"
],
"odds": null,
"url": "https://www.espn.com/nfl/game/_/gameId/401872945/colts-chiefs"
}

Which leagues and modes are covered?

SportLeagues and their keys
BaseballMLB (mlb)
BasketballNBA (nba), WNBA (wnba), NCAA men's basketball (ncaab), NBA G League (gleague)
American footballNFL (nfl), NCAA football (ncaaf)
HockeyNHL (nhl)
SoccerPremier League (epl), LaLiga (laliga), Bundesliga (bundesliga), Serie A (seriea), Ligue 1 (ligue1), MLS (mls), Champions League (ucl)
TennisATP Tour (atp), WTA Tour (wta)
GolfPGA Tour (pga), LPGA Tour (lpga)
MotorsportFormula 1 (f1), IndyCar Series (indycar)
MMAUFC (ufc), PFL (pfl)
CricketCricket World Cup (cricket-worldcup)
LacrosseNational Lacrosse League (nll)

The baseball, basketball, American football, hockey and soccer leagues support the six general modes. Tennis, golf and MMA have no teams at ESPN, so for atp, wta, pga, lpga, ufc and pfl only Games and results and League news return rows. Formula 1 sits in between: League table gives the drivers' and the constructors' championship and Teams the 11 teams, while rosters and team schedules stay empty. For indycar, League table returns the drivers' championship.

Three modes cover only some leagues. Injury report returns one injury row per player on ESPN's injury list for nfl, nba, wnba, mlb and nhl, with status, injury, expected return and report time; on 11 October 2026 that was 245, 132, 48, 284 and 123 players. ATP and WTA singles rankings returns the top 150 of atp and wta, and Tournament calendar one row per tennis tournament overlapping the dates. Other leagues are skipped in these modes with a warning in the log.

How much does it cost to scrape ESPN data?

Free planStarterScaleBusiness
1,000 results$1.00$0.80$0.65$0.50
Box score and injuries, per 1,000$1.00$0.80$0.65$0.50

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

The prefilled input returned 18 MLB games, 15 NFL games and 4 Premier League matches, 37 rows that cost $0.037 on the Free plan. The box score option adds one event for each game that gets a detail object. ESPN has no box score for tennis, golf, MMA or motorsport, so for those leagues the option adds nothing and costs nothing.

Limits

  • With Leagues left empty the run reads MLB only.
  • Leagues are read in the order given, and once Maximum rows is reached the remaining leagues are not requested at all.
  • One run covers up to 120 days, with one request per league and day.
  • College games are men's Division I basketball and the FBS in football. Teams for ncaaf, however, returns 762 programs from all divisions, and a roster or schedule run without Team identifiers requests every one of them.
  • ESPN dates games by the US Eastern day, so a late game on the US West Coast on 21 September has startsAt on 22 September in UTC.
  • Keys the actor does not recognize are skipped. The SUMMARY record of the run lists them under skippedLeagues, together with the rows found and returned per league.
  • A league out of season returns no rows: the NBA scoreboard was empty from 23 to 30 September 2026.

FAQ

The actor reads the public JSON feeds behind espn.com without logging in and without an API key, and it collects scores, schedules, standings, rosters and headlines. News rows keep the headline, summary and link, never the article itself, and roster rows contain what the leagues publish about their professional athletes. You are responsible for how you use the data, including ESPN's terms if you republish it.

Can I type league names instead of keys?

Yes. The actor also accepts names such as premier-league, formula-1, champions-league, college-football or hockey, written with hyphens or spaces and in any case. football means the Premier League, so use nfl for American football.

Is there a version for a single sport?

Soccer, tennis, golf, UFC, Formula 1, MLB, NBA, NFL and NHL each have their own actor on the same code with that sport's leagues preselected, and a separate actor returns only games with betting lines. Their rows are identical, so switching needs no change in how you process them.

Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.