ESPN Standings
Pricing
from $1.00 / 1,000 results
ESPN Standings
Scrape league standings tables from ESPN across 16 leagues and 5 sports. Supports current and historical seasons. No account or proxy required.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(4)
Developer
Crawler Bros
Actor stats
4
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
ESPN Standings Scraper
Scrape league standings tables from ESPN — no account or subscription required. Supports 16 leagues across 5 sports including the NBA, NFL, MLB, NHL, MLS, WNBA, NCAA basketball and football, Premier League, La Liga, Champions League, Bundesliga, Serie A, Ligue 1, and Liga MX.
What This Scraper Does
This actor fetches standings tables from ESPN's public JSON API and returns one flat record per team with all available stats: wins, losses, win percentage, points for/against, games behind, playoff seed, streak, home/away records, and more. Supports current and historical seasons.
Supported Leagues
| Code | Sport | League |
|---|---|---|
nba | Basketball | NBA |
wnba | Basketball | WNBA |
ncaam | Basketball | NCAA Men's |
ncaaw | Basketball | NCAA Women's |
nfl | Football | NFL |
ncaaf | Football | NCAA Football |
mlb | Baseball | MLB |
nhl | Hockey | NHL |
mls | Soccer | Major League Soccer |
epl | Soccer | English Premier League |
laliga | Soccer | La Liga (Spain) |
ucl | Soccer | UEFA Champions League |
bundesliga | Soccer | Bundesliga (Germany) |
seriea | Soccer | Serie A (Italy) |
ligue1 | Soccer | Ligue 1 (France) |
ligamx | Soccer | Liga MX (Mexico) |
Input
| Field | Type | Description |
|---|---|---|
| Leagues | List of strings | League codes to scrape. Defaults to ["nba"]. |
| Season | Integer (optional) | Year the season ends (e.g. 2026 for NBA 2025-26). Omit for current season. |
| Max Items | Integer | Maximum number of team records across all leagues (1–10,000). Default: 1000. |
Season Encoding
ESPN uses the ending year for cross-year seasons. Examples:
- NBA 2025-26 season →
season: 2026 - EPL 2025-26 season →
season: 2026 - NFL 2025 season (Sep 2025 – Feb 2026) →
season: 2025 - MLB 2025 season →
season: 2025
Output
Each record represents one team's standings row. Fields marked ? are optional and appear only when ESPN makes them publicly available for that sport/season.
| Field | Type | Description |
|---|---|---|
league | string | League code e.g. "nba" |
sport | string | Sport e.g. "basketball" |
season | integer | Season year (ending year) |
conference | string? | e.g. "Eastern Conference" — omitted for flat-table leagues |
division | string? | e.g. "Atlantic Division" — omitted when not applicable |
groupName | string? | e.g. "Group A" for UCL; omitted otherwise |
rank | integer | Position in the group |
playoffSeed | integer? | Playoff seed if available |
teamId | string | ESPN team ID |
teamName | string | Full team name |
teamAbbreviation | string? | Short code e.g. "BOS" |
teamLogo | string? | Logo URL |
wins | integer | |
losses | integer | |
ties | integer? | MLB/NHL/soccer |
overtimeLosses | integer? | NHL-specific |
gamesPlayed | integer? | |
winPercent | number? | 0.0–1.0 |
gamesBehind | number? | |
points | integer? | Soccer/NHL point totals |
pointsFor | number? | |
pointsAgainst | number? | |
pointDifferential | number? | |
avgPointsFor | number? | Per-game avg |
avgPointsAgainst | number? | Per-game avg |
streak | string? | e.g. "W5" |
homeRecord | string? | e.g. "20-8" |
awayRecord | string? | e.g. "15-14" |
divisionRecord | string? | NA sports |
conferenceRecord | string? | NA sports |
lastTenRecord | string? | e.g. "7-3" |
clincher | string? | e.g. "x" (clinched playoff), "y" (clinched division) |
note | string? | ESPN qualification/seed note |
scrapedAt | string | ISO 8601 UTC scrape timestamp |
Fields are included only when ESPN returns data for them — no nulls.
Error Records
If a league fetch fails, the record contains:
| Field | Description |
|---|---|
inputLeague | The league code that was attempted |
inputSeason | The season that was attempted (or null) |
error | Human-readable error message |
scrapedAt | Timestamp |
Frequently Asked Questions
Do I need an ESPN account? No. This scraper only uses ESPN's public JSON API which does not require authentication.
Is a proxy required? No. ESPN's public API has no bot protection or rate limiting for typical use.
How do I get last season's standings?
Set season to the year the season ended. For the NBA 2023-24 season, use 2024. For the NFL 2023 season, use 2023.
Can I filter by conference or division?
Yes — all team records include conference and division fields when applicable. Use Apify's dataset view filters to narrow the results, or filter in your downstream pipeline.
Why are some fields missing on some records?
ESPN's standings endpoint returns different stats per sport. For example, points appears only for soccer and NHL; gamesBehind is baseball/basketball/football; overtimeLosses is NHL-only. Per our design, fields only appear when ESPN publishes data — no nulls.
What's the difference between this actor and the ESPN Scores & Schedules actor?
- Scores & Schedules returns game-by-game data: scores, schedules, leaders, odds, attendance.
- Standings returns team-by-team season standings: wins, losses, rankings, playoff position.
How often does the data update? ESPN updates standings in near real-time as games finish. Running the actor returns the latest state at fetch time.
Can I combine multiple leagues in one run?
Yes. Pass multiple codes in the leagues array, e.g. ["nba", "nfl", "epl"]. All teams from all leagues are returned in a single dataset, each tagged with their league field.