ESPN Hidden API Multi-Sport Scores Scraper avatar

ESPN Hidden API Multi-Sport Scores Scraper

Pricing

Pay per event

Go to Apify Store
ESPN Hidden API Multi-Sport Scores Scraper

ESPN Hidden API Multi-Sport Scores Scraper

Scrapes scores, schedules, rosters, and athlete data from ESPN's undocumented public JSON APIs (site.api.espn.com + sports.core.api.espn.com). Covers NFL, NBA, MLB, NHL, soccer, and college sports — no auth, no HTML parsing, survives site redesigns.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Extract scores, schedules, team rosters, and athlete data from ESPN's undocumented public JSON APIs — covering NFL, NBA, MLB, NHL, soccer, and more. No HTML parsing, no authentication, no proxy required.

Why the hidden API? ESPN's site.api.espn.com and sports.core.api.espn.com are the same endpoints ESPN's own website and mobile app use. They return clean, structured JSON and have been stable for years. Unlike HTML scrapers that break on every redesign, API-based extraction survives indefinitely.


What Data Does It Return?

All three modes return flat JSON records with consistent field names.

Scoreboard (scoreboard)

Game scores and schedules for any sport and league. Returns one record per game with home/away teams, scores, status (scheduled, in-progress, final), venue, and season/week context.

Team Roster (roster)

All athletes on a specific team's roster. Returns athlete name, position, jersey number, and status. Requires the ESPN teamId (find it from scoreboard home_team_id / away_team_id fields).

Athlete List (athletes)

Paginated full league athlete directory via sports.core.api.espn.com. Returns athlete name, position, jersey, and team association for every active (and recently inactive) player in the league.


Input

FieldTypeRequiredDescription
dataTypestringYesWhat to fetch: scoreboard, roster, or athletes
sportstringYesESPN sport slug (e.g. basketball, football, baseball, hockey, soccer)
leaguestringYesESPN league slug (e.g. nba, nfl, mlb, nhl, eng.1, wnba, ncaaf, ncaab)
teamIdstringFor rosterESPN team ID. Find from scoreboard output (home_team_id, away_team_id)
datestringNoDate in YYYYMMDD format for scoreboard. Defaults to today
seasonintegerNoSeason year for athletes list. Defaults to current active season
maxItemsintegerNoMaximum records to return

Example Inputs

NBA games today:

{
"dataType": "scoreboard",
"sport": "basketball",
"league": "nba",
"maxItems": 20
}

NFL Week 1 2025 schedule:

{
"dataType": "scoreboard",
"sport": "football",
"league": "nfl",
"date": "20250907",
"maxItems": 50
}

Premier League today:

{
"dataType": "scoreboard",
"sport": "soccer",
"league": "eng.1",
"maxItems": 20
}

Los Angeles Lakers roster (teamId 13):

{
"dataType": "roster",
"sport": "basketball",
"league": "nba",
"teamId": "13",
"maxItems": 20
}

Full NBA athlete directory:

{
"dataType": "athletes",
"sport": "basketball",
"league": "nba",
"maxItems": 500
}

Output Schema

Each record is a flat JSON object. Fields not applicable to the current dataType are null.

FieldTypeModesDescription
sportstringallSport slug
leaguestringallLeague slug
data_typestringallscoreboard, roster, or athletes
event_idstringscoreboardESPN event ID
event_namestringscoreboardFull game display name
event_datestringscoreboardGame date/time (ISO 8601)
statusstringallGame status or athlete status
season_yearintegerscoreboardSeason year
weekintegerscoreboardWeek number (NFL/college football)
home_teamstringscoreboardHome team name
home_team_idstringscoreboardESPN home team ID
away_teamstringscoreboardAway team name
away_team_idstringscoreboardESPN away team ID
home_scoreintegerscoreboardHome team score
away_scoreintegerscoreboardAway team score
home_recordstringscoreboardHome team season record (e.g. 60-22)
away_recordstringscoreboardAway team season record
venuestringscoreboardStadium/arena full name
venue_citystringscoreboardVenue city
athlete_idstringroster, athletesESPN athlete ID
athlete_namestringroster, athletesAthlete full name
positionstringroster, athletesPosition display name
jerseystringroster, athletesJersey number
roster_teamstringroster, athletesTeam name
team_idstringroster, athletesESPN team ID

Supported Sports and Leagues

SportLeagueInput
American FootballNFLsport: football, league: nfl
American FootballCollege Football (FBS)sport: football, league: college-football
BasketballNBAsport: basketball, league: nba
BasketballWNBAsport: basketball, league: wnba
BasketballCollege Basketball (Men's)sport: basketball, league: mens-college-basketball
BaseballMLBsport: baseball, league: mlb
Ice HockeyNHLsport: hockey, league: nhl
SoccerEnglish Premier Leaguesport: soccer, league: eng.1
SoccerMLSsport: soccer, league: usa.1
SoccerUEFA Champions Leaguesport: soccer, league: uefa.champions
SoccerLa Ligasport: soccer, league: esp.1
SoccerBundesligasport: soccer, league: ger.1

Any valid ESPN sport/league slug combination works. Invalid combinations return an empty events array.


Tips

  • Find team IDs: Run a scoreboard query, then read home_team_id and away_team_id from the results.
  • Historical scores: Pass a date in YYYYMMDD format to the scoreboard mode to retrieve past game results.
  • Off-season: Scoreboard queries during the off-season return zero or few results — this is expected.
  • Rate limits: ESPN's CDN is permissive. No proxy needed. For bulk roster pulls across all teams, run one query per team with maxItems: 0.