ESPN Live Scores, Schedules & Game Odds Scraper
Get live scores, final results and upcoming fixtures for 16 leagues across basketball, football, baseball, hockey and soccer, with optional per-game leaders, odds, attendance and headlines.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to return: games for a scoreboard, a schedule, the league team directory, one record per sportsbook odds line, or a full game detail record. |
sport | string | optional | Optional sport filter. Use it with League = All supported leagues to cover every supported competition in one sport. |
league | string | optional | Competition to read. Choose All supported leagues only with a specific sport when you need broad coverage. Defaults to NBA when omitted. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to return: games for a scoreboard, a schedule, the league team directory, one record per sportsbook odds line, or a full game detail record. |
sport | string | optional | Optional sport filter. Use it with League = All supported leagues to cover every supported competition in one sport. |
league | string | optional | Competition to read. Choose All supported leagues only with a specific sport when you need broad coverage. Defaults to NBA when omitted. |
date | string | optional | A day (YYYY-MM-DD or YYYYMMDD), a month (YYYY-MM), or a year (YYYY). Leave empty to use today, or use Season / Week instead. (mode=scoreboard, schedule, odds, gameDetail) |
startDate | string | optional | First day of a custom window (YYYY-MM-DD or YYYYMMDD). Requires End date. (mode=scoreboard, schedule, odds, gameDetail) |
endDate | string | optional | Last day of a custom window (YYYY-MM-DD or YYYYMMDD). Maximum 366 days. (mode=scoreboard, schedule, odds, gameDetail) |
season | integer | optional | ESPN season year, for example 2024. Use it with Week for a single football week, or alone for the whole season. (mode=scoreboard, schedule, odds, gameDetail) |
seasonType | string | optional | Which part of the season to read when Season is set. (mode=scoreboard, schedule, odds, gameDetail) |
week | integer | optional | Week number for football and other week-based competitions. Requires Season. (mode=scoreboard, schedule, odds, gameDetail) |
team | string | optional | Keep only games or teams matching this ESPN team ID, abbreviation, or name, for example 13, LAL, or Lakers. Prefix with a league code to disambiguate: nba:LAL. (mode=scoreboard, schedule, teams, odds, gameDetail) |
eventIds | array | optional | ESPN event IDs for game detail or odds, for example 401585183. Leave empty to discover games from the date or season. (mode=odds, gameDetail) |
status | string | optional | Keep only games in this state. Postponed and cancelled games are reported as their own values. |
includeDetails | boolean | optional | Add leaders, odds, attendance, officials, article text, team stats, player stats and injuries to each game. (mode=scoreboard, schedule) |
maxItems | integer | optional | Hard cap on records returned across all selected leagues. |
timezone | string | optional | IANA timezone used for today/yesterday/tomorrow and for dateLocal, for example America/New_York. |
Download the published input schema
View complete JSON
{
"description": "Choose a mode, a league, and a date, season, week, team, or event IDs. The actor reads ESPN's public JSON endpoints without credentials or proxy setup.",
"properties": {
"date": {
"description": "A day (YYYY-MM-DD or YYYYMMDD), a month (YYYY-MM), or a year (YYYY). Leave empty to use today, or use Season / Week instead. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "textfield",
"prefill": "20240115",
"title": "Date",
"type": "string"
},
"endDate": {
"description": "Last day of a custom window (YYYY-MM-DD or YYYYMMDD). Maximum 366 days. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "textfield",
"title": "End date",
"type": "string"
},
"eventIds": {
"default": [],
"description": "ESPN event IDs for game detail or odds, for example 401585183. Leave empty to discover games from the date or season. (mode=odds, gameDetail)",
"editor": "stringList",
"prefill": [],
"title": "Event IDs",
"type": "array"
},
"includeDetails": {
"default": false,
"description": "Add leaders, odds, attendance, officials, article text, team stats, player stats and injuries to each game. (mode=scoreboard, schedule)",
"editor": "checkbox",
"prefill": false,
"title": "Include game details",
"type": "boolean"
},
"league": {
"description": "Competition to read. Choose All supported leagues only with a specific sport when you need broad coverage. Defaults to NBA when omitted.",
"editor": "select",
"enum": [
"all",
"nba",
"wnba",
"ncaam",
"ncaaw",
"nfl",
"ncaaf",
"mlb",
"college-baseball",
"nhl",
"college-hockey",
"mls",
"nwsl",
"epl",
"eng.2",
"eng.fa",
"eng.league_cup",
"laliga",
"esp.2",
"esp.copa_del_rey",
"bundesliga",
"ger.2",
"seriea",
"ita.2",
"ita.coppa_italia",
"ligue1",
"fra.2",
"eredivisie",
"primeira-liga",
"super-lig",
"pro-league",
"scottish-premiership",
"greek-super-league",
"russian-premier-league",
"austrian-bundesliga",
"swiss-super-league",
"danish-superliga",
"eliteserien",
"allsvenskan",
"romanian-liga-1",
"saudi-pro-league",
"a-league",
"j1-league",
"chinese-super-league",
"ligamx",
"argentina-primera",
"brasileirao",
"brasileirao-serie-b",
"chile-primera",
"colombia-primera-a",
"ecuador-liga-pro",
"peru-liga-1",
"uruguay-primera",
"paraguay-primera",
"bolivia-primera",
"venezuela-primera",
"ucl",
"uel",
"uecl",
"libertadores",
"concacaf-champions",
"world-cup",
"club-world-cup"
],
"enumTitles": [
"All supported leagues",
"NBA",
"WNBA",
"NCAA Men's Basketball",
"NCAA Women's Basketball",
"NFL",
"NCAA Football",
"MLB",
"NCAA Baseball",
"NHL",
"NCAA Men's Hockey",
"MLS",
"NWSL",
"English Premier League",
"English Championship",
"FA Cup",
"English League Cup",
"La Liga",
"Spanish Segunda Division",
"Copa del Rey",
"Bundesliga",
"2. Bundesliga",
"Serie A",
"Serie B",
"Coppa Italia",
"Ligue 1",
"Ligue 2",
"Eredivisie",
"Primeira Liga",
"Super Lig",
"Belgian Pro League",
"Scottish Premiership",
"Greek Super League",
"Russian Premier League",
"Austrian Bundesliga",
"Swiss Super League",
"Danish Superliga",
"Eliteserien",
"Allsvenskan",
"Romanian Liga I",
"Saudi Pro League",
"A-League",
"J1 League",
"Chinese Super League",
"Liga MX",
"Argentine Primera Division",
"Brasileirao Serie A",
"Brasileirao Serie B",
"Chilean Primera Division",
"Colombian Primera A",
"Ecuadorian Liga Pro",
"Peruvian Liga 1",
"Uruguayan Primera Division",
"Paraguayan Primera Division",
"Bolivian Primera Division",
"Venezuelan Primera Division",
"UEFA Champions League",
"UEFA Europa League",
"UEFA Conference League",
"Copa Libertadores",
"CONCACAF Champions Cup",
"FIFA World Cup",
"FIFA Club World Cup"
],
"prefill": "nba",
"title": "League",
"type": "string"
},
"maxItems": {
"default": 100,
"description": "Hard cap on records returned across all selected leagues.",
"editor": "number",
"maximum": 10000,
"minimum": 1,
"prefill": 3,
"title": "Maximum records",
"type": "integer"
},
"mode": {
"default": "scoreboard",
"description": "What to return: games for a scoreboard, a schedule, the league team directory, one record per sportsbook odds line, or a full game detail record.",
"editor": "select",
"enum": [
"scoreboard",
"schedule",
"teams",
"odds",
"gameDetail"
],
"enumTitles": [
"Scoreboard games",
"Schedule games",
"League teams",
"Sportsbook odds",
"Full game detail"
],
"prefill": "scoreboard",
"title": "Mode",
"type": "string"
},
"season": {
"description": "ESPN season year, for example 2024. Use it with Week for a single football week, or alone for the whole season. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "number",
"maximum": 2100,
"minimum": 2000,
"title": "Season",
"type": "integer"
},
"seasonType": {
"default": "2",
"description": "Which part of the season to read when Season is set. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "select",
"enum": [
"1",
"2",
"3",
"4",
"5"
],
"enumTitles": [
"Preseason",
"Regular season",
"Postseason",
"Offseason",
"Play-in"
],
"prefill": "2",
"title": "Season type",
"type": "string"
},
"sport": {
"default": "any",
"description": "Optional sport filter. Use it with League = All supported leagues to cover every supported competition in one sport.",
"editor": "select",
"enum": [
"any",
"basketball",
"football",
"baseball",
"hockey",
"soccer"
],
"enumTitles": [
"Any sport",
"Basketball",
"Football",
"Baseball",
"Hockey",
"Soccer"
],
"prefill": "any",
"title": "Sport",
"type": "string"
},
"startDate": {
"description": "First day of a custom window (YYYY-MM-DD or YYYYMMDD). Requires End date. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "textfield",
"title": "Start date",
"type": "string"
},
"status": {
"default": "any",
"description": "Keep only games in this state. Postponed and cancelled games are reported as their own values.",
"editor": "select",
"enum": [
"any",
"scheduled",
"in_progress",
"final",
"postponed",
"cancelled"
],
"enumTitles": [
"Any status",
"Scheduled",
"In progress",
"Final",
"Postponed",
"Cancelled"
],
"prefill": "any",
"title": "Game status",
"type": "string"
},
"team": {
"description": "Keep only games or teams matching this ESPN team ID, abbreviation, or name, for example 13, LAL, or Lakers. Prefix with a league code to disambiguate: nba:LAL. (mode=scoreboard, schedule, teams, odds, gameDetail)",
"editor": "textfield",
"title": "Team",
"type": "string"
},
"timezone": {
"default": "UTC",
"description": "IANA timezone used for today/yesterday/tomorrow and for dateLocal, for example America/New_York.",
"editor": "textfield",
"prefill": "UTC",
"title": "Timezone",
"type": "string"
},
"week": {
"description": "Week number for football and other week-based competitions. Requires Season. (mode=scoreboard, schedule, odds, gameDetail)",
"editor": "number",
"maximum": 30,
"minimum": 1,
"title": "Week",
"type": "integer"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "ESPN Scores & Schedules Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
results | string | optional | All game, team, odds, and game-detail records in the default dataset. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Game, team, odds, and full game-detail records from ESPN public data, including scores, schedules, venue, broadcasts, team records, sportsbook lines, leaders, officials, stats, injuries, and recaps.",
"properties": {
"results": {
"description": "All game, team, odds, and game-detail records in the default dataset.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Records",
"type": "string"
}
},
"title": "ESPN Game Center Output",
"type": "object"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"description": "One record per game, team, odds line, or full game detail.",
"fields": {},
"title": "ESPN Game Center Output",
"views": {
"overview": {
"display": {
"component": "table",
"properties": {
"attendance": {
"format": "number",
"label": "Attendance"
},
"awayTeam": {
"format": "object",
"label": "Away"
},
"broadcasts": {
"format": "array",
"label": "Broadcasts"
},
"date": {
"format": "text",
"label": "Date (UTC)"
},
"dateLocal": {
"format": "text",
"label": "Date (Local)"
},
"gameId": {
"format": "text",
"label": "Game ID"
},
"headline": {
"format": "text",
"label": "Headline"
},
"homeTeam": {
"format": "object",
"label": "Home"
},
"league": {
"format": "text",
"label": "League"
},
"odds": {
"format": "object",
"label": "Odds"
},
"recordType": {
"format": "text",
"label": "Type"
},
"scrapedAt": {
"format": "text",
"label": "Scraped At"
},
"seasonYear": {
"format": "number",
"label": "Season"
},
"shortName": {
"format": "text",
"label": "Matchup"
},
"sourceUrl": {
"format": "text",
"label": "Source"
},
"sport": {
"format": "text",
"label": "Sport"
},
"status": {
"format": "text",
"label": "Status"
},
"statusDetail": {
"format": "text",
"label": "Detail"
},
"venue": {
"format": "object",
"label": "Venue"
},
"week": {
"format": "number",
"label": "Week"
}
}
},
"title": "Game Center",
"transformation": {
"fields": [
"recordType",
"gameId",
"league",
"sport",
"status",
"statusDetail",
"date",
"dateLocal",
"seasonYear",
"week",
"shortName",
"homeTeam",
"awayTeam",
"venue",
"broadcasts",
"attendance",
"odds",
"headline",
"sourceUrl",
"scrapedAt"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
ESPN Game Center Scraper: Scores, Schedules, Teams & Odds
Read ESPN game centers without an account, API key, or proxy setup. Pick a competition and a day, month, season, or week to get live scoreboards, final results, upcoming fixtures, team directories, sportsbook lines, and full game details in one dataset.
The actor covers more than 60 team competitions across basketball, football, baseball, hockey, and soccer, including the NBA, WNBA, NFL, MLB, NHL, MLS, NWSL, the Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Liga MX, the Champions League, and many more. Every field ESPN publishes for the selected record type is mapped, and fields ESPN does not provide for a particular game are left out instead of being sent empty.
What this actor does
- Five modes:
scoreboard,schedule,teams,odds, andgameDetail - Date and season control: a single day, a month, a year, a custom range up to 366 days, a season, or a football-style season week
- Team filtering: match a team by ESPN ID, abbreviation, or name, with an optional league prefix
- Full odds records: one row per sportsbook line with spread, total, moneylines, and open, close, and current values when ESPN publishes them
- Deep game detail: leaders, officials, venue, broadcasts, attendance, article text, team stats, player stats, and injuries
- Empty fields are omitted: empty values are omitted at every depth, and every record carries
recordType,sourceUrlwhere available, andscrapedAt
Output per game (mode = scoreboard or schedule)
gameId,competitionId- ESPN event and competition IDsleague,sport- league code and sportstatus-scheduled,in_progress,final,postponed, orcancelledstatusState,statusDescription,statusShortDetail,completed,period,clock,displayClock- live state detailsdate- kickoff in ISO 8601 UTCdateLocal- kickoff in the requested timezonename,shortName- full and abbreviated matchupseasonYear,seasonType,week- season context when ESPN provides ithomeTeam,awayTeam- team objects withid,name,abbreviation,logo,score,winner,record,lineScores, colors, and location when publishedvenue-name,city,state,country,indoor,grass, andimageUrlbroadcasts- TV and streaming network namesattendance,neutralSite,conferenceCompetition,competitionTypeheadlines,gameNotes- game-specific notesodds- the line shown on the scoreboard, when presentsourceUrl,recordType,scrapedAt
Output per team (mode = teams)
teamId,league,sportname,abbreviation,location,nickname,shortDisplayName,sluglogo,color,alternateColor,isActive,isAllStarvenue-name,city,state,country,indoor,grass, andimageUrlgroupId,groupName,conferenceId,standingSummaryrecordStats- ESPN overall-record statistics as a name/value objectsourceUrl,recordType,scrapedAt
Output per odds line (mode = odds)
gameId,league,sport,gameName,gameDatehomeTeamId,homeTeamName,homeTeamAbbreviationawayTeamId,awayTeamName,awayTeamAbbreviationprovider,providerId- sportsbook name and ESPN provider IDdetails,spread,overUnder,overOdds,underOddshomeMoneyline,awayMoneyline,drawMoneyline- when the sport supports themhomeSpreadOdds,awaySpreadOddshomeTeamOdds,awayTeamOdds,drawOdds- full side detail with favorite/underdog flagsopen,close,current- period values when ESPN keeps themsourceUrl,recordType,scrapedAt
Output per game detail (mode = gameDetail)
A game-detail record includes every game field above, plus:
leaders- top performers grouped ashomeandaway, each withname,position,stat, andvalueofficials- referee names and positionsarticleDescription,articleStory,articlePublished,articleUrl,articleImageteamStats- team totals with stat name, label, abbreviation, and display valueplayerStats- player stat categories, labels, and per-player valuesinjuries- team injury entries with athlete, status, date, and detailheadline,gameNotes,attendance,venue,broadcasts,oddsrecordType: "gameDetail",sourceUrl,scrapedAt
If ESPN fails to answer for a league, the actor writes a diagnostic record with type, reason, message, inputLeague, inputDate, error, recordType, and scrapedAt. Game, team, odds, and detail records are never replaced by placeholders.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | scoreboard |
scoreboard, schedule, teams, odds, or gameDetail |
sport |
string | any |
Sport filter; use with League = All supported leagues |
league |
string | - | Competition code or All supported leagues; the daily prefill uses nba |
date |
string | - | Day, month, or year; empty means today; the daily prefill uses 20240115 |
startDate |
string | - | First day of a custom window; requires endDate |
endDate |
string | - | Last day of a custom window; up to 366 days |
season |
integer | - | ESPN season year, e.g. 2024 |
seasonType |
string | 2 |
1 preseason, 2 regular, 3 postseason, 4 offseason, 5 play-in |
week |
integer | - | Week number; requires season |
team |
string | - | ESPN team ID, abbreviation, or name; prefix with a league code if needed |
eventIds |
array | [] |
Event IDs for odds or gameDetail; requires one specific league, not All supported leagues |
status |
string | any |
any, scheduled, in_progress, final, postponed, or cancelled |
includeDetails |
boolean | false |
Add leaders, stats, officials, article text, and injuries to each game |
maxItems |
integer | 100 |
Hard cap from 1 to 10,000 records |
timezone |
string | UTC |
IANA timezone for relative dates and dateLocal |
Example: today's NBA and NHL scoreboard
{
"mode": "scoreboard",
"league": "nba",
"date": "2026-11-02",
"maxItems": 50
}
Example: NFL Week 1
{
"mode": "schedule",
"league": "nfl",
"season": 2023,
"seasonType": "2",
"week": 1,
"maxItems": 50
}
Example: every Arsenal fixture in a season
{
"mode": "schedule",
"league": "epl",
"season": 2024,
"team": "Arsenal",
"maxItems": 100
}
For current and future soccer seasons, the actor falls back to scoreboard windows when ESPN's team-schedule feed returns only completed matches, so upcoming fixtures are included.
Example: sportsbook lines for a day
{
"mode": "odds",
"league": "nba",
"date": "2024-01-15",
"maxItems": 100
}
Example: full detail for two games
{
"mode": "gameDetail",
"league": "nba",
"eventIds": ["401585183", "401585184"],
"maxItems": 2
}
Use cases
- Live scoreboards - refresh a dashboard with every game in one or more leagues
- Fixture calendars - export a team's or league's upcoming schedule for a season or date range
- Results archives - collect final scores, venues, and broadcasts across a historical window
- Betting analysis - capture spread, total, moneyline, and line movement snapshots
- Fantasy and media tools - pull leaders, team stats, player stats, and recaps for recaps and previews
- Research and data pipelines - join stable ESPN IDs to internal models, spreadsheets, or warehouses
FAQ
Do I need an ESPN account, API key, cookie, or proxy?
No. The actor reads ESPN's public game data directly. You only choose the mode and the competition or date.
Which competitions are supported?
More than 60 team competitions across basketball, football, baseball, hockey, and soccer. The League dropdown lists every supported code, from the NBA and NFL to the Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Liga MX, the Champions League, and many national leagues.
Why does a date return no games?
Not every league plays every day. Use a season or a date range for fixtures, or pick a day when the league is active. The terminal run status message explains the mode, league, and record count, including zero-record runs.
What is the largest date range?
A custom range can cover up to 366 days. Long windows are read month by month, and a month that hits ESPN's per-request event cap is re-read day by day so games are not skipped.
Why are some odds fields missing?
ESPN publishes one line per sportsbook provider per game and often removes lines after the game ends, so provider coverage varies by event. Soccer lines can use moneyline and draw prices instead of a spread and total, and some providers publish fractional moneyline strings such as 20/1 or 1/28; the actor returns the value ESPN publishes. The actor includes only the values ESPN actually returns.
Why do some games have no stats or leaders?
ESPN does not publish every section for every sport, game state, or competition. Missing sections are omitted from the record rather than filled with placeholders.
Can I get games for a team by name?
Yes. Set team to the ESPN ID, abbreviation, or a name such as Lakers or Arsenal. If the same abbreviation exists in multiple leagues, prefix it with the league code, for example nba:LAL.
How fresh is the data?
Every run reads ESPN's live game data at run time. Schedule the actor every few minutes during game windows for live scores, or daily for schedules and results.
Does this actor cover golf, tennis, MMA, or racing?
No. It focuses on team-game records. Individual sports use different event and leaderboard shapes and are not part of this actor.
Does it include news, standings, or rosters?
No. This actor focuses on scoreboards, schedules, teams, odds, and game detail. News, standings, and roster data are separate jobs.
Does it include play-by-play or win-probability timelines?
No. Game detail covers box-score data: leaders, team and player stats, officials, injuries, venue, broadcasts, attendance, and recaps. Play-by-play feeds are much larger and are outside this actor's record contract.
Why can a game in a date window show the next UTC day?
ESPN assigns games to its own local event date. The date field is UTC, so a late local game can fall on the next UTC day. This affects single days, months, years, and custom ranges. Use dateLocal for the requested timezone, or widen the window by one day when joining on UTC dates.
What happens if I use event IDs with All supported leagues?
Event IDs need one specific league because ESPN's summary path includes the sport and league. With All supported leagues the actor returns a diagnostic record asking you to choose a league; it does not guess across 60+ competitions.
Is seasonType the same across sports?
For US sports it is a canonical label such as Regular season, Preseason, Postseason, or Play-in. For soccer ESPN often publishes a season slug such as 2024-25 English Premier League, so treat seasonType as source text rather than a stable cross-sport enum.
What are the hard limits?
ESPN removes some odds and stat sections after a game, so those fields are omitted when the source no longer has them. One scoreboard response is capped at 1,000 events; month and year requests are split automatically, but a single day above 1,000 events is not subdivided. Date windows follow ESPN's local event date, so the UTC date can fall on the next day. Individual sports (golf, tennis, MMA, racing), news, standings, and rosters are outside this actor.
Is this affiliated with ESPN?
No. This is an independent, third-party actor that reads ESPN's public game data. It is not affiliated with or endorsed by ESPN.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build nXre0KcQ0wFMsE4p4. Documentation is regenerated from the default published build; private drafts are not included.