ESPN's hidden API endpoints
Latest News: http://site.api.espn.com/apis/site/v2/sports/football/college-football/news
Latest Scores: http://site.api.espn.com/apis/site/v2/sports/football/college-football/scoreboard
-
query params:
- calendar: 'blacklist'
- dates: any date in YYYYMMDD
Game Information: http://site.api.espn.com/apis/site/v2/sports/football/college-football/summary?event=:gameId
-
params:
- gameId: identifier of some game (EX: 400934572 for 2017 Army vs Navy)
Team Information: http://site.api.espn.com/apis/site/v2/sports/football/college-football/teams/:team
-
params:
- team: some team abbreviation (EX: 'all' for Allegheny, 'gt' for Georgia Tech, 'wisconsin' for Wisconsin)
Rankings: http://site.api.espn.com/apis/site/v2/sports/football/college-football/rankings
Scores: http://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/football/nfl/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/football/nfl/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/football/nfl/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/teams/:team
Scores: https://site.api.espn.com/apis/site/v2/sports/baseball/college-baseball/scoreboard
Scores: http://site.api.espn.com/apis/site/v2/sports/hockey/nhl/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/hockey/nhl/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/hockey/nhl/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/hockey/nhl/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/basketball/nba/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/basketball/nba/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/basketball/wnba/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/basketball/wnba/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/basketball/wnba/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/basketball/wnba/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/basketball/womens-college-basketball/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/basketball/womens-college-basketball/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/basketball/womens-college-basketball/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/basketball/womens-college-basketball/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/basketball/mens-college-basketball/scoreboard
News: http://site.api.espn.com/apis/site/v2/sports/basketball/mens-college-basketball/news
All Teams: http://site.api.espn.com/apis/site/v2/sports/basketball/mens-college-basketball/teams
Specific Team: http://site.api.espn.com/apis/site/v2/sports/basketball/mens-college-basketball/teams/:team
Scores: http://site.api.espn.com/apis/site/v2/sports/soccer/:league/scoreboard
-
params:
- league: some league abbreviation (EX: 'eng.1' for EPL, 'usa.1' for MLS)
Latest News: http://site.api.espn.com/apis/site/v2/sports/soccer/:league/news
List of Team Information: http://site.api.espn.com/apis/site/v2/sports/soccer/:league/teams
Will update with more information as I find more...
Many of the previously listed URL's for endpoints are now dead. Having worked with the API for a couple of years (and this year's football API's for a couple of months), here is a summary of links that are still working, using the NFL as an example (fill in other sports & league names as mentioned above as necessary).
List of Teams
https://site.api.espn.com/apis/site/v2/sports/football/nfl/teams
Full Roster, the team_id is a 1 or 2-digit number found at the previous endpoint. (In the returned roster JSON, under athletes, the roster is divided up into offense, defense, and special teams, but no season statistics are supplied.) Don't include the brackets.
https://site.api.espn.com/apis/site/v2/sports/football/nfl/teams/[team_id]/roster
Team Schedule, scores only
https://site.api.espn.com/apis/site/v2/sports/football/nfl/teams/[team_id]/schedule
Team Total Statistics (other URL's either don't work, only provide circular links, give links back to espn.com, or return data with all 0's). Also note that the previously mentioned standings endpoints don't provide much either; the event calls still work (mentioned below).
https://site.api.espn.com/apis/site/v2/sports/football/nfl/teams/[team_id]/statistics
From a team's roster, get a player's 7-digit id (player_id), then receive this season's (2023) statistics for that player (change the year for different season totals). (League-wide rosters don't seem to be working, at least at the endpoints I tried.)
http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2023/types/2/athletes/[player_id]/statistics/
Player's career totals
http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes/[player_id]/statistics
I have concentrated on box scores, previews, and in-game scores for my projects (https://github.com/ITIRadio/ESPN-API/), rather than player & team total season statistics. However, to address some of the questions above, the API in general is not very fast to update, and is subject to slowing down significantly when receiving a lot of requests from an IP. As such, I try to get just one day's worth of box scores via the event calls at one time. I also generally only use the scoreboard call for games in-progress, or I don't make a lot of requests. I have never been able to even get close to the previously mentioned 2,500 calls in a day before receiving errors.
Other issues such as updating the timeouts remaining were only fixed this past week for NFL games in-progress (college games still don't work). I wouldn't expect drives in event calls to be fully updated for a couple of hours after the game.
The scoreboard call itself switches from yesterday's scores to today's schedule usually between 9 and 11 AM Eastern US time, for daily sports. For football, expect the week's scoreboard to switch at around the same time on Tuesdays for the NFL and Sundays for college. As such, I usually depend on supplying dates to my projects.
Current Scoreboard (for the given week for football)
http://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard
Current Scoreboard for all College Division I games (group=80 is all conferences, maximum 200 games)
https://site.api.espn.com/apis/site/v2/sports/football/college-football/scoreboard?groups=80&limit=200
Scoreboard for all NFL games on a given date, in YYYYMMDD format (suggested to use 1 day at a time due to throttling issues, but use a range of dates, earlier date first, at your discretion)
http://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard?dates=20231029-20231029
From a scoreboard call, use ['events'][game_number]['id'] to retrieve an event_id for a particular game. Then to receive full box score data either post-game or in-progress, or preview data before the game begins (also note that updated standings as usually provided in this call post-game):
http://site.api.espn.com/apis/site/v2/sports/football/nfl/summary?event=[event_id]