ESPN Sports Scraper
Pricing
from $0.50 / 1,000 results
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.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
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?
| Field | Description |
|---|---|
sport, league, leagueName | Sport group, league key and name, e.g. americanfootball, nfl and National Football League. Filter or group on these when you mix leagues. |
type | What the row is: game, standing, team, athlete, article, injury, ranking or tournament, depending on What to return. |
key | Stable ID such as espn:nfl:401872945, used to merge days and to spot changes between runs. |
name, shortName | The away side first for team games (IND @ KC); the event name for tournaments, races and fight cards. |
startsAt | Start time in UTC, the shared timeline for all sports. |
status, statusDetail, completed | pre, in or post in every sport, plus ESPN's own label, e.g. Final/OT. |
period, clock | Last 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, away | The 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, attendance | Venue with city, state and country, and the reported crowd. |
broadcasts | US TV and streaming channels, e.g. NBC. |
odds | ESPN'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. |
url | The 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
- Enter the league keys in Leagues, one per line, in the order you want them read, for example
mlb,nflandepl. - Pick What to return. Games and results fits every league; the table, team, roster and schedule modes return rows only where ESPN has teams.
- Set From date and To date. Every league is read day by day over the same range, up to 120 days.
- 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.
- Click Start. All leagues land in one dataset in the Output tab, where you can filter on
sportorleagueand 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?
| Sport | Leagues and their keys |
|---|---|
| Baseball | MLB (mlb) |
| Basketball | NBA (nba), WNBA (wnba), NCAA men's basketball (ncaab), NBA G League (gleague) |
| American football | NFL (nfl), NCAA football (ncaaf) |
| Hockey | NHL (nhl) |
| Soccer | Premier League (epl), LaLiga (laliga), Bundesliga (bundesliga), Serie A (seriea), Ligue 1 (ligue1), MLS (mls), Champions League (ucl) |
| Tennis | ATP Tour (atp), WTA Tour (wta) |
| Golf | PGA Tour (pga), LPGA Tour (lpga) |
| Motorsport | Formula 1 (f1), IndyCar Series (indycar) |
| MMA | UFC (ufc), PFL (pfl) |
| Cricket | Cricket World Cup (cricket-worldcup) |
| Lacrosse | National 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 plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 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
startsAton 22 September in UTC. - Keys the actor does not recognize are skipped. The
SUMMARYrecord of the run lists them underskippedLeagues, 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
Is it legal to scrape ESPN?
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.
Related scrapers
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.