ESPN Sports Scraper - Scores, Odds, Stats & Standings
Pricing
from $3.00 / 1,000 game scrapeds
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 $3.00 / 1,000 game scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
ESPN Sports Scraper — Scores, Odds, Stats, Standings & News
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.
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.
| Data | Typical scrapers | This actor |
|---|---|---|
| Live & final scores | partial | ✅ all 40+ leagues |
| Betting odds (spread, total, money line) | ❌ | ✅ across sportsbooks |
| Deep box score + player stats | ❌ | ✅ |
| Win probability, scoring plays, injuries | ❌ | ✅ (Game mode) |
| League standings (W-L, GB, streaks, +/-) | partial | ✅ |
| Team rosters (age, height, college, salary) | ❌ | ✅ |
| Team & league schedules | partial | ✅ |
| AP / Coaches rankings | ❌ | ✅ |
| League news articles | ❌ | ✅ |
| Monitor mode — only new/changed data | ❌ | ✅ |
| Worldwide soccer + F1 / UFC / golf | rarely | ✅ |
Use cases
- Sports betting & odds tools — pull spreads, totals and money lines per game across sportsbooks, and use monitor mode to catch line movements as they happen.
- Fantasy & analytics apps — feed schedules, box scores, player stats, standings and injuries into models and dashboards.
- Media, blogs & Discord/Telegram bots — auto-post live scores, final results, rankings and headlines on a schedule.
- Data science & prediction models — build historical datasets of results, odds and win probabilities across seasons.
- League & team tracking — monitor a favorite team's schedule, results and roster changes automatically.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the ESPN Sports Scraper, pick a Mode (Scoreboard by default) and the leagues you want (e.g.
nba,nfl,epl). - Click Start and watch results stream into the dataset table.
- 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}
| Field | What it does |
|---|---|
| mode | scoreboard (games + scores + odds), game (deep box score), odds (lines per game), standings, teams, roster, schedule, news, rankings. |
| leagues | League keys for the league-level modes — nfl, nba, mlb, nhl, college-football, ncaam, epl, la-liga, ucl, mls, f1, ufc, pga… (full list below). |
| dates | Scoreboard/odds date selector: YYYYMMDD, YYYY-MM-DD, a range YYYYMMDD-YYYYMMDD, or today / yesterday / tomorrow. Blank = today. |
| eventIds | Game mode — nba/401766123, nfl/401671800. |
| teamIds | Teams / Roster / Schedule — nba/LAL, nfl/KC, mlb/NYY (abbreviations auto-resolve to IDs). |
| startUrls | Paste ESPN.com URLs (game / team / standings / scoreboard pages) and they're auto-routed. |
| enrichGameDetails | Attach each scoreboard game's deep summary (box score, odds, win probability). |
| includeAllOddsProviders | Odds mode: fetch every sportsbook line per game (default on). |
| monitorMode / monitorKey | Output only new/changed records vs previous runs (see below). |
| season / seasonType / groups | Optional fine-tuning for standings, schedules and college filters. |
| maxResults / maxConcurrency / proxyConfiguration | Run 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.
Output
By default you get one clean table of games. Switch the dataset view (Games / Betting odds / 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" },"homeTeam": "New York Knicks", "homeAbbr": "NY", "homeScore": 68, "homeRecord": "41-22","awayTeam": "Boston Celtics", "awayAbbr": "BOS", "awayScore": 72, "awayRecord": "45-18","odds": { "provider": "ESPN BET", "details": "BOS -3.5", "spread": -3.5, "overUnder": 224.5, "homeMoneyLine": 140, "awayMoneyLine": -165 },"venue": { "name": "Madison Square Garden", "city": "New York", "state": "NY", "indoor": true },"broadcasts": ["ESPN"],"leaders": [{ "team": "BOS", "category": "Points", "athlete": "Jayson Tatum", "value": "24 PTS" }],"url": "https://www.espn.com/nba/game/_/gameId/401766123"}
An oddsLine record carries homeTeam/awayTeam, a flattened primary line (provider, spread, overUnder, homeMoneyLine, awayMoneyLine) plus a providers array with every sportsbook. A gameSummary adds teamStats, leaders, odds[], winProbability, scoringPlays, injuries and seasonSeries. standing, team, player, scheduleGame, article and ranking records each ship the full set of fields shown in their dataset view.
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.
| Mode | Always present | Present in context |
|---|---|---|
| Scoreboard | teams, score, status, venue, date | odds (pre-game/live), leaders, live situation, broadcasts |
| Odds | teams, date, ≥1 sportsbook line | multiple providers (with includeAllOddsProviders) |
| Game | box score, team stats, status | odds, win probability, injuries, play-by-play (opt-in) |
| Standings | team, W-L, win % | points, GB, streak, +/- (varies by sport) |
| Roster | name, position, jersey | age, height, weight, college, salary, injury status |
A blank field means ESPN didn't publish it for that record — nothing is dropped, so you always get the richest data available.
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.
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.
More scrapers from scrapesage
Build a complete real-time data & market-intelligence stack:
- CoinGecko Crypto Scraper — crypto prices, markets, NFTs and trending coins.
- Yahoo Finance Scraper — live stock, ETF, FX and crypto quotes plus financials.
- Google Trends Scraper — search interest over time, by region and rising topics.
- Google News Scraper — articles, publishers, full text and related coverage.
- YouTube Scraper — channels, videos, stats and creator contacts.
- Steam Scraper — game prices, reviews and player data.
- Eventbrite Scraper — events plus organizer leads.
- Reddit-free social stack → — see all scrapesage actors.
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
groupsif you need more. - Individual sports (golf, racing, MMA): the full field of competitors is in the
competitorsarray of each event. - Off-season leagues return no games for "today" — pass a
datesvalue 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.
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.