ESPN Sports Stats Scraper: Scores, Box Scores, Standings
Pricing
from $0.50 / 1,000 rows
ESPN Sports Stats Scraper: Scores, Box Scores, Standings
Every major ESPN league in one actor: scoreboards, full box scores with one row per player stat line, schedules, standings, rosters and career player stats for NFL, NBA, MLB, NHL, WNBA, college, soccer, UFC, PGA and F1.
Pricing
from $0.50 / 1,000 rows
Rating
0.0
(0)
Developer
Chris Lucas
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
ESPN Sports Stats Scraper: scores, box scores, standings, rosters, player stats
Pulls data from ESPN's public JSON endpoints for NFL, NBA, MLB, NHL, WNBA, college football and basketball, the big soccer leagues, UFC, PGA and F1, all in one actor. No ESPN account or API key. Output is flat JSON rows with a type field, ready for a spreadsheet, a database or a model.
What you get
type | Mode | One row per |
|---|---|---|
game | scoreboard, teamSchedule | game (UFC: bout, F1: session): teams, scores, records, status, venue, broadcast, odds, leaders |
gameDetail | gameDetails | game: line scores, team box-score stats, attendance, officials, odds, win probability |
playerStatLine | gameDetails, playerStats | player per stat group in a game, or player per season (plus a Career row) |
standing | standings | team in a league table, with every ESPN stat column |
rosterPlayer | roster | player on a team: jersey, position, age, height, weight, college, status, injuries |
Box scores differ per sport and the actor keeps each sport's own columns: NBA (MIN, PTS, FG, 3PT, REB, AST ...), NFL (passing, rushing, receiving, defensive, kicking ... as separate statGroup rows), MLB (batting, pitching), NHL (forwards, defenses, goalies), soccer (appearances, shots, saves ...). Numbers are returned as numbers; ratios like 11-18 stay strings.
Input
| Field | Meaning | Example |
|---|---|---|
mode | scoreboard (default), gameDetails, teamSchedule, standings, roster, playerStats | scoreboard |
leagues | Keys or names: nfl, nba, mlb, nhl, wnba, college-football (ncaaf), mens-college-basketball (ncaab), eng.1 (epl), usa.1 (mls), esp.1 (laliga), ger.1, ita.1, fra.1, uefa.champions (ucl), ufc, pga, f1 | ["nfl","nba","mlb"] |
dateFrom, dateTo | YYYY-MM-DD, default yesterday to today, 31 days at most | 2026-10-27 |
eventIds | gameDetails: ESPN game IDs (nba:401909881 pins the league). Empty = every finished or live game in the date range | ["401909881"] |
teamIds, teamNames | teamSchedule / roster. Roster with neither returns the whole league | ["Lakers"] |
athleteIds, athleteNames | playerStats | ["LeBron James"] |
season | ESPN season year = the year the season ends (2026-27 NBA is 2027) | 2027 |
maxItems | Hard cap on rows, default 500 | 500 |
{"mode":"scoreboard","leagues":["nfl","nba","mlb"],"dateFrom":"2026-10-27","dateTo":"2026-10-29","maxItems":100}
Output example (game)
{"type":"game","league":"nba","sport":"basketball","season":2027,"seasonType":"regular-season","eventId":"401909877","date":"2026-10-27T23:30Z","name":"Brooklyn Nets at Boston Celtics","status":"Final","statusState":"post","completed":true,"homeName":"Boston Celtics","homeAbbrev":"BOS","homeScore":125,"homeRecord":"3-1","awayName":"Brooklyn Nets","awayAbbrev":"BKN","awayScore":124,"awayRecord":"0-4","winner":"Boston Celtics","venue":"TD Garden","city":"Boston","broadcast":"NBA League Pass, DAZN (YES)","oddsDetails":null,"spread":null,"overUnder":null,"leaders":[{"category":"points","team":"BOS","athlete":"Jayson Tatum","value":"40"}],"url":"https://www.espn.com/nba/game/_/gameId/401909877/nets-celtics","scrapedAt":"2026-10-31T01:44:00Z"}
Output example (playerStatLine, from a box score)
{"type":"playerStatLine","league":"nba","eventId":"401909881","date":"2026-10-28T23:00Z","team":"Miami Heat","teamAbbrev":"MIA","athleteId":"3032977","player":"Giannis Antetokounmpo","position":"F","starter":true,"statGroup":"","stats":{"MIN":31,"PTS":24,"FG":"11-18","3PT":"0-2","FT":"2-5","REB":18,"AST":3,"TO":2,"STL":1,"BLK":1},"url":"https://www.espn.com/nba/game/_/gameId/401909881","scrapedAt":"2026-10-31T01:46:00Z"}
Pricing (pay per event)
| Event | Price | Applies to |
|---|---|---|
row | $0.0005 | each game, playerStatLine, standing and rosterPlayer row |
game-detail | $0.002 | each gameDetail summary row |
Examples: a 3-day NFL + NBA + MLB scoreboard (about 22 games) costs about $0.011. 1,000 scoreboard rows cost $0.50. One NBA box score (1 summary + about 19 player lines) costs about $0.0115. All 30 NBA standings rows cost $0.015. There is no start fee beyond Apify's platform usage. Runs never charge for failures or empty results, and maxItems caps spend.
Use cases
Betting-model and fantasy data feeds, daily results digests, player-vs-player research, box-score datasets for training, standings and schedule widgets, sports newsletters.
FAQ
Is it live? Scoreboards and box scores refresh as ESPN updates them; in-progress games return their current score and status.
Why one request per day? ESPN's scoreboard currently rejects date ranges, so the actor fetches each day separately. Up to 31 days per run.
Which season do I pass? The year the season ends. NFL 2026 = 2026, NBA 2026-27 = 2027.
Do I need a proxy? The endpoints are open. The default Apify datacenter proxy works; no residential proxy is used or needed.
Other leagues? Pass any ESPN sport/league path, e.g. hockey/nhl or soccer/ger.1. Common leagues are verified; others use the same endpoints.
Limits
- Data comes from ESPN's public site API, which is undocumented and can change without notice.
- Golf and F1 rows keep the top 10 competitors per event; they have no home/away fields. UFC and F1 produce one row per bout or session.
- Odds are present when ESPN publishes them (mostly before and during games); box-score odds are the closing line.
- NFL box scores omit player positions in ESPN's response, so
positionis null there. - Not affiliated with ESPN or The Walt Disney Company. Use the data in line with ESPN's terms.