ESPN Scores, Standings, Teams & News by League
Pull live and recent scores, league standings, team rosters, news headlines, and full game boxscores for NFL, NBA, MLB, NHL, MLS, Premier League, La Liga, F1, UFC, PGA Golf, ATP Tennis, and more.
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 fetch from ESPN. |
league | string | optional | League slug. The sport is derived automatically. |
leagues | array | optional | Optional multi-league override for modes that iterate leagues (scoreboard, odds, standings, teams, teamDetail, news, players, schedule, rankings), e.g. ["nba","nfl"]. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | What to fetch from ESPN. |
league | string | optional | League slug. The sport is derived automatically. |
leagues | array | optional | Optional multi-league override for modes that iterate leagues (scoreboard, odds, standings, teams, teamDetail, news, players, schedule, rankings), e.g. ["nba","nfl"]. |
datePreset | string | optional | Date window for scoreboard and odds. ESPN accepts one date per request, so ranges are fetched one day at a time. |
startDate | string | optional | First date for datePreset=custom, in YYYYMMDD or YYYY-MM-DD. |
endDate | string | optional | Last date for datePreset=custom (inclusive), in YYYYMMDD or YYYY-MM-DD. Maximum 366 days. |
season | integer | optional | ESPN season year for standings, schedule, players and rankings (e.g. 2025). Leave blank for the current season. |
seasonType | string | optional | Filter a team schedule by season phase (ignored for soccer schedules, which ESPN reports as one league season). |
teamIds | array | optional | Teams for teams/teamDetail/schedule/players. Accepts 2, BOS or nba/BOS. Get IDs from mode=teams. |
eventIds | array | optional | Games for gameDetail/odds. Accepts 401909904 or nba/401909904. Get IDs from mode=scoreboard. |
athleteQueries | array | optional | Player names to search, e.g. ["LeBron James", "Jannik Sinner"]. |
athleteIds | array | optional | ESPN athlete IDs for direct profiles, e.g. ["1966"]. |
rankingType | string | optional | Which poll to return. 'all' includes every poll ESPN publishes for the league. |
statusFilter | string | optional | Filter scoreboard, odds or schedule rows by game state. |
liveOnly | boolean | optional | Keep only in-progress games (scoreboard and odds). |
newsScope | string | optional | League news is capped at 50 articles by ESPN. Global pages the ESPN now feed and filters to the selected league. |
includeTeamDetails | boolean | optional | Fetch each team's record, venue and next event. Adds one request per team. |
includeGameDetails | boolean | optional | Attach the full game summary to every team-sport game. Adds one request per game. |
includePlayerStats | boolean | optional | Attach latest season stats to player rows and the player box score to gameDetail. Adds requests per player. |
includeGameLog | boolean | optional | Attach the current-season game log to each player. Adds one request per athlete. |
includePlayByPlay | boolean | optional | Include the full play-by-play list in gameDetail (scoring plays are always included). |
maxItems | integer | optional | Hard cap on data records. Notice rows explain unsupported or empty requests. |
Download the published input schema
View complete JSON
{
"description": "Pull ESPN scores, game details, standings, teams, players, news, schedules, rankings and odds for 36 leagues — no key, cookie or proxy.",
"properties": {
"athleteIds": {
"description": "ESPN athlete IDs for direct profiles, e.g. [\"1966\"].",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Athlete IDs (mode=players)",
"type": "array"
},
"athleteQueries": {
"description": "Player names to search, e.g. [\"LeBron James\", \"Jannik Sinner\"].",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Athlete searches (mode=players)",
"type": "array"
},
"datePreset": {
"default": "today",
"description": "Date window for scoreboard and odds. ESPN accepts one date per request, so ranges are fetched one day at a time.",
"editor": "select",
"enum": [
"today",
"tomorrow",
"yesterday",
"last7Days",
"next7Days",
"custom"
],
"enumTitles": [
"Today",
"Tomorrow",
"Yesterday",
"Last 7 days",
"Next 7 days",
"Custom range"
],
"prefill": "today",
"title": "Date preset",
"type": "string"
},
"endDate": {
"description": "Last date for datePreset=custom (inclusive), in YYYYMMDD or YYYY-MM-DD. Maximum 366 days.",
"editor": "textfield",
"title": "End date (custom)",
"type": "string"
},
"eventIds": {
"description": "Games for gameDetail/odds. Accepts 401909904 or nba/401909904. Get IDs from mode=scoreboard.",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Event IDs",
"type": "array"
},
"includeGameDetails": {
"default": false,
"description": "Attach the full game summary to every team-sport game. Adds one request per game.",
"prefill": false,
"title": "Include game details (mode=scoreboard)",
"type": "boolean"
},
"includeGameLog": {
"default": false,
"description": "Attach the current-season game log to each player. Adds one request per athlete.",
"prefill": false,
"title": "Include game log (mode=players)",
"type": "boolean"
},
"includePlayByPlay": {
"default": false,
"description": "Include the full play-by-play list in gameDetail (scoring plays are always included).",
"prefill": false,
"title": "Include every play",
"type": "boolean"
},
"includePlayerStats": {
"default": false,
"description": "Attach latest season stats to player rows and the player box score to gameDetail. Adds requests per player.",
"prefill": false,
"title": "Include player stats",
"type": "boolean"
},
"includeTeamDetails": {
"default": true,
"description": "Fetch each team's record, venue and next event. Adds one request per team.",
"prefill": false,
"title": "Include team details (mode=teams)",
"type": "boolean"
},
"league": {
"default": "nba",
"description": "League slug. The sport is derived automatically.",
"editor": "select",
"enum": [
"nfl",
"college-football",
"ufl",
"nba",
"wnba",
"mens-college-basketball",
"womens-college-basketball",
"mlb",
"college-baseball",
"nhl",
"usa.1",
"eng.1",
"esp.1",
"ger.1",
"ita.1",
"fra.1",
"ned.1",
"por.1",
"mex.1",
"bra.1",
"arg.1",
"uefa.champions",
"uefa.europa",
"uefa.europa.conf",
"eng.fa",
"eng.league_cup",
"fifa.world",
"fifa.cwc",
"concacaf.champions",
"atp",
"wta",
"pga",
"lpga",
"ufc",
"pfl",
"f1"
],
"enumTitles": [
"NFL",
"College Football",
"UFL",
"NBA",
"WNBA",
"Men's College Basketball",
"Women's College Basketball",
"MLB",
"College Baseball",
"NHL",
"MLS",
"English Premier League",
"Spanish La Liga",
"German Bundesliga",
"Italian Serie A",
"French Ligue 1",
"Dutch Eredivisie",
"Portuguese Primeira Liga",
"Mexican Liga MX",
"Brazilian Serie A",
"Argentine Liga Profesional",
"UEFA Champions League",
"UEFA Europa League",
"UEFA Conference League",
"English FA Cup",
"English Carabao Cup",
"FIFA World Cup",
"FIFA Club World Cup",
"Concacaf Champions Cup",
"ATP Tennis",
"WTA Tennis",
"PGA Tour Golf",
"LPGA Golf",
"UFC",
"PFL",
"Formula 1"
],
"prefill": "nba",
"title": "League",
"type": "string"
},
"leagues": {
"description": "Optional multi-league override for modes that iterate leagues (scoreboard, odds, standings, teams, teamDetail, news, players, schedule, rankings), e.g. [\"nba\",\"nfl\"].",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Extra leagues",
"type": "array"
},
"liveOnly": {
"default": false,
"description": "Keep only in-progress games (scoreboard and odds).",
"prefill": false,
"title": "Live only",
"type": "boolean"
},
"maxItems": {
"default": 50,
"description": "Hard cap on data records. Notice rows explain unsupported or empty requests.",
"maximum": 5000,
"minimum": 1,
"prefill": 1,
"title": "Max items",
"type": "integer"
},
"mode": {
"default": "news",
"description": "What to fetch from ESPN.",
"editor": "select",
"enum": [
"scoreboard",
"gameDetail",
"standings",
"teams",
"teamDetail",
"news",
"players",
"schedule",
"rankings",
"odds"
],
"enumTitles": [
"Scoreboard — games, matches, leaderboards and fight cards",
"Game Detail — box score, player lines, odds and win probability",
"Standings — league tables plus F1 drivers and constructors",
"Teams — every team in a league",
"Team Detail — record, venue and next event for selected teams",
"News — league headlines or the global ESPN feed",
"Players — rosters, athlete search, profiles, stats and game logs",
"Schedule — a team's season schedule with results",
"Rankings — ATP, WTA, UFC and college polls",
"Odds — primary sportsbook line per game"
],
"prefill": "news",
"title": "Mode",
"type": "string"
},
"newsScope": {
"default": "league",
"description": "League news is capped at 50 articles by ESPN. Global pages the ESPN now feed and filters to the selected league.",
"editor": "select",
"enum": [
"league",
"global"
],
"enumTitles": [
"Selected league",
"Global ESPN feed (paginated)"
],
"prefill": "league",
"title": "News scope (mode=news)",
"type": "string"
},
"rankingType": {
"default": "all",
"description": "Which poll to return. 'all' includes every poll ESPN publishes for the league.",
"editor": "select",
"enum": [
"all",
"ap",
"coaches",
"cfp",
"pound-for-pound"
],
"enumTitles": [
"All rankings",
"AP Top 25",
"Coaches Poll",
"College Football Playoff",
"Pound-for-pound"
],
"prefill": "all",
"title": "Ranking (mode=rankings)",
"type": "string"
},
"season": {
"description": "ESPN season year for standings, schedule, players and rankings (e.g. 2025). Leave blank for the current season.",
"maximum": 2100,
"minimum": 1900,
"title": "Season year",
"type": "integer"
},
"seasonType": {
"description": "Filter a team schedule by season phase (ignored for soccer schedules, which ESPN reports as one league season).",
"editor": "select",
"enum": [
"preseason",
"regular",
"postseason"
],
"enumTitles": [
"Preseason",
"Regular season",
"Postseason"
],
"title": "Season type (mode=schedule)",
"type": "string"
},
"startDate": {
"description": "First date for datePreset=custom, in YYYYMMDD or YYYY-MM-DD.",
"editor": "textfield",
"title": "Start date (custom)",
"type": "string"
},
"statusFilter": {
"default": "all",
"description": "Filter scoreboard, odds or schedule rows by game state.",
"editor": "select",
"enum": [
"all",
"pre",
"in",
"post"
],
"enumTitles": [
"All games",
"Upcoming",
"Live",
"Completed"
],
"prefill": "all",
"title": "Game status",
"type": "string"
},
"teamIds": {
"description": "Teams for teams/teamDetail/schedule/players. Accepts 2, BOS or nba/BOS. Get IDs from mode=teams.",
"editor": "stringList",
"items": {
"type": "string"
},
"title": "Team IDs or abbreviations",
"type": "array"
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "ESPN Scraper 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 |
|---|---|---|---|
espnData | string | optional | Dataset containing the requested ESPN records plus notice rows for empty or unsupported combinations. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "ESPN records for games, standings, teams, players, news, schedules, rankings and odds, with a recordType on every row.",
"properties": {
"espnData": {
"description": "Dataset containing the requested ESPN records plus notice rows for empty or unsupported combinations.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "ESPN sports data",
"type": "string"
}
},
"title": "ESPN Scores, Teams, Players, News & Odds Output"
}
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,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {}
},
"title": "ESPN Results",
"transformation": {
"fields": [
"recordType",
"mode",
"sport",
"league",
"name",
"status",
"homeTeam",
"awayTeam",
"homeScore",
"awayScore",
"date"
]
}
}
}
}
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 Scores, Teams, Players, News & Odds
Scrape ESPN for live and historical scores, full game boxscores, league tables, team directories, rosters, player stats, schedules, college and individual-sport rankings, news, and the primary sportsbook line. Ten modes cover 36 leagues across football, basketball, baseball, hockey, soccer, tennis, golf, MMA and Formula 1 — all from public JSON endpoints with no key, login, cookie or proxy setup.
Every row carries a recordType, so mixed datasets stay easy to filter: game, event, gameDetail, standing, team, teamDetail, player, article, scheduleGame, ranking, oddsLine and notice.
What this actor does
- Ten modes:
scoreboard,gameDetail,standings,teams,teamDetail,news,players,schedule,rankings,odds - 36 leagues: US major leagues, college sports, 19 soccer competitions, ATP/WTA, PGA/LPGA, UFC/PFL and F1
- Dates and ranges: today, tomorrow, yesterday, last/next seven days, or a custom range of up to 366 days, fetched one date per request
- Multi-league runs: combine leagues in one scoreboard, odds, standings or news run
- Deep game detail: team stats, optional player boxscore, leaders, officials, venue, injuries, series, scoring plays, win probability and news
- Player coverage: team rosters (flat and grouped), athlete search, profiles, latest-season stats, game logs and rankings
- Primary odds: provider, spread, total and moneyline from the first line ESPN publishes
- Clean output: empty fields are omitted at every depth; no nulls or placeholder values
Supported leagues
| Family | League slugs |
|---|---|
| Football | nfl, college-football, ufl |
| Basketball | nba, wnba, mens-college-basketball, womens-college-basketball |
| Baseball | mlb, college-baseball |
| Hockey | nhl |
| Soccer | usa.1, eng.1, esp.1, ger.1, ita.1, fra.1, ned.1, por.1, mex.1, bra.1, arg.1, uefa.champions, uefa.europa, uefa.europa.conf, eng.fa, eng.league_cup, fifa.world, fifa.cwc, concacaf.champions |
| Tennis | atp, wta |
| Golf | pga, lpga |
| MMA | ufc, pfl |
| Racing | f1 |
Mode coverage follows the data ESPN publishes: team leagues support every team mode; F1 supports scoreboard, teams, team detail and driver/constructor standings; tennis, golf and MMA return event records with matches, leaderboards or fight cards instead of home/away fields.
Output
Scoreboard and odds
Team games include eventId, name, shortName, url, date, dateLocal, seasonYear, seasonType, week, status, statusState, statusCompleted, venue, venueCity, venueState, venueCountry, venueIndoor, broadcast, broadcasts, attendance, headlines, notes, homeTeam, homeTeamId, homeAbbr, homeLogo, homeScore, homeWinner, homeRecord, homeForm, awayTeam, awayTeamId, awayAbbr, awayLogo, awayScore, awayWinner, awayRecord, awayForm, competitors[] and odds.
odds contains provider, details, spread, overUnder, homeMoneyLine, awayMoneyLine, homeSpreadOdds, awaySpreadOdds, overOdds, underOdds, favoriteTeamId and underdogTeamId when ESPN publishes them. The odds mode returns the same line as its own oddsLine row.
Tennis rows add groupings[] and a flat matches[] list with matchId, round, court, notes, status and competitors[]. Golf rows add a ranked competitors[] leaderboard with score and round-by-round rounds[], plus leader, leaderScore and competitorCount. UFC/PFL rows add fights[] with weight class, winner and fighter records. F1 rows add raceName, raceDate, circuitName and a drivers[] classification.
Game detail
gameDetail includes the scoreboard identity fields plus statusState, attendance, officials[], teamStats[], leaders[], odds, winProbability[], predictor, recentForm[], scoringPlays[], injuries[], series, news[], videos[], recap and links. includePlayerStats adds playerStats[] with per-athlete stat lines; includePlayByPlay adds the complete plays[] list.
Standings
Standing rows keep team, teamId, abbreviation, conference, wins, losses, winPct, rank, division, gamesBehind and pointDifferential, and add groupName, groupType, seasonYear, overall, gamesPlayed, ties, points, pointsFor, pointsAgainst, streak, homeRecord, awayRecord, divisionRecord, conferenceRecord, playoffSeed, rankChange, logoUrl, url and a complete stats map.
F1 driver rows use athleteId, athleteName and championshipPoints; constructor rows use team, teamId and championshipPoints.
Teams
Team rows include teamId, uid, name, shortDisplayName, abbreviation, location, color, alternateColor, slug, isActive, isAllStar, logoUrl, darkLogoUrl, url, rosterUrl, competitors-style links, and — when details are fetched — recordSummary, overallRecord, homeRecord, awayRecord, divisionRecord, conferenceRecord, wins, losses, winPct, gamesPlayed, pointsFor, pointsAgainst, standingSummary, conference, division, venueName, venueCity, venueState, venueIndoor, venueLocation, nextEvent and recordItems[].
Players
Player rows include athleteId, playerId, name, firstName, lastName, shortName, jersey, position, positionAbbr, age, dateOfBirth, height, displayHeight, weight, displayWeight, birthPlace, college, collegeId, headshot, status, experienceYears, displayExperience, debutYear, draft, teamId, teamName, teamAbbr, salary, contractYearsRemaining, contractSeason, statsSummary and url. Search rows also carry source: "search" and description; ESPN search is global, so each result keeps the athlete's own sport and league even when you search from a different league. stats[] and gameLog[] are attached when the matching toggles are enabled; season stats are published for NBA, NFL, MLB and NHL, while game logs also work for soccer.
News
Articles include articleId, headline, description, publishDate, lastModified, url, imageUrl, imageCaption, imageCredit, author, category, type, section, source, teams[], athletes[], leagues[], gameId, videoUrl, premium and links. Set newsScope: "global" to page the wider ESPN feed; the actor filters those pages down to the selected league.
Schedule
scheduleGame rows combine scoreboard-style fields with teamId, team, teamAbbr, teamScore, teamRecord, homeAway, opponent, opponentId, opponentAbbr, opponentLogo, opponentScore, opponentRecord, forTeamResult (W, L or D), seasonType, seasonYear and ticketsAvailable.
Rankings
Ranking rows include rankingId, rankingName, rankingShortName, rankingSourceType, rank, previousRank, trend, points, firstPlaceVotes, recordSummary, defenses, athleteId, athleteName, team, teamId, abbreviation, logoUrl, url, date, lastUpdated, occurrence and seasonYear.
Notices
When a request is valid but ESPN has nothing to return, or a mode does not apply to a league, the actor pushes a notice row with code, message, mode, league, sport and hint. The run still succeeds.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
select | news |
One of the ten modes |
league |
select | nba |
League slug; the sport is derived automatically |
leagues |
array | – | Extra leagues for multi-league runs |
datePreset |
select | today |
today, tomorrow, yesterday, last7Days, next7Days, custom |
startDate |
string | – | First date for custom, as YYYYMMDD or YYYY-MM-DD |
endDate |
string | – | Last date for custom, inclusive; maximum 366 days |
season |
integer | – | Season year for standings, schedule, players and rankings; blank uses the current season |
seasonType |
select | – | preseason, regular, postseason (schedule; ignored for soccer) |
teamIds |
array | – | Team IDs, abbreviations or league/id references |
eventIds |
array | – | Event IDs or league/eventId references |
athleteQueries |
array | – | Player names to search |
athleteIds |
array | – | ESPN athlete IDs for direct profiles |
rankingType |
select | all |
all, ap, coaches, cfp, pound-for-pound |
statusFilter |
select | all |
all, pre, in, post |
liveOnly |
boolean | false |
Keep only in-progress games |
newsScope |
select | league |
league or the paginated global feed |
includeTeamDetails |
boolean | true |
Fetch team record, venue and next event |
includeGameDetails |
boolean | false |
Attach full summaries to scoreboard games |
includePlayerStats |
boolean | false |
Add player stats / player boxscore |
includeGameLog |
boolean | false |
Add a player's current-season game log |
includePlayByPlay |
boolean | false |
Add every play to gameDetail |
maxItems |
integer | 50 |
Hard cap (1–5000); notices are metadata rows |
Example: scoreboard for two leagues
{
"mode": "scoreboard",
"leagues": ["nba", "nfl"],
"datePreset": "yesterday",
"statusFilter": "post",
"maxItems": 40
}
Example: full NBA game detail
{
"mode": "gameDetail",
"league": "nba",
"eventIds": ["401909904"],
"includePlayerStats": true,
"includePlayByPlay": false,
"maxItems": 1
}
Example: Premier League schedule and standings
{
"mode": "schedule",
"league": "eng.1",
"teamIds": ["eng.1/364"],
"seasonType": "regular",
"maxItems": 38
}
{
"mode": "standings",
"league": "eng.1",
"maxItems": 20
}
Example: player search with stats
{
"mode": "players",
"league": "nba",
"athleteQueries": ["LeBron James", "Jannik Sinner"],
"includePlayerStats": true,
"maxItems": 10
}
Example: F1 race and driver standings
{
"mode": "scoreboard",
"league": "f1",
"datePreset": "yesterday",
"maxItems": 5
}
{
"mode": "standings",
"league": "f1",
"maxItems": 30
}
Use cases
- Fantasy and betting dashboards — pull slates, primary lines and player boxscores into one normalized feed
- Media and newsroom bots — monitor league headlines or the global ESPN feed and filter to the teams you cover
- Team and league trackers — follow schedules, results, standings and roster changes across multiple leagues
- Sports research — build historical datasets from date ranges and full game summaries
- Player scouting — search athletes, compare latest-season stats and inspect game logs
- Broadcast graphics — feed scoreboards, rankings and leaderboards into live displays
FAQ
Do I need an API key, account or proxy? No. The actor reads ESPN's public JSON feeds anonymously. There is no credential or proxy input.
Why did I get a notice row instead of games?
A notice explains the empty result: no games on that date, no odds published yet, an off-season schedule, or a mode ESPN does not support for that league. The notice code and hint tell you what to change.
How many news articles can I get per league?
ESPN's league news endpoint returns at most 50 articles. Use newsScope: "global" to page the wider feed; the actor filters those pages client-side to the selected league.
Why are some odds fields missing? ESPN publishes a primary line for many upcoming games but not every game, and moneyline/spread components vary by sport and provider. Empty odds fields are omitted rather than guessed. The actor ships the first published line only; it does not promise open-line history or every sportsbook.
Can I scrape tennis, golf, MMA or F1 game summaries?
Their scoreboards are fully supported with matches, leaderboards, fight cards and driver classifications. ESPN does not expose the same team-style summary for these sports, so gameDetail returns a notice for them.
Why is a team venue missing? ESPN only includes venue details for some teams (for example, many NBA/NFL clubs). Soccer and F1 team endpoints commonly omit a home venue. The field is omitted when the source has no value.
Can I fetch historical seasons and dates?
Yes. Scoreboard and odds accept a custom date range of up to 366 days. Standings, schedules, players and rankings accept a season year. Coverage depends on what ESPN keeps for each league.
Does the actor return duplicate rows? No. Rows are de-duplicated by their natural key (league + event, article, team, athlete or ranking), even when several leagues or player sources overlap.
Is this affiliated with ESPN? No. This is an independent actor that reads publicly accessible ESPN data and is not endorsed by or affiliated with ESPN, Inc.
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 LQ5zzKBf9U6Ues2Nj. Documentation is regenerated from the default published build; private drafts are not included.