ESPN Scraper: Live Scores API & Sports Scores
Pricing
Pay per event
ESPN Scraper: Live Scores API & Sports Scores
ESPN scraper and ESPN API alternative: pull scoreboards, live and final scores, betting odds, venues and broadcasters for EPL, La Liga, Serie A, NBA, NFL, MLB and NHL. A live scores API and sports scores scraper with one clean row per event across any date range.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
ESPN Scraper: Live Scores API & Sports Scores
💰 $1.50 / 1 000 events · pay only for results · no credit card to try
We do the dirty work so your dataset stays clean. 😈
An ESPN scraper and ESPN API alternative that returns scoreboards as clean, flat rows: fixtures, live and final scores, status, venues, betting odds and broadcasters, one row per event, across a date range and several leagues in a single run. Think of it as a live scores API without the date-loop, dedupe and retry plumbing.
🎯 What this scrapes
ESPN's public scoreboard data for seven leagues: English Premier League, La Liga, Serie A, NBA, NFL, MLB and NHL. Each row is one event with teams, scores, game state, start time, venue, city, odds line, over/under, broadcasters and a link to the ESPN summary page. This sports scores scraper covers scoreboards only; standings, rosters and play-by-play are not included.
🔥 Features
- Multi-league, multi-day in one run. Pick up to seven leagues and a range of up to 31 days.
- We dedupe for you. Each event appears once per league, however many days overlap.
- We derive the winner. When ESPN omits it, we work it out from the final score.
- We retry with exponential backoff on
408 / 429 / 5xxand honourRetry-After. - We keep the dataset clean. Pydantic-validated rows, ISO-8601 timestamps, stable ids.
- A bad day never sinks the run. A failed league-day is logged and skipped; the rest still land.
💡 Use cases
- App and bot builders who need a live scores API feeding a score ticker or Discord bot.
- Betting and analytics hobbyists tracking odds lines next to final results.
- Newsletter and fantasy authors pulling the day's fixtures and finals on a schedule.
- Researchers building a dataset of results by league and date.
⚙️ How to use it
- Choose one or more
leagues. - Set
startDateandendDate(empty means today, UTC). - Set
maxEventsto cap how many rows you pay for. - Run it, then export to JSON, CSV or Excel, or pull the dataset through the Apify API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
leagues | array<string> | no | ["soccer/eng.1"] | 1 to 7 of soccer/eng.1, soccer/esp.1, soccer/ita.1, basketball/nba, football/nfl, baseball/mlb, hockey/nhl. |
startDate | string | no | today (UTC) | First day, inclusive, YYYY-MM-DD. |
endDate | string | no | startDate | Last day, inclusive. Range up to 31 days. |
maxEvents | integer | no | 100 | Hard cap on rows for the run (1 to 10000). |
proxyConfiguration | object | no | direct | Optional. Direct is the default; enable Apify Proxy for very large ranges. |
Example input
{"leagues": ["soccer/eng.1", "football/nfl"],"startDate": "2026-10-10","endDate": "2026-10-11","maxEvents": 40}
📤 Output
One row per event.
| Field | Type | Notes |
|---|---|---|
event_id | string | ESPN event id. |
league | string | sport/league key. |
league_name | string | null | League display name. |
event_name | string | Full event name. |
short_name | string | null | Short event name. |
start_time | string | ISO 8601 UTC. |
status_state | string | pre, in or post. |
status_detail | string | null | Human readable status. |
completed | boolean | Whether the event finished. |
home_team, away_team | string | Team display names. |
home_score, away_score | integer | null | Scores. |
winner | string | null | Null for draws and unfinished events. |
venue, city | string | null | Where it is played. |
odds_details, over_under | string | null, number | null | First odds provider. |
broadcasts | array<string> | Empty when none. |
url | string | null | ESPN summary page. |
scraped_at | string | Run time, ISO 8601 UTC. |
Example output
{"event_id": "401879268","league": "soccer/eng.1","league_name": "English Premier League","event_name": "Leeds United at Arsenal","short_name": "LEE @ ARS","start_time": "2026-10-10T11:30:00Z","status_state": "pre","completed": false,"home_team": "Arsenal","away_team": "Leeds United","home_score": 0,"away_score": 0,"winner": null,"venue": "Emirates Stadium","city": "London","odds_details": "ARS -265","over_under": 2.5,"broadcasts": ["USA Net", "Universo"],"scraped_at": "2026-10-07T12:00:00Z"}
💰 Pricing
Pay-per-event. No subscription, no minimum.
| Event | Price |
|---|---|
| Actor start | $0.20 per run |
| Result | $0.0015 per event row ($1.50 / 1 000) |
A typical run lands at $1.70 per 1,000 results: the $0.20 start fee plus 1,000 × $0.0015 per event row. You pay only for rows that land.
You pay only for results that land. A run that finds no events is charged only the start fee.
🚧 Limitations
- Scoreboards only: no standings, rosters, box scores or play-by-play.
- Seven leagues in this version; more are added once verified.
- Odds appear for soccer and NFL; NBA, MLB and most NHL events have none, and those fields are null.
- Up to 31 days per run.
- Scoreboard data belongs to its owner; we return facts only, no logos or media.
❓ FAQ
Is this an official ESPN API? No. It is an independent ESPN scraper that reads ESPN's public scoreboard data and returns it as a tidy dataset.
Does it return live scores? Yes, for events in progress at the moment of the run. Each run is a snapshot; schedule it for continuous updates.
What if a day has no games? The run succeeds with zero rows and a status message saying what was searched.
💬 Your feedback
Found a league you need or a field that is off? Tell us through the Actor's Issues tab and we will take a look.