ESPN Scraper avatar

ESPN Scraper

Pricing

$1.00 / 1,000 results

Go to Apify Store
ESPN Scraper

ESPN Scraper

Collect public ESPN scores, schedules, game statistics, odds, standings, teams, rosters, news, and rankings across sports leagues.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Share

Scrape ESPN scores, schedules, odds, standings, game summaries, team rosters, rankings, and news from public sports pages. Export ESPN data to JSON, CSV, or a spreadsheet with one record per game, team, player, article, or poll entry. This is an ESPN data API alternative for public information across several major sports and soccer leagues.

The actor uses structured public data endpoints. It does not need a login or a browser session. Scoreboard requests are split by date, so a date range works even though the underlying endpoint accepts one day per request. Every record identifies its type and league, making it possible to keep separate tables or join data by game, team, and player IDs.

What data can you extract from ESPN?

The selected mode controls the dataset rows. Scoreboard mode produces games and scores. Game mode produces one detailed summary per requested event. Odds mode emits a game with a flattened published line. Standings, Teams, Roster, Schedule, News, and Rankings modes each emit their corresponding record type. Fields tied to a particular sport or game state may be absent or null. For example, a scheduled game has no final score and many completed games have no current betting line.

FieldDescriptionExample
typeRecord kind: game, gameSummary, oddsLine, standing, team, player, scheduleGame, article, or rankinggame
leagueRequested league keycollege-football
leagueNameFull league nameNCAA - Football
gameIdESPN event ID401856704
dateGame start time2026-09-26T16:00Z
nameEvent display nameTexas Longhorns at Tennessee Volunteers
shortNameShort event nameTEX @ TENN
statusState, detail, completion, period, and clock{"state":"in","period":2}
homeTeamHome team nameTennessee Volunteers
homeTeamIdHome team ID2633
homeAbbrHome team abbreviationTENN
homeScoreHome score3
homeLogoHome logo URLhttps://a.espncdn.com/...
homeRecordHome team record3-0
awayTeamAway team nameTexas Longhorns
awayTeamIdAway team ID251
awayAbbrAway team abbreviationTEX
awayScoreAway score10
awayLogoAway logo URLhttps://a.espncdn.com/...
awayRecordAway team record3-0
oddsPrimary sportsbook odds or full summary lines{"spread":-7.0,...}
venueVenue name, location, and indoor flag{"name":"Neyland Stadium",...}
broadcastsBroadcast network names["TV network"]
leadersPublished game leaders[...]
ticketsPublic ticket summarynull
situationLive game situation{"down":2,...}
competitorsCompetitors and published statistics[...]
urlESPN page URLhttps://www.espn.com/...
scrapedAtUTC collection time2026-09-26T17:05:51Z
gameDetailsOptional game summary attached to a scoreboard row{"type":"gameSummary",...}
providerSportsbook namesportsbook.example.com
detailsLine summaryhome -7
spreadCurrent home point spread-7.0
overUnderCurrent total points line50.5
homeMoneyLineCurrent home money line-345
awayMoneyLineCurrent away money line275
openSpreadOpening home point spread-2.5
openOverUnderOpening total points line48.5
openHomeMoneyLineOpening home money line-142
openAwayMoneyLineOpening away money line120
spreadMovementCurrent spread minus opening spread-4.5
totalMovementCurrent total minus opening total2.0
homeSpreadPriceCurrent home spread price-115
awaySpreadPriceCurrent away spread price-105
overPriceCurrent over price-102
underPriceCurrent under price-118
betUrlBetting line linkhttps://sportsbook.example.com/...
teamStatsTeam box scores and statistics[...]
playerStatsPlayer box scores and statistics[...]
winProbabilityPublished win probability feed[...]
seasonSeriesSeason head-to-head information[...]
injuriesPublished injuries[...]
officialsGame officials[...]
attendanceGame attendance18997
playsOptional play-by-play records[...]
seasonSeason year2026
groupConference or divisionEastern Conference
teamIdTeam ID13
teamTeam nameLos Angeles Lakers
abbreviationTeam abbreviationLAL
logoTeam logo URLhttps://a.espncdn.com/...
statsNamed standings statistics{"wins":"41",...}
winsWins41
lossesLosses29
rankStanding or poll rank1
playerIdPlayer ID5113969
positionPlayer positionSG
jerseyJersey number7
agePlayer age21
heightHeight in inches77
weightWeight in pounds184
collegeCollege name where publishednull
salarySalary where publishednull
locationTeam locationLos Angeles
slugTeam URL sluglos-angeles-lakers
colorTeam color552583
recordTeam record41-29
standingSummaryTeam standing summaryPacific Division
nextEventNext scheduled event[...]
forTeamIdTeam whose schedule was requested13
forTeamResultW when that team won a completed gameW
articleIdArticle ID50034054
headlineArticle headlinePublic sports headline
descriptionArticle summaryArticle summary
publishedAtArticle publication time2026-09-26T12:00Z
updatedAtArticle update time2026-09-26T13:00Z
categoriesArticle topic tags[...]
pollPoll nameAP Top 25
pollDatePoll date2026-09-20T07:00Z
weekPoll weekWeek 4
previousRankPrevious poll rank2
pointsPoll points1706
providersAll available provider lines returned for this game[{"spread":-7.0,...}]

The game fields are deliberately stable across sports. A soccer event may contain individual competitors or extra status details in competitors, while a basketball game commonly has team scores and period information. The original nested arrays are kept when they carry useful sport-specific detail. status, venue, and odds are compact nested objects; they remain objects when exported as JSON and may be serialized as text in flat formats.

How to scrape ESPN

  1. Pick a mode. Start with Scoreboard if you want the games on a date, or Standings if you want a current league table.
  2. Enter one or more supported league keys. For a single game, use eventIds. For a roster or team schedule, use teamIds. You can also paste supported page URLs into startUrls.
  3. Set dates for Scoreboard or Odds. Use a single calendar day, a relative day, or a range up to 32 days inclusive. Set maxResults to cap the number of records charged and returned.
  4. Start the run. When it finishes, download the dataset in JSON, CSV, or spreadsheet format. Repeat with a different mode if you need a different table.

A typical workflow collects a scoreboard first, reads its gameId values, and then requests Game mode for selected events. Another workflow fetches a team directory, reads teamId, and then requests rosters or schedules. The ID fields preserve these joins without comparing names, which can vary by league or season.

Input

ParameterTypeDefaultDescription
modestringscoreboardScoreboard, game, odds, standings, teams, roster, schedule, news, or rankings.
leaguesstring arraynba in the formLeague keys for league-wide modes.
datesstringToday if blankYYYYMMDD, YYYY-MM-DD, today, yesterday, tomorrow, or YYYYMMDD-YYYYMMDD.
eventIdsstring arrayEmptyGame IDs prefixed by league, such as nfl/401872953.
teamIdsstring arrayEmptyTeam numeric IDs or abbreviations prefixed by league, such as nba/13 or nba/LAL.
startUrlsstring arrayEmptyESPN game, standings, scoreboard, or team URLs.
enrichGameDetailsbooleanfalseFetch and attach a summary for each scoreboard game.
includePlayByPlaybooleanfalseInclude play records in Game mode or attached game details.
enrichTeamDetailsbooleanfalseFetch full team profiles instead of only the directory entries.
seasonstringCurrent source seasonYear for standings, schedules, or rankings.
seasonTypestringSource defaultSchedule season type: 1 preseason, 2 regular season, 3 postseason.
groupsstringNoneSource group ID for college scoreboard filtering.
maxResultsinteger200Overall record cap.
maxConcurrencyinteger5Maximum concurrent requests, capped at 10.
proxyConfigurationobjectEnabledProxy configuration for endpoint requests.
{
"mode": "scoreboard",
"leagues": ["college-football"],
"dates": "20260926",
"groups": "80",
"maxResults": 65
}

Supported league keys include nfl, college-football, ncaaf, ufl, nba, wnba, ncaam, ncaaw, mlb, nhl, epl, la-liga, serie-a, bundesliga, ligue-1, mls, ucl, uel, liga-mx, world-cup, nwsl, f1, ufc, and pga. These are key mappings, not a guarantee that every mode has records for every league. Polls, for instance, are published in selected sports. Empty dates during an off-season normally produce no scoreboard rows.

Output example

This trimmed item came from a live scoreboard run for 26 September 2026. The run returned 65 games with game ID, date, teams, and URL filled on every row. Live scores and the clock can change between runs.

{
"type": "game",
"league": "college-football",
"leagueName": "NCAA - Football",
"gameId": "401856704",
"date": "2026-09-26T16:00Z",
"name": "Texas Longhorns at Tennessee Volunteers",
"status": {"state": "in", "detail": "12:07 - 2nd Quarter", "completed": false, "period": 2, "clock": "12:07"},
"homeTeam": "Tennessee Volunteers",
"homeTeamId": "2633",
"homeScore": 3,
"awayTeam": "Texas Longhorns",
"awayTeamId": "251",
"awayScore": 10,
"venue": {"name": "Neyland Stadium", "city": "Knoxville", "state": "TN", "id": "3853", "indoor": false},
"odds": null,
"url": "https://www.espn.com/college-football/game?gameId=401856704"
}

Use cases

  • A sports results archive can collect completed games by date and join details through gameId.
  • A live display can refresh one league's scoreboard and show status, clock, teams, and score.
  • A standings report can track wins, losses, and the source's full named statistics for each club.
  • A roster workflow can combine player IDs, positions, measurements, and public team identifiers.
  • A schedule calendar can use event dates and venue details, then mark completed results.
  • A betting analysis table can compare a published current spread or total with its opening figure where both exist.

How much does it cost to scrape ESPN?

The current event price is $0.001 per dataset result, or $1 per 1,000 results. A run with 100 output rows costs $0.10 in result charges; 1,000 rows cost $1; 5,000 rows cost $5. Set maxResults to keep the maximum number of result charges predictable. A run can also consume platform resources such as compute and proxy traffic, depending on the account and configuration. The current run price shown before starting a task is authoritative if pricing changes.

A scoreboard game, a standing row, and a player row each count as one result when written to the dataset. Fetching a game summary to attach to a scoreboard row adds a request but does not create an additional result by itself. Odds mode only emits games that have a published line, so a league can produce fewer paid results than its total number of scheduled games.

Tips for best results

Use a date that falls in the league's season. today is convenient for recurring tasks, while an explicit date gives reproducible historical queries. When comparing live scores, save successive datasets with their scrapedAt value; a new run can contain changed scores. This actor does not maintain cross-run memory or output only changes.

For large historical windows, run several ranges of at most 32 days. The actor expands each range into daily scoreboard calls and deduplicates repeated game IDs within a run. maxResults stops output across all requested leagues and dates. Put the most important leagues first when the limit is smaller than the expected combined volume.

Use numeric team IDs when possible. Abbreviations are resolved through the league team directory, which adds a request. A full team profile also adds one request for each selected team. enrichGameDetails adds a summary request for each scoreboard game; use it only when the box score, injuries, or probability feed is needed. Play-by-play records can be large, so leave includePlayByPlay off for compact exports.

For college football, groups can narrow the scoreboard to a subdivision. The golden case used group 80 and produced 65 games for its date. Other group IDs may yield different records. If a league unexpectedly returns no games, check the season, calendar date, and group filter before increasing limits.

Limits

The source's scoreboard accepts a single day per request. Its response did not honor a very high limit consistently: a request with limit=1000 yielded 25 games for the golden date, while limit=200 yielded 65. The actor uses 200 and splits date ranges into daily calls. Ranges longer than 32 days are rejected so a typo does not cause a large request burst.

Odds are context dependent. The scheduled NFL sample returned lines for 14 games; a live college football sample had no primary odds in its scoreboard response. The tested game summary supplied one provider line. providers therefore contains the available line or lines; it does not promise every sportsbook on the market. When the source omits a provider label but includes a betting link, provider contains the link host. Opening lines and movement remain null when their source values are absent.

Game summaries for future events can have empty player statistics and no final score. A standalone summary may also omit an exact ISO game date even though its scoreboard counterpart has one. Team rosters and article feeds depend on what the league publishes. Rankings are only meaningful where polls exist; a ranking team name may require a directory lookup. The actor does not scrape restricted articles or require a login. Only public metadata is included for news.

Automated workflows

A client can request “Get tomorrow's NFL games with scores and published odds” by using Scoreboard mode, nfl, and tomorrow. Another can request “Get the current college football standings and a team roster” as two tasks, one for Standings and one for Roster. The resulting JSON has stable IDs and a type value, so the records can be routed into separate tables without inspecting every nested field.

FAQ

Is this an official ESPN service? No. It collects public data and has no affiliation with the source. Use the data in line with the source's terms and applicable law, including rules on personal data and downstream redistribution.

Do I need proxies or an account on the target site? The observed public JSON endpoints worked without a target-site login or browser challenge. Proxy configuration is available if an endpoint blocks a particular run. A target account is not required for the supported public modes.

How fast is a run? A scoreboard request for a single day needs one source call per league. Detail enrichment makes one extra call per game, and a date range makes one scoreboard call per day and league. Actual duration also includes startup, network response time, and output writes.

Can I schedule it or monitor changes? You can run the same input on a schedule and compare gameId, scores, status, odds, and scrapedAt across datasets. The actor does not store a cross-run change ledger or suppress unchanged records.

Can I export to a spreadsheet? Yes. Download the dataset in JSON or CSV and open the CSV in a spreadsheet. Nested fields such as odds and stats are easiest to inspect in JSON.

Why is a field empty? The site may not publish it for that game state, sport, league, or season. A future game has no final score; an event without a betting market has no odds. Some roster fields, including college and salary, are not universal.

Why are there fewer Odds rows than Scoreboard games? Odds mode deliberately skips events without a line. Scoreboard mode keeps those games with odds: null, preserving the full schedule and scores.

Integrations

Use the dataset endpoint for downstream pipelines or export the results after each run. Scheduled runs can feed webhooks, spreadsheet imports, reporting jobs, and other automation systems. The stable league, gameId, teamId, playerId, and articleId fields help keep updates aligned across recurring extracts.

Support

Open an issue on the actor's Issues tab with the mode, league, date, and a sample missing field. That context makes it possible to reproduce a source change or add a useful field.