ESPN Scores & Schedules
Pricing
from $1.00 / 1,000 results
ESPN Scores & Schedules
Scrape live scores, final results, and upcoming game schedules from ESPN across 16 leagues and 5 sports. No account or proxy required.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(4)
Developer
Crawler Bros
Actor stats
4
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Extract publicly available game scores and schedules from ESPN — no account, login, or proxy required. Supports 16 leagues across basketball, football, baseball, hockey, and soccer.
What This Scraper Does
This actor calls ESPN's public JSON API to retrieve game results, scores, and upcoming fixture data for any combination of supported leagues and dates. With Fetch Game Details enabled, each game record is enriched with top performers (leaders), betting odds, attendance, and game headlines.
Supported Leagues
| Code | League | Sport |
|---|---|---|
nba | NBA | Basketball |
nfl | NFL | Football |
mlb | MLB | Baseball |
nhl | NHL | Hockey |
mls | MLS | Soccer |
wnba | WNBA | Basketball |
ncaam | NCAA Men's Basketball | Basketball |
ncaaw | NCAA Women's Basketball | Basketball |
ncaaf | NCAA Football | Football |
epl | English Premier League | Soccer |
laliga | La Liga | Soccer |
ucl | UEFA Champions League | Soccer |
bundesliga | Bundesliga | Soccer |
seriea | Serie A | Soccer |
ligue1 | Ligue 1 | Soccer |
ligamx | Liga MX | Soccer |
Input
| Field | Type | Default | Description |
|---|---|---|---|
| Leagues | string[] | ["nba"] | One or more league codes from the table above. |
| Date Mode | enum | today | today, yesterday, tomorrow, single, or range. |
| Date | string | — | YYYYMMDD — required when Date Mode is single. |
| Start Date | string | — | YYYYMMDD — required when Date Mode is range. |
| End Date | string | — | YYYYMMDD — required when Date Mode is range. Max span: 30 days. |
| Timezone | string | UTC | IANA timezone (e.g. America/New_York) for dateLocal and for resolving today/yesterday/tomorrow. |
| Fetch Game Details | boolean | false | Adds leaders, odds, attendance, and headlines per game. One extra request per game. |
| Max Items | integer | 100 | Cap on total records returned (1–10,000). |
Date Mode Examples
| Mode | What it fetches |
|---|---|
today | Games scheduled or completed today in the given timezone |
yesterday | Yesterday's final scores |
tomorrow | Tomorrow's scheduled fixtures |
single + date: "20240115" | All games on 15 January 2024 |
range + startDate: "20240101" + endDate: "20240107" | Seven days of games |
Output
Each record represents one game. Fields marked ? are optional and appear only when ESPN provides them.
Core Fields (always present)
| Field | Type | Description |
|---|---|---|
gameId | string | ESPN event ID |
league | string | League code e.g. "nba" |
sport | string | Sport e.g. "basketball" |
status | string | "scheduled", "in_progress", "final", "postponed", or "cancelled". Note: delayed games are reported as "scheduled" — check statusDetail for the text "Delayed". |
statusDetail | string? | Human-readable detail e.g. "Q3 4:23", "Final", "7:30 PM ET" |
date | string | ISO 8601 UTC kickoff time |
dateLocal | string? | Kickoff in requested timezone |
name | string | Full game name e.g. "Boston Celtics at Los Angeles Lakers" |
shortName | string | Abbreviated matchup e.g. "BOS @ LAL" |
homeTeam | object | {id, name, abbreviation, score, logo} |
awayTeam | object | {id, name, abbreviation, score, logo} |
venue | object? | {name, city, state, country} |
broadcasts | string[]? | TV/streaming channels e.g. ["ESPN", "ABC"] |
scrapedAt | string | ISO 8601 UTC scrape timestamp |
Extra Fields (Fetch Game Details: true)
| Field | Type | Description |
|---|---|---|
leaders | object? | {home: [{name, position, stat, value}], away: [...]} — top performers |
odds | object? | {provider, details, overUnder, spread} — pre-game betting line |
attendance | integer? | Actual game attendance |
headline | string? | Game recap or preview headline |
gameNotes | string[]? | Notable notes e.g. records set, milestones |
Error Records
If a league/date combination fails, the record contains:
| Field | Description |
|---|---|
inputLeague | The league code that was attempted |
inputDate | The date string that was attempted |
error | Human-readable error message |
scrapedAt | Timestamp |
Frequently Asked Questions
Do I need an ESPN account or API key? No. This scraper uses ESPN's public JSON API which is freely accessible without any login or authentication.
Is a proxy required? No. ESPN's public API has no bot protection. This scraper works out of the box on Apify cloud without any proxy configuration.
How do I get yesterday's NBA scores?
Set Leagues to ["nba"] and Date Mode to yesterday. Run the actor and all final scores from the previous day will be in the dataset.
How do I get scores for multiple leagues at once?
Add multiple codes to the Leagues array — e.g. ["nba", "nfl", "epl"]. Each league and date combination is fetched independently.
What does the score field look like for a scheduled game?
The score field on homeTeam and awayTeam will be 0 for games that haven't started yet. Check the status field: a value of "scheduled" means the game has not begun.
What is the maximum date range? 30 days. Requesting a range larger than 30 days will return an error. For historical bulk data, run multiple 30-day range requests.
How often is the data updated? The actor fetches data live from ESPN's API at run time. For real-time in-game scores, schedule the actor to run every few minutes using Apify's scheduler.
What leagues are available for soccer?
MLS (mls), English Premier League (epl), La Liga (laliga), UEFA Champions League (ucl), Bundesliga (bundesliga), Serie A (seriea), Ligue 1 (ligue1), and Liga MX (ligamx).