ESPN Sports Scraper - Scores, Odds, Stats & Standings avatar

ESPN Sports Scraper - Scores, Odds, Stats & Standings

Pricing

from $1.68 / 1,000 game scrapeds

Go to Apify Store
ESPN Sports Scraper - Scores, Odds, Stats & Standings

ESPN Sports Scraper - Scores, Odds, Stats & Standings

Scrape live scores, betting odds, schedules, standings, box scores, rosters and news for 40+ leagues — NFL, NBA, MLB, NHL, NCAA, soccer (EPL, La Liga, UCL…), F1, UFC, golf & more. Keyless, fast, no browser. Monitor mode for score & odds updates. Export to JSON, CSV or Excel.

Pricing

from $1.68 / 1,000 game scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

1

Bookmarked

443

Total users

104

Monthly active users

9 days ago

Last modified

Share

ESPN Sports Scraper — Scores, Odds, Stats, Standings & News

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ESPN, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "ESPN" is referenced only to describe the publicly available website this Actor collects data from.

Extract complete sports data for 40+ leagues from ESPN's public data API — live and final scores, sportsbook betting odds, full box scores & player stats, standings, team rosters, schedules, rankings and news. One actor covers the NFL, NBA, MLB, NHL, NCAA football & basketball, worldwide soccer (Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS, Champions League, Europa League, Liga MX…), Formula 1, UFC, golf and more.

Every game also carries the opening line and line movement per sportsbook, tickets, weather and broadcast details, probable pitchers, team logos and direct links to the box score, recap and play-by-play. Game summaries add the per-player box score, ESPN's matchup predictor and each team's recent form; teams carry their next game, venue and division; players their contract terms, size and college; news articles are joined to teams, players and games by id.

No API key, no login, no browser — fast JSON straight from the same endpoints that power ESPN.com and the ESPN app. Add monitor mode to pull only new games, score changes and odds movements, and run it on a schedule for an always-fresh feed.

Why this ESPN scraper?

Most sports scrapers do one league, one thing, and break the moment a season changes. This actor ships the richest sports dataset in the category from a single, reliable source — and it's the only one that bundles live scores, real sportsbook odds, deep box scores, standings, rosters and news together.

DataTypical scrapersThis actor
Live & final scorespartial✅ all 40+ leagues
Betting odds (spread, total, money line)✅ across sportsbooks
Opening line & line movement per book, with a bet link
Deep box score + per-player stats
Win probability, matchup predictor, scoring plays, injuries✅ (Game mode)
Tickets, weather, broadcasts & page links per game
League standings (W-L, GB, streaks, +/-, home/road/division splits)partial
Team rosters (age, height, college, salary, contract term)
Team & league schedules with resultspartial
Team profiles with venue, division & next game
AP / Coaches rankings with conference & poll week
League news joined to teams, players & games
Monitor mode — only new/changed data
Worldwide soccer + F1 / UFC / golfrarely

Use cases

  • Sports betting & odds tools — pull spreads, totals and money lines per game across sportsbooks, compare every line to its opening number, and use monitor mode to catch line movements as they happen.
  • Fantasy & analytics apps — feed schedules, per-player box scores, standings splits and injuries into models and dashboards.
  • Media, blogs & Discord/Telegram bots — auto-post live scores, final results, rankings and headlines on a schedule, with team logos and links to the recap and box score.
  • Data science & prediction models — build historical datasets of results, opening and closing odds, win probabilities and matchup predictions across seasons.
  • League & team tracking — monitor a favorite team's schedule, results, next game and roster changes automatically.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the ESPN Sports Scraper, pick a Mode (Scoreboard by default) and the leagues you want (e.g. nba, nfl, epl).
  3. Click Start and watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the Apify API.

Input

{
"mode": "scoreboard",
"leagues": ["nba", "nfl"],
"dates": "today",
"maxResults": 200
}
FieldWhat it does
modescoreboard (games + scores + odds), game (deep box score), odds (lines per game), standings, teams, roster, schedule, news, rankings.
leaguesLeague keys for the league-level modes — nfl, nba, mlb, nhl, college-football, ncaam, epl, la-liga, ucl, mls, f1, ufc, pga… (full list below).
datesScoreboard/odds date selector: YYYYMMDD, YYYY-MM-DD, a range YYYYMMDD-YYYYMMDD, or today / yesterday / tomorrow. Blank = today.
eventIdsGame mode — nba/401766123, nfl/401671800.
teamIdsTeams / Roster / Schedule — nba/LAL, nfl/KC, mlb/NYY (abbreviations auto-resolve to IDs).
startUrlsPaste ESPN.com URLs (game / team / standings / scoreboard pages) and they're auto-routed.
enrichGameDetailsAttach each scoreboard game's deep summary (box score, odds, win probability).
includeAllOddsProvidersOdds mode: fetch every sportsbook line per game (default on).
monitorMode / monitorKeyOutput only new/changed records vs previous runs (see below).
season / seasonType / groupsOptional fine-tuning for standings, schedules and college filters.
maxResults / maxConcurrency / proxyConfigurationRun limits and proxy.

Supported leagues (keys)

nfl, college-football (ncaaf), ufl · nba, wnba, mens-college-basketball (ncaam), womens-college-basketball (ncaaw) · mlb, college-baseball · nhl · Soccer: epl, efl-championship, fa-cup, carabao-cup, la-liga, serie-a, bundesliga, ligue-1, eredivisie, primeira-liga, mls, liga-mx, saudi-pro-league, brasileirao, liga-argentina, ucl, uel, uecl, world-cup, womens-world-cup, euro, copa-america, nwsl · ufc (mma), pfl, boxing · f1, nascar, indycar · pga, lpga.

Importing a list of URLs from a file

Got the URLs already? You do not have to add them one at a time. Import URLs from a file takes one URL per line, two ways:

  1. Paste the list — open your .txt, select all, paste it into the box.
  2. Link the file — put a single link there instead and it is downloaded for you: a public .txt/.csv, a Google Sheets or Drive share link (converted to CSV export automatically), or an Apify key-value-store record.
{ "urlsFromFile": "https://example.com/my-urls.txt" }

Imported URLs are added to startUrls. Blank lines, Windows line endings, a UTF-8 BOM, # comments, surrounding quotes and extra CSV columns are all tolerated, and duplicates are only scraped once. If the file cannot be read, the run says so on the run card instead of quietly returning nothing.

Output

By default you get one clean table of games. Switch the dataset view (Games / Betting odds / Line movement / Game summaries / Standings / Teams / Players / Schedule / News / Rankings) to match your mode. Every record carries a type, the league, and a scrapedAt timestamp.

A game record (type: "game"):

{
"type": "game",
"league": "nba",
"leagueName": "NBA",
"gameId": "401766123",
"date": "2026-06-17T23:00Z",
"name": "Boston Celtics at New York Knicks",
"shortName": "BOS @ NY",
"status": { "state": "in", "detail": "Q3 4:21", "completed": false, "period": 3, "clock": "4:21", "name": "STATUS_IN_PROGRESS", "shortDetail": "4:21 - 3rd" },
"homeTeam": "New York Knicks", "homeAbbr": "NY", "homeScore": 68, "homeRecord": "41-22",
"awayTeam": "Boston Celtics", "awayAbbr": "BOS", "awayScore": 72, "awayRecord": "45-18",
"odds": { "provider": "DraftKings", "details": "BOS -3.5", "spread": -3.5, "overUnder": 224.5, "homeMoneyLine": 140, "awayMoneyLine": -165,
"openSpread": -2.5, "openOverUnder": 226, "openHomeMoneyLine": 120, "openAwayMoneyLine": -142, "betUrl": "https://sportsbook.draftkings.com/…" },
"venue": { "name": "Madison Square Garden", "city": "New York", "state": "NY", "indoor": true, "id": "2073" },
"broadcasts": ["ESPN"],
"leaders": [{ "team": "BOS", "category": "Points", "athlete": "Jayson Tatum", "value": "24 PTS" }],
"url": "https://www.espn.com/nba/game/_/gameId/401766123",
"homeTeamId": "18", "awayTeamId": "2",
"homeLogo": "https://a.espncdn.com/i/teamlogos/nba/500/scoreboard/ny.png", "awayLogo": "https://a.espncdn.com/i/teamlogos/nba/500/scoreboard/bos.png",
"homeRecordHome": "24-8", "homeRecordRoad": "17-14",
"weatherSummary": "Partly sunny, 83°F",
"tickets": { "summary": "Tickets as low as $121", "numberAvailable": 3132 },
"broadcastDetails": [{ "network": "ESPN", "type": "TV", "market": "National", "region": "us", "lang": "en" }],
"pageLinks": { "gamecast": "…", "boxscore": "…", "playByPlay": "…", "recap": "…" }
}

An oddsLine record carries homeTeam/awayTeam, a flattened primary line (provider, spread, overUnder, homeMoneyLine, awayMoneyLine) plus a providers array with every sportsbook — and, for the primary line, the opening numbers (openSpread, openOverUnder, openHomeMoneyLine, openAwayMoneyLine), the movement since open (spreadMovement, totalMovement), the spread and total prices, a draw line for soccer, and betUrl. A gameSummary adds flat homeTeam/awayTeam/homeScore/awayScore, teamStats, playerStats (every player's box-score line), leaders, odds[], winProbability, predictor, recentForm, series, scoringPlays, injuries, seasonSeries, officials, tickets and page links. standing rows add home, road, division and conference records and the playoff seed; team records add slug, dark logo, division/conference ids, page links, venue detail and the next game; player records add numeric height/weight, position group, contract term, bats/throws and college ids; scheduleGame records carry the final score, records, forTeamResult (W/L), opponent, week and tickets; article records list the related teams, players and game ids; ranking records add the conference and the poll week and date.

What to expect (field coverage)

ESPN populates some fields only in context — odds appear for upcoming/live games, live situation only during play, salaries only for leagues that publish them, probable pitchers only in baseball, form only in soccer.

ModeAlways presentPresent in context
Scoreboardteams, ids, logos, score, status, venue, date, page linksodds with opening line (pre-game/live), tickets, weather, broadcasts, leaders, live situation, probables, headline & highlight (after the game)
Oddsteams, date, ≥1 sportsbook line, bet linkopening numbers & movement, multiple providers (with includeAllOddsProviders)
Gamebox score, team stats, player stats, status, flat home/awayodds, win probability, matchup predictor (pre-game), recent form, series, injuries, play-by-play (opt-in)
Standingsteam, W-L, win %, club linkpoints, GB, streak, +/-, home/road/division/conference splits, seed (varies by sport)
Rostername, position, jersey, height/weight numbersage, college, salary, contract term, bats/throws, injury status
Scheduledate, opponent, home/away, ticketsfinal score, records and W/L result once the game is played

A blank field means ESPN didn't publish it for that record — nothing is dropped, so you always get the richest data available.

Good to know

  • Line movement is the current line minus the sportsbook's opening line: spreadMovement and totalMovement are computed for you, and the raw opening numbers are kept alongside the current ones on every provider entry.
  • Schedule results carry the final score, both records and a W/L result for the team you asked about; upcoming games carry tickets, broadcasts and the week instead.
  • Team venue, next game, division and conference come from the team endpoint: use Teams mode with teamIds, or enrichTeamDetails on the league directory.
  • Player stats and the matchup predictor live in Game mode (and in Scoreboard mode with enrichGameDetails); the predictor is published before kickoff for the leagues ESPN models.
  • Ids everywhere: every record type carries ESPN's team, player and game ids, so games, rosters, standings and news join cleanly.

Monitor mode — only new & changed data

Turn on monitorMode and the actor remembers what it saw in previous runs (in a named key-value store) and outputs only what's new or changed:

  • Scoreboard / Schedule — new games and any score/status change (catch finals you haven't recorded, or live updates).
  • Odds — re-emits a game when its line moves (line-movement tracking).
  • Standings — re-emits a team when its record changes.
  • News — only new articles.

Set a distinct monitorKey per saved task so separate watchlists don't collide. This works alongside Apify's built-in scheduler — a Schedule starts each run, and monitor mode deduplicates against the run history, so you never double-process the same data.

How much does it cost to scrape ESPN?

This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

  • Game scraped - Scoreboard/schedule game: teams, score, status, venue, odds, leaders
  • Game summary scraped - Deep box score/stats, all odds, win prob, scoring plays, injuries
  • Odds line scraped - Per-game betting odds across books: spread, total, money lines
  • Standing row scraped - Team standings row: W-L, win%, points, GB, streak, +/-
  • Team scraped - Team profile: name, colors, logo, venue, record
  • Player scraped - Roster player: jersey, position, age, ht/wt, college, salary
  • Schedule game scraped - Game from a team's schedule: opponent, home/away, result, line
  • News article scraped - Headline, summary, author, publish time, link
  • Ranking scraped - Ranked team from a poll: rank, trend, points, record

The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, manage schedules over REST.
  • apify-client for JavaScript and Python — official SDKs.
  • Schedules — poll a league every few minutes on game day for live scores and odds, or daily for standings and news.
  • Webhooks — trigger downstream actions (post a score, send an odds-movement alert) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/espn-sports-scraper').call({
mode: 'odds',
leagues: ['nba', 'nfl'],
dates: 'today',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got odds for ${items.length} game(s)`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push scores or odds into Sheets, Slack or a database.
  • Slack — get notified on final scores or line movements.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the Apify MCP server — ask your assistant to "get tonight's NBA odds" or "pull the Premier League standings" and let it run the scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete real-time data & market-intelligence stack:

Tips

  • Pick one mode per task for a clean, fully-populated table. Use the dataset views to match (Games / Odds / Standings / …).
  • Live game day: schedule Scoreboard or Odds every few minutes with monitorMode on to capture score and line changes without re-processing finished games.
  • College sports: defaults filter to the top division (FBS football, D-I basketball). Override with groups if you need more.
  • Individual sports (golf, racing, MMA): the full field of competitors is in the competitors array of each event.
  • Off-season leagues return no games for "today" — pass a dates value from when the league was in season.

FAQ

Does it need an ESPN API key? No. This actor reads ESPN's public data endpoints — no key, login or browser required.

Which leagues are supported? 40+ across football, basketball, baseball, hockey, worldwide soccer, F1, NASCAR, IndyCar, UFC, boxing and golf. See the league-keys list above.

Can I get historical scores and odds? Yes — pass a past dates value (or range) in Scoreboard/Odds mode. ESPN keeps results; odds are present for games that had a published line.

How do I track live scores or line movements? Schedule the actor (e.g. every 2–5 minutes on game day) with monitorMode on — you'll only get new games and changes.

Can I export to Google Sheets, CSV or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

A field is empty — why? ESPN didn't publish it for that record (e.g. odds before a line is posted, or salary for a league that hides it). Fields are blank only when the source omits them — never because the scraper skipped them.

Is scraping ESPN legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws and ESPN's terms — for example, attributing the source and not reselling raw feeds where prohibited.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ESPN, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"ESPN" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official ESPN product, is not authorised or certified by ESPN, Inc., and does not distribute ESPN software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests (new leagues, fields or modes) are welcome — this actor is actively maintained.