ESPN Sports Data Scraper: Scores, Boxscores, Gamelogs & Odds avatar

ESPN Sports Data Scraper: Scores, Boxscores, Gamelogs & Odds

Pricing

from $2.00 / 1,000 results

Go to Apify Store
ESPN Sports Data Scraper: Scores, Boxscores, Gamelogs & Odds

ESPN Sports Data Scraper: Scores, Boxscores, Gamelogs & Odds

Extract ESPN sports data in bulk from its public API: live and historical scores, boxscores, odds, standings, schedules, rosters and player gamelogs, 17 leagues. Flat CSV, Excel and pandas output, no API key. Run via API, schedule runs, or integrate with other tools and AI workflows.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

MrBridge

MrBridge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

ESPN Sports Data Scraper

Extract sports data from ESPN in bulk: full-season scores, boxscores, play-by-play, betting odds, standings, schedules, rosters, athletes and multi-season player gamelogs. Output is flat, snake_case and ready for pandas, Excel or Kaggle. It reads ESPN's public JSON API directly (no HTML parsing, no browser), so it is fast and needs no API key.

This is the batch companion to the interactive ESPN MCP Server. Use the MCP server for real-time, on-demand questions from an AI agent; use this Actor to pull whole seasons into a dataset for analysis.

What you can do with it

  • Pull complete seasons of scores in one run: by default the season type is All (preseason + regular season + playoffs), or narrow it to a single type.
  • Build Kaggle-ready CSV/Excel datasets with no post-processing.
  • Collect multi-season player gamelogs for modeling.
  • Get full boxscores, play-by-play and odds per game for betting research.
  • Snapshot standings, rosters and schedules for dashboards.

Supported leagues (v1)

NFL, NCAA Football (FBS), NBA, WNBA, NCAA Men's and Women's Basketball, MLB, NHL, and soccer: Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS, UEFA Champions League, UEFA Europa League, FIFA World Cup.

Every league is served by the same ESPN endpoints, so the core data types work the same way across them. The differences are structural, by sport:

Data typesLeaguesNotes
scoreboard, gameSummary, playByPlay, playerBoxscore, schedule, teams, standings, roster, athletes, athleteGamelog, newsNBA, WNBA, NFL, MLB, NHL, NCAA (football, men's and women's basketball)Full support. Validated end-to-end on NBA.
scoreboard, gameSummary, playByPlay, schedule, teams, standings, newsSoccer leagues (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS)No US-style per-player roster/gamelog/boxscore.
scoreboard, gameSummary, schedule, teams, newsCup competitions (UEFA Champions/Europa League, FIFA World Cup)No conventional season standings.

An unsupported (league, data type) combination returns a clear informational item, never a crash.

Data types

Data typeOne row isKey inputs
scoreboarda game (scores, teams, status, venue, margin)league + date range or seasons
gameSummarya game's team boxscoreeventIds or chained from scoreboard
playByPlaya single playeventIds or chained
playerBoxscorea player in a gameeventIds or chained
schedulea scheduled gameleague + teamIds + season
teamsa teamleague
standingsa team's standings rowleague + seasons
rostera roster playerleague + teamIds
athletesan athleteleague
athleteGameloga player's game in a seasonleague + athleteIds + seasons
newsa news article (metadata + link)league

Example input

Full NBA 2025 season, all game types (the default: preseason + regular + playoffs):

{
"dataType": "scoreboard",
"league": "nba",
"seasons": ["2025"]
}

Narrow it to the regular season only:

{
"dataType": "scoreboard",
"league": "nba",
"seasons": ["2025"],
"seasonType": "2"
}

Full play-by-play for three games:

{
"dataType": "playByPlay",
"league": "nba",
"eventIds": ["401585601", "401585602", "401585603"]
}

Every 2023 to 2025 season gamelog for a player (seasons discovered automatically):

{
"dataType": "athleteGamelog",
"league": "nba",
"athleteIds": ["4065648"],
"allSeasons": true
}

Example output (flat)

{
"_type": "scoreboard",
"league": "nba",
"season": 2025,
"season_type": 2,
"game_id": "401585601",
"date_utc": "2025-04-13T23:00Z",
"status": "post",
"completed": true,
"home_team_abbrev": "BOS",
"home_score": 120,
"away_team_abbrev": "MIA",
"away_score": 111,
"margin": 9,
"total_points": 231,
"venue_name": "TD Garden",
"scraped_at": "2026-07-11T09:00:00.000Z"
}

Need real-time interactive access?

For live, on-demand queries from an AI agent (Claude, ChatGPT, and other MCP clients), use the ESPN MCP Server. It exposes the same ESPN data as tools with no caching, ideal for single-question lookups. This Actor is the opposite end: bulk and historical extraction into a dataset.

Pricing

This Actor uses pay-per-event pricing with a single flat price per delivered result, shown on the Pricing tab and billed only on successfully delivered data. A result is one row (a game, team, standings row, roster player, athlete or news article), one game's full detail, or one athlete-season gamelog.

  • Error rows and failed runs are never charged.
  • One athlete-season gamelog is a single charge even though it produces many game rows.
  • A game's detail is charged at most once per game, even when you pull its summary, play-by-play and player boxscore together.

To cap cost, set maxChargedEvents in the input, or set ACTOR_MAX_TOTAL_CHARGE_USD per run from the Console. Note that maxItems caps dataset rows, not cost.

FAQ

Do I need an ESPN API key? No. The data comes from ESPN's public JSON endpoints.

Are there rate limits? The Actor paces itself (bounded concurrency, backoff, aggressive caching of finished data) to stay a good citizen of ESPN's endpoints.

Very large multi-season pulls? Rows are pushed incrementally, so a run that hits its timeout keeps everything gathered so far. For very large jobs, raise the run timeout or split into per-season runs.

Where are the run totals? Each run writes an OUTPUT record to its default key-value store with the totals (rows pushed, events charged, error rows) and finish time, so an integration can check a run without scanning the dataset.

About

Built by mrbridge. Explore the wider catalogue of data and automation tools at mr-bridge.com/scrapers, and the model context protocol servers at mr-bridge.com/mcp-servers.

Feedback and issues

Found a bug, or want a league or data type added? Your feedback shapes the roadmap: open an issue on the Issues tab.

This Actor extracts publicly available data for research and analytics. Respect ESPN's terms of use and applicable laws when using the data. ESPN is a trademark of its owner and is not affiliated with this Actor.