Vexaloom Labs

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.

FieldTypeRequiredDescription
modestringrequiredWhat to fetch from ESPN.
leaguestringoptionalLeague slug. The sport is derived automatically.
leaguesarrayoptionalOptional 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
FieldTypeRequiredDescription
modestringrequiredWhat to fetch from ESPN.
leaguestringoptionalLeague slug. The sport is derived automatically.
leaguesarrayoptionalOptional multi-league override for modes that iterate leagues (scoreboard, odds, standings, teams, teamDetail, news, players, schedule, rankings), e.g. ["nba","nfl"].
datePresetstringoptionalDate window for scoreboard and odds. ESPN accepts one date per request, so ranges are fetched one day at a time.
startDatestringoptionalFirst date for datePreset=custom, in YYYYMMDD or YYYY-MM-DD.
endDatestringoptionalLast date for datePreset=custom (inclusive), in YYYYMMDD or YYYY-MM-DD. Maximum 366 days.
seasonintegeroptionalESPN season year for standings, schedule, players and rankings (e.g. 2025). Leave blank for the current season.
seasonTypestringoptionalFilter a team schedule by season phase (ignored for soccer schedules, which ESPN reports as one league season).
teamIdsarrayoptionalTeams for teams/teamDetail/schedule/players. Accepts 2, BOS or nba/BOS. Get IDs from mode=teams.
eventIdsarrayoptionalGames for gameDetail/odds. Accepts 401909904 or nba/401909904. Get IDs from mode=scoreboard.
athleteQueriesarrayoptionalPlayer names to search, e.g. ["LeBron James", "Jannik Sinner"].
athleteIdsarrayoptionalESPN athlete IDs for direct profiles, e.g. ["1966"].
rankingTypestringoptionalWhich poll to return. 'all' includes every poll ESPN publishes for the league.
statusFilterstringoptionalFilter scoreboard, odds or schedule rows by game state.
liveOnlybooleanoptionalKeep only in-progress games (scoreboard and odds).
newsScopestringoptionalLeague news is capped at 50 articles by ESPN. Global pages the ESPN now feed and filters to the selected league.
includeTeamDetailsbooleanoptionalFetch each team's record, venue and next event. Adds one request per team.
includeGameDetailsbooleanoptionalAttach the full game summary to every team-sport game. Adds one request per game.
includePlayerStatsbooleanoptionalAttach latest season stats to player rows and the player box score to gameDetail. Adds requests per player.
includeGameLogbooleanoptionalAttach the current-season game log to each player. Adds one request per athlete.
includePlayByPlaybooleanoptionalInclude the full play-by-play list in gameDetail (scoring plays are always included).
maxItemsintegeroptionalHard 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.

FieldTypeRequiredDescription
espnDatastringoptionalDataset 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.

Open the step-by-step Python guide →

Source build LQ5zzKBf9U6Ues2Nj. Documentation is regenerated from the default published build; private drafts are not included.