Skip to main content

sportsdataverse-py sportsdataverse-py logo

Lifecycle: beta PyPI

sportsdataverse-py gives the community free, tidy, analysis-ready sports data in Python. It is the Python member of the SportsDataverse family and deliberately mirrors its R sisters — hoopR (NBA/MBB), wehoop (WNBA/WBB), cfbfastR (CFB), baseballr (MLB), and fastRhockey (NHL/PWHL) — so the function you know in R is the function you call in Python. The NFL module mirrors the nflverse's nflreadpy, and the package plays well with the wider PySport ecosystem. Beyond aggregation and tidying, the project also exists to make open-source expected-points and win-probability models reproducible and benchmarkable, especially for American football.

New here? Read Ecosystem & philosophy for the design philosophy, the full function-naming paradigm, and how the Python and R packages line up.

Quickstart​

pip install --pre sportsdataverse

--pre installs the 0.2.0 beta, which these docs describe. Without it pip picks the last stable release, 0.1.4.

# Today's NBA scoreboard: a polars DataFrame by default
from sportsdataverse.nba import espn_nba_scoreboard
df = espn_nba_scoreboard() # → polars
print(df.select(["game_id", "home_name", "away_name",
"home_score", "away_score"]).head())
raw = espn_nba_scoreboard(return_parsed=False) # → the raw Dict

# Aaron Judge's 2024 season stats from the official MLB API
from sportsdataverse.mlb import mlb_person_stats, parse_mlb_api_person_stats
judge = parse_mlb_api_person_stats(
mlb_person_stats(person_id=592450, stats="season", season=2024)
)
print(judge.select(["stats_group", "stat_home_runs", "stat_avg"]))

# Connor McDavid's 2024-25 EDGE skating speed profile
from sportsdataverse.nhl import nhl_edge_skater_detail, parse_edge_detail
mcdavid = parse_edge_detail(nhl_edge_skater_detail(8478402))
print(mcdavid.select(["player_first_name_default", "top_shot_speed_metric"]))

Parser-backed wrappers return a polars DataFrame by default; see Polars / pandas parser layer below.

Supported leagues and data sources​

SportLeagueModuleData sources
FootballCollege footballsportsdataverse.cfbESPN (132), sportsdataverse-data releases (76), stats.ncaa.org (1), On3 Recruit Database (82), 247Sports Recruit Database (47), Yahoo Sports Shangrila (7), Fox Sports API (29)
FootballNFLsportsdataverse.nflESPN (125), NFL.com Shield API (22), NFL Pro (32), Sleeper fantasy API (15), PFF Developer API (68), PFF Premium Stats (LEGACY) (46), nflverse data releases (48), sportsdataverse-data releases (23), Fox Sports API (25)
Football (Spring & Canadian)UFLsportsdataverse.football.uflESPN (114): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1, CDN API (cdn.espn.com) 1, Hand-written wrappers 1
Football (Spring & Canadian)XFLsportsdataverse.football.xflESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Football (Spring & Canadian)CFLsportsdataverse.football.cflESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
BasketballNBAsportsdataverse.nbaESPN (126), sportsdataverse-data releases (56), NBA Stats API (130), NBA Official Injury Report (3), Fox Sports API (26), Basketball-Reference (9), RealGM (18), Public model datasets (7)
BasketballWNBAsportsdataverse.wnbaESPN (127), sportsdataverse-data releases (41), WNBA Stats API (113), Fox Sports API (26)
BasketballNBA G Leaguesportsdataverse.nbaglESPN (112), G League Stats API (94)
BasketballMen's college basketballsportsdataverse.mbbESPN (132), sportsdataverse-data releases (36), stats.ncaa.org (136), KenPom (32), Bart Torvik T-Rank (5), Fox Sports API (27)
BasketballWomen's college basketballsportsdataverse.wbbESPN (132), sportsdataverse-data releases (36), stats.ncaa.org (114), Bart Torvik Women's T-Rank (1), Fox Sports API (27), Her Hoop Stats (5)
Basketball (International (ESPN))NBLsportsdataverse.basketball.nblESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (International (ESPN))FIBAsportsdataverse.basketball.fibaESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (International (ESPN))Olympics men's basketballsportsdataverse.basketball.olympics_mbkESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (International (ESPN))Olympics women's basketballsportsdataverse.basketball.olympics_wbkESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (Las Vegas)sportsdataverse.basketball.nbasl_lvESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (Utah)sportsdataverse.basketball.nbasl_utESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (California)sportsdataverse.basketball.nbasl_caESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (Sacramento)sportsdataverse.basketball.nbasl_sacESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (Orlando)sportsdataverse.basketball.nbasl_orlESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (NBA Summer League)NBA Summer League (Golden State)sportsdataverse.basketball.nbasl_gsESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Basketball (International leagues)EuroLeaguesportsdataverse.basketball.euroleagueEuroLeague Competition Engine (15)
Basketball (International leagues)FIBA (digital API and game pages)sportsdataverse.basketball.fiba_hubFIBA digital API and game pages (173): FIBA digital API (GDAP, digital-api.fiba.basketball) 31, FIBA game pages (fiba.basketball, RSC payload parsed) 6, Hand-written wrappers 136
Basketball (International leagues)Genius Sports LiveStatssportsdataverse.basketball.geniusGenius Sports LiveStats (59): (fibalivestats.dcd.shared.geniussports.com, 20+ competitions) 11, Hand-written wrappers 48
Basketball (International leagues)Sportradar Atriumsportsdataverse.basketball.atriumSportradar Atrium embed API (63): (embed-api.eui.connect.sportradar.com) 22, Hand-written wrappers 41
Basketball (International leagues)NBL Australia (Rosetta)sportsdataverse.basketball.nbl_auNBL Rosetta proxy (NBL, WNBL, NBL1) (22)
Basketball (International leagues)Spanish FEBsportsdataverse.basketball.febSpanish FEB LiveStats + baloncestoenvivo (11)
Basketball (International leagues)BBL / DBBL (SCB)sportsdataverse.basketball.scbSCB basketball API (BBL, DBBL) (23)
Basketball (International leagues)Lega Basket Serie Asportsdataverse.basketball.lbaLega Basket Serie A (19)
Basketball (International leagues)ACBsportsdataverse.basketball.acbACB (Liga Endesa) (45)
Basketball (International leagues)Israeli Premier Leaguesportsdataverse.basketball.ibbaIBBA (Israeli Premier League) and Segev Stats (22): IBBA ASMX web service (basket.co.il, Israel) 16, Segev Stats live-stats API (stats.segevstats.com, Israel play-by-play) 6
Basketball (International leagues)W League (Japan)sportsdataverse.basketball.wjblW League (Japan) (19)
Basketball (International leagues)VTBsportsdataverse.basketball.vtbVTB United League (38): Infobasket (Russia) 35, API (api.vtb-league.com) 3
Basketball (International leagues)KBLsportsdataverse.basketball.kblKBL (Korea) (22)
Basketball (International leagues)B.LEAGUEsportsdataverse.basketball.bleagueB.LEAGUE (Japan) (14)
Basketball (International leagues)KZSsportsdataverse.basketball.kzsKZS (Basketball Federation of Slovenia) (23)
Basketball (International leagues)LKLsportsdataverse.basketball.lklLKL (Lithuania) (14)
Basketball (International leagues)TBFsportsdataverse.basketball.tbfTBF app API (BSL, TBL, KBSL) (32)
Basketball (International leagues)CEBLsportsdataverse.basketball.ceblCEBL stats API (12)
Basketball (International leagues)ABA Leaguesportsdataverse.basketball.abaABA League (12)
Basketball (International leagues)EASLsportsdataverse.basketball.easlEASL (third-party sync server over Sportradar DataCore) (18)
Basketball (International leagues)BNXT Leaguesportsdataverse.basketball.bnxtBNXT League (Sportpress) (28)
Basketball (International leagues)TPBLsportsdataverse.basketball.tpblTPBL (Taiwan) (16)
Basketball (International leagues)P. LEAGUE+sportsdataverse.basketball.plgP. LEAGUE+ (Taiwan) and Preciser (19): P. LEAGUE+ site (pleagueofficial.com, Taiwan) 11, P. LEAGUE+ vendor API (api.preciser.io, Taiwan) 7, Hand-written wrappers 1
Basketball (International leagues)CBAsportsdataverse.basketball.cbaCBA data API (China) (27)
Basketball (International leagues)Basketligaensportsdataverse.basketball.dblBasketligaen (Denmark, Sportality) (27): Basketligaen site API (www.basketligaen.dk/api, Denmark; Sportality) 25, Hand-written wrappers 2
HockeyNHLsportsdataverse.nhlESPN (119), sportsdataverse-data releases (33), NHL Web API (28), NHL EDGE (35), NHL Stats REST (21), NHL Records (50), Fox Sports API (25)
HockeyPWHLsportsdataverse.pwhlsportsdataverse-data releases (27), HockeyTech / LeagueStat (25)
Hockey (College hockey)Men's college hockeysportsdataverse.hockey.mchESPN (118): site API (v2) 25, web API (v3) 5, core API (v2) 87, FPI API (fitt v3) 1
Hockey (College hockey)Women's college hockeysportsdataverse.hockey.wchESPN (118): site API (v2) 25, web API (v3) 5, core API (v2) 87, FPI API (fitt v3) 1
Hockey (Minor & junior (HockeyTech))AHLsportsdataverse.hockey.ahlHockeyTech / LeagueStat (11)
Hockey (Minor & junior (HockeyTech))OHLsportsdataverse.hockey.ohlHockeyTech / LeagueStat (11)
Hockey (Minor & junior (HockeyTech))WHLsportsdataverse.hockey.whlHockeyTech / LeagueStat (11)
Hockey (Minor & junior (HockeyTech))QMJHLsportsdataverse.hockey.qmjhlHockeyTech / LeagueStat (11)
Hockey (Minor & junior (HockeyTech))ECHLsportsdataverse.hockey.echlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))SPHLsportsdataverse.hockey.sphlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))CHLsportsdataverse.hockey.chlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))USHLsportsdataverse.hockey.ushlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))BCHLsportsdataverse.hockey.bchlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))AJHLsportsdataverse.hockey.ajhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))SJHLsportsdataverse.hockey.sjhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))OJHLsportsdataverse.hockey.ojhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))CCHLsportsdataverse.hockey.cchlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))GOJHLsportsdataverse.hockey.gojhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))MHLsportsdataverse.hockey.mhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))NOJHLsportsdataverse.hockey.nojhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))VIJHLsportsdataverse.hockey.vijhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))KIJHLsportsdataverse.hockey.kijhlHockeyTech / LeagueStat (12)
Hockey (Minor & junior (HockeyTech))MJHLsportsdataverse.hockey.mjhlHockeyTech / LeagueStat (12)
Hockey (Europe)SIHF (Swiss hockey)sportsdataverse.hockey.sihfSIHF statistics API (33)
Hockey (Europe)DELsportsdataverse.hockey.del_eSports hokejovyzapis (DEL, ICEHL, EIHL, Metal Ligaen) (12)
Hockey (Europe)ICE Hockey Leaguesportsdataverse.hockey.icehleSports hokejovyzapis (DEL, ICEHL, EIHL, Metal Ligaen) (12)
Hockey (Europe)EIHLsportsdataverse.hockey.eihleSports hokejovyzapis (DEL, ICEHL, EIHL, Metal Ligaen) (9)
Hockey (Europe)Metal Ligaensportsdataverse.hockey.metaleSports hokejovyzapis (DEL, ICEHL, EIHL, Metal Ligaen) (8)
Hockey (Europe)Czech Extraligasportsdataverse.hockey.elhhokej.cz (Czech Extraliga) (9): Czech Extraliga (hokej.cz S3 bucket + eSports Media scoreboard) 8, Hand-written wrappers 1
Hockey (Europe)Liigasportsdataverse.hockey.liigaLiiga API (23)
Hockey (Europe)SHLsportsdataverse.hockey.shlSHL site API (29): (www.shl.se/api, Sweden) 27, Hand-written wrappers 2
Hockey (Europe)HockeyAllsvenskansportsdataverse.hockey.haHockeyAllsvenskan site API (12): (hockeyallsvenskan.se, Sweden) 11, Hand-written wrappers 1
Hockey (Europe)National Leaguesportsdataverse.hockey.nlNational League app API (17)
Hockey (Europe)Ligue Magnussportsdataverse.hockey.magnusLigue Magnus (11)
Hockey (Europe)KHLsportsdataverse.hockey.khlKHL (site REST + webcaster API) (25): KHL site REST (www.khl.ru/rest) 14, KHL webcaster mobile API (khl.api.webcaster.pro) 9, Hand-written wrappers 2
Hockey (Europe)VHLsportsdataverse.hockey.vhlVHL (14): (vhlru.ru server-rendered pages, parsed) 13, Hand-written wrappers 1
BaseballMLBsportsdataverse.mlbESPN (123), sportsdataverse-data releases (35), MLB Stats API (79), Baseball Savant (Statcast) (43), Fox Sports API (23)
Baseball (College baseball & softball)College baseballsportsdataverse.baseball.college_baseballESPN (122), stats.ncaa.org (3)
Baseball (College baseball & softball)College softballsportsdataverse.baseball.college_softballESPN (121): site API (v2) 25, web API (v3) 5, core API (v2) 87, FPI API (fitt v3) 1, CDN API (cdn.espn.com) 3
SoccerSoccer (all)sportsdataverse.soccerESPN (112), American Soccer Analysis (16), FotMob (14), UEFA (7), FIFA (9), Football-Data.co.uk (3), OpenLigaDB (11), kloppy open event data (8)
Soccer (Leagues)EPLsportsdataverse.soccer.eplESPN (113): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1, CDN API (cdn.espn.com) 1
Soccer (Leagues)LaLigasportsdataverse.soccer.laligaESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)Bundesligasportsdataverse.soccer.bundesligaESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)Serie Asportsdataverse.soccer.serieaESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)Ligue 1sportsdataverse.soccer.ligue1ESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)MLSsportsdataverse.soccer.mlsESPN (113), MLS official web API (12)
Soccer (Leagues)Liga MXsportsdataverse.soccer.ligamxESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)UEFA Champions Leaguesportsdataverse.soccer.uclESPN (113): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1, CDN API (cdn.espn.com) 1
Soccer (Leagues)UEFA Europa Leaguesportsdataverse.soccer.uelESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)NWSLsportsdataverse.soccer.nwslESPN (112), NWSL official web API (9)
Soccer (Leagues)FIFA Women's World Cupsportsdataverse.soccer.wwcESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
Soccer (Leagues)FIFA World Cupsportsdataverse.soccer.wcESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
More sports & sources (Cricket)Cricketsportsdataverse.cricketESPN (112): site API (v2) 24, web API (v3) 5, core API (v2) 82, FPI API (fitt v3) 1
More sports & sources (Betting & prediction markets)Betting oddssportsdataverse.oddsThe Odds API (11), Polymarket (8), Kalshi (9)
More sports & sources (Cross-sport providers)CBS Sportssportsdataverse.providers.cbsCBS Sports NAPI (82)
More sports & sources (Cross-sport providers)Yahoo Sportssportsdataverse.providers.yahooYahoo Sports Shangrila (107)
More sports & sources (Cross-sport providers)Fox Sportssportsdataverse.providers.foxFox Sports API (33)
More sports & sources (Cross-sport providers)ESPN content (news)sportsdataverse.providers.espn_contentESPN (3)
More sports & sources (Cross-sport providers)TheSportsDBsportsdataverse.providers.thesportsdbTheSportsDB (12)
More sports & sources (Motorsport)Formula 1sportsdataverse.f1Jolpica F1 API (Ergast-compatible) (16): Jolpica F1 API (api.jolpi.ca, Ergast-compatible; CC BY-NC-SA 4.0, 500 requests/hour) 15, Hand-written wrappers 1

Errors​

  • NoDataError — the fetch SUCCEEDED and there is nothing there (a 404, or ESPN's 200-with-code:404 body).
  • AssetFetchError — the fetch FAILED and the answer is unknown (403, rate limit, exhausted retries). Never record this as an empty season.
  • ValueError — a 400 / 422: the request itself is wrong, so retrying cannot help.

The hand-written ESPN scrapers and every generated flat-API getter raise rather than returning an error body or an empty dict.

Asking the package about itself​

sdv-docs is an MCP server over a prebuilt index of this surface — exact columns, function signatures, provider endpoints and released datasets:

claude mcp add sdv-docs -- uvx --from 'sportsdataverse[mcp]>=0.2.0b1' sdv-docs

It needs the mcp extra, sportsdataverse 0.2.0b1 or newer and Python >= 3.10. Without the >=0.2.0b1 pin, uv resolves 0.1.4, which has no sdv-docs.

Polars / pandas parser layer​

The parser layer in sportsdataverse._common_espn_parsers (plus matching modules for the MLB and NHL sibling APIs) turns raw payloads into tidy polars (or pandas) DataFrames. ESPN wrappers with a parser default to return_parsed=True. Pass return_parsed=False to recover the raw Dict, or return_as_pandas=True to get a pandas DataFrame:

from sportsdataverse.nba import espn_nba_team_roster

df = espn_nba_team_roster(team_id=13) # → polars (default)
raw = espn_nba_team_roster(team_id=13, return_parsed=False) # → Dict
pdf = espn_nba_team_roster(team_id=13,
return_as_pandas=True) # → pandas

For NHL / MLB sibling-API wrappers, compose the wrapper with its parser:

from sportsdataverse.nhl import nhl_web_pbp, parse_nhl_web_pbp
df = parse_nhl_web_pbp(nhl_web_pbp(2023030417)) # 331-row polars frame

See the Architecture and Parsers pages for full details.

Deprecated

sportsdataverse.parsed.* is deprecated. The league wrappers already default to return_parsed=True, so call sportsdataverse.nba (etc.) directly; the parsed namespace is a thin alias kept for back-compat. See Migrating to 0.2.0.

Installation​

pip install --pre sportsdataverse (or uv add --prerelease allow sportsdataverse) while 0.2.0 is in beta. The Install & CLI guide covers uv, the optional extras, the supported Python and polars versions, the sdv command line and the sdv-docs MCP server.

Authors​

Citation​

To cite the sportsdataverse-py Python package in publications, use:

BibTeX Citation

@misc{gilani_sdvpy_2021,
author = {Gilani, Saiem},
title = {sportsdataverse-py: The SportsDataverse's Python Package for Sports Data.},
url = {https://py.sportsdataverse.org},
year = {2021}
}