ESPN APIespn.com ↗
Access ESPN scores, standings, rosters, player stats, game logs, and news across 21+ leagues including NFL, NBA, MLB, NHL, and more via a single API.
What is the ESPN API?
The ESPN API covers 9 endpoints that return live scores, standings, team rosters, athlete profiles, game logs, and league news across 21+ sports leagues. The get_scoreboard endpoint returns live and final event data including venue, broadcasts, betting odds, and game recaps, while get_athlete_gamelog delivers per-game stat breakdowns with monthly splits and season totals. League identifiers span NFL, NBA, MLB, NHL, WNBA, college football, college basketball, and European soccer.
curl -X POST 'https://api.parse.bot/scraper/1ed7c95b-0348-41fb-baa1-f5f0096b7da5/get_scoreboard' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"dates": "20260707",
"limit": "10",
"league": "nba"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace espn-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.espn_sports_data_api import ESPN, League, SearchType
espn = ESPN()
# Search for a player
for result in espn.searchresults.search(query="LeBron James", type=SearchType.PLAYER):
print(result.name, result.sport, result.league)
# List NBA teams and explore a roster
for team in espn.teams.list(league=League.NBA, limit=5):
print(team.name, team.abbreviation, team.logo)
# Get a specific team's roster via constructible navigation
lakers = espn.team(id="13")
for player in lakers.roster.list(league=League.NBA):
print(player.name, player.position, player.jersey)
# Get athlete profile and overview
athlete = espn.athlete(id="1966")
profile = athlete.profile(league=League.NBA)
print(profile.name, profile.position, profile.height, profile.weight)
overview = athlete.overview(league=League.NBA)
print(overview.statistics, overview.rotowire)
# Get game log
gamelog = athlete.gamelog(league=League.NBA, season="2026")
print(gamelog.labels, gamelog.display_names)
# List today's NBA events
for event in espn.events.list(league=League.NBA):
print(event.name, event.date)
# Get league standings
for group in espn.standings.list(league=League.NBA):
print(group.name, group.entries)
# Get NBA news articles
for article in espn.articles.list(league=League.NBA, limit=3):
print(article.headline, article.published, article.premium)
Get live scores, final results, and upcoming fixtures for any supported league. Returns match details including scores, venues, broadcasts, leaders, odds, and recaps. Each event includes competitor details with team records, leaders, and broadcasting info.
| Param | Type | Description |
|---|---|---|
| dates | string | Date filter in YYYYMMDD format (e.g., 20260424). When omitted, returns current day's events. |
| limit | integer | Maximum number of events to return. |
| leaguerequired | string | League identifier. |
{
"type": "object",
"fields": {
"date": "string or null, date of events",
"events": "array of event objects with id, name, date, status, venue, competitors, broadcasts, odds, headline, recap",
"league": "string, league display name",
"season": "object containing year, startDate, endDate, displayName, type",
"event_count": "integer, number of events returned"
},
"sample": {
"data": {
"date": "2026-06-10",
"events": [
{
"id": "401859966",
"date": "2026-06-11T00:30Z",
"name": "San Antonio Spurs at New York Knicks",
"venue": {
"city": "New York",
"name": "Madison Square Garden",
"state": "NY"
},
"status": {
"clock": "0.0",
"state": "pre",
"detail": "Wed, June 10th at 8:30 PM EDT",
"period": 0,
"description": "Scheduled"
},
"broadcasts": [
{
"names": [
"ABC"
],
"market": "national"
}
],
"short_name": "SA @ NY",
"competitors": [
{
"score": "0",
"winner": null,
"team_id": "18",
"home_away": "home",
"team_name": "New York Knicks",
"abbreviation": "NY"
}
]
}
],
"league": "National Basketball Association",
"season": {
"year": 2026,
"displayName": "2025-26"
},
"event_count": 1
},
"status": "success"
}
}About the ESPN API
Coverage and Endpoints
Nine endpoints cover the full breadth of ESPN's data across major North American and international leagues. get_scoreboard accepts a league identifier and an optional dates parameter in YYYYMMDD format, returning an events array where each entry includes competitors, status, venue, broadcasts, odds, and a headline or recap when available. get_standings adds an optional season year and a season_type filter (2 for regular season, 3 for postseason) to return conference/division groups with per-team stats. get_teams returns every franchise in a league with id, color, logo, and navigation links.
Athlete Data
Three endpoints focus on individual athletes. get_athlete_profile returns biographical fields—age, height, weight, jersey, position, status, and an injuries array—given a league and athlete_id. get_athlete_overview layers on statistics (split by season and career), awards, a fantasy object with draft_rank, percent_owned, and projection, plus a rotowire block with expert analysis text. get_athlete_gamelog returns a season_types array where each category includes per-game rows keyed to labels (e.g., MIN, FG, PTS) alongside running totals and averages.
Roster and News
get_team_roster returns the full squad for a given team_id, including each athlete's date_of_birth, birth_place, college, experience_years, and an injury status field, as well as a coaches array with experience. get_news returns an articles array with headline, description, byline, published, categories, and associated images for a given league. The limit parameter controls article count.
Search and ID Resolution
The search endpoint is the entry point for resolving IDs. Submit a query string—player or team name—and optionally set type to 'player' or 'team' to narrow results. Each result includes id, name, type, sport, league, and link, which feed directly into the athlete and roster endpoints. Mixing type filters with mismatched queries (e.g., a player name with type: 'team') returns empty results.
The ESPN API is a managed, monitored endpoint for espn.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when espn.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official espn.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display live NFL or NBA scoreboards with venue and broadcast info in a sports companion app
- Build a fantasy sports dashboard using draft rank, percent owned, and projections from get_athlete_overview
- Track player injury status and roster changes across teams using get_team_roster and get_athlete_profile
- Generate automated game recap summaries by pulling the headline and recap fields from get_scoreboard events
- Populate historical season standings tables using get_standings with season and season_type parameters
- Aggregate athlete career statistics across leagues by combining get_athlete_overview and get_athlete_gamelog
- Drive a news feed widget with league-filtered articles, bylines, and images from get_news
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ESPN have an official developer API?+
What does get_scoreboard return beyond just the score?+
venue, broadcasts (network names), odds (betting lines when available), a headline, and a recap field populated after a game ends. The status field indicates whether the event is pre-game, in-progress, or final. You can filter by date using the dates parameter in YYYYMMDD format.Does the API return historical game logs for past seasons?+
get_athlete_gamelog accepts an optional season parameter (e.g., 2024) so you can request prior seasons rather than only the current one. The response includes per-game rows, monthly breakdowns, and season totals keyed to sport-specific stat labels.Are play-by-play or in-game drive/pitch-level data available?+
Does the fantasy object appear for every league?+
fantasy field within get_athlete_overview may be absent for leagues where ESPN does not surface fantasy data, such as certain international soccer competitions or F1. It is consistently populated for NFL, NBA, MLB, and NHL athletes where ESPN runs active fantasy products.