Skip to main content
Breaking in 4.0.0
  • Integer id columns are decimal strings — Every id column of integers (id, *_id, game_pk, playerId, …) comes back as exact decimal strings on every surface — parsers, producers, loaders, HockeyTech analytics. Compare and join ids as strings; Number(row.game_id) for a safe number back. (changelog)
  • 400 / 422 raise InvalidParameterError — For every family (it was AssetFetchError), never retried; the message names host, path and status with a redacted excerpt of the body. (changelog)
  • Typed returns — generated row types for parsed: true — TypeScript only. A wrapper's raw payload resolves to unknown (was any); verified endpoints resolve to their row interfaces; the summary dispatchers to ParsedTables. Narrow or cast a raw payload. (changelog)
  • Typed wrapper params and loader rows; strict mode — TypeScript only. A param the endpoint does not have, a missing required path param or a non-boolean bool param is a type error; parser rows are Record<string, unknown>; loader rows are their generated row types. (changelog)
  • Wrapper failures raise NoDataError / AssetFetchError — Instead of raw axios errors. NoDataError = the fetch worked and there is nothing there (404, ESPN { code: 404 }); AssetFetchError = the fetch failed (403 / 429 / 5xx after retries, network). Retries follow DEFAULT_RETRY_STATUSES with backoff. (changelog)

sdv.nwsl — Native (non-ESPN) APIs

Beyond the ESPN surface, sdv.nwsl also wraps the league's own live APIs. Same { parsed: true } contract; each method is exposed under both snake_case and camelCase on sdv.nwsl.

Native API — NWSL (StatsPerform SDP)​

Flat (non-ESPN) wrappers for the official NWSL StatsPerform SDP API. Host: https://api-sdp.nwslsoccer.com/v1/nwsl/football. Each method is exposed under BOTH its snake_case name nwsl_<endpoint> (sdv-py's name, py/R parity) and its camelCase form (canonical) on sdv.nwsl. Pass { parsed: true } to run the payload through its tidy.js parser; omit it for the raw response. Endpoints marked multi-table parse to several frames in sdv-py; with parsed: true they return the default shown in the Parser column (one sub-frame, or every table as a dict), and section: "<name>" selects any other (an unknown name throws, listing the valid ones).

MethodHTTPPath paramsQuery paramsParserAuth
nwsl_competitions / nwslCompetitionshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/competitions—localeparse_nwsl_sdp—
nwsl_match_lineups / nwslMatchLineupshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/matches/{match_id}/lineupsseason_id*, match_id*localeparse_nwsl_lineups — multi-table: section = teams, players (default), staff—
nwsl_matchdays / nwslMatchdayshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/matchdaysseason_id*localeparse_nwsl_sdp—
nwsl_player_stats / nwslPlayerStatshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/stats/playersseason_id*locale, category, role, direction, page, page_num_element → pageNumElementparse_nwsl_stats—
nwsl_season_matches / nwslSeasonMatcheshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/multipleSeasonMatches—season_ids → seasonIds, locale, start_date → startDate, end_date → endDateparse_nwsl_sdp—
nwsl_stages / nwslStageshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/stagesseason_id*localeparse_nwsl_sdp—
nwsl_standings / nwslStandingshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/standings/overallseason_id*locale, order_by → orderBy, directionparse_nwsl_standings—
nwsl_team_stats / nwslTeamStatshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/stats/teamsseason_id*locale, categoryparse_nwsl_stats—
nwsl_teams / nwslTeamshttps://api-sdp.nwslsoccer.com/v1/nwsl/football/seasons/{season_id}/teamsseason_id*localeparse_nwsl_sdp—

Returns — nwsl_competitions / nwslCompetitions​

col_nametypedescription
competition_idcharacterComposite Competition id (Utf8 join key).
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
namecharacterStage display name.
official_namecharacterOfficial team name.
short_namecharacterShort team name.
acronym_namecharacter3-letter team code.

Row type: NwslApiCompetitionsRow (exported from the package root).

Returns — nwsl_match_lineups / nwslMatchLineups​

col_nametypedescription
match_idcharacterComposite Match id (Utf8 join key).
sidecharacter
team_idcharacterComposite Team id (Utf8 join key).
selectioncharacter
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
player_idcharacterComposite Player id (Utf8 join key).
bib_numbercharacterShirt/bib number.
role_labelcharacterHuman position label (e.g. Forward).
roleintegerNumeric position/role code.
media_first_namecharacterMedia-style first name.
media_last_namecharacterMedia-style last name.
shirt_namecharacterName printed on the shirt.
short_namecharacterShort team name.
display_namecharacter
nationalitycharacterNationality name.
nationality_iso_codecharacterISO country code.
is_captainlogicalWhether the player wears the captain's armband.
is_goalkeeperlogicalWhether the player is the goalkeeper.
eventscharacterIn-match events attributed to the player (goals/cards/subs).
tactical_x_positioncharacterFormation-grid X (0-1 normalized canvas).
tactical_y_positioncharacterFormation-grid Y (0-1 normalized canvas).
average_x_positioncharacterAverage pitch x-coordinate of the player over the match.
average_y_positioncharacterAverage pitch y-coordinate of the player over the match.

Row type: NwslApiMatchLineupsRow (exported from the package root).

Returns — nwsl_matchdays / nwslMatchdays​

col_nametypedescription
match_set_idcharacterComposite match-day (match set) id.
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
namecharacterStage display name.
season_idcharacterComposite Season id (Utf8 join key).
competition_idcharacterComposite Competition id (Utf8 join key).
round_idcharacterComposite id of the round.
stage_idcharacterComposite Stage id (nwsl::Football_Stage::\{hex\}).
indexcharacterOrdinal position of the match day within the season.
short_namecharacterShort team name.
match_set_format_idcharacterIdentifier of the match-day format.
typecharacterType discriminator for the record.
start_date_utccharacterSeason window start (ISO-8601 UTC).
end_date_utccharacterSeason window end (ISO-8601 UTC).
matchday_statuscharacterStatus of the match day (scheduled, in progress, completed).

Rows are untyped Row[] (not parity-verified yet).

Returns — nwsl_player_stats / nwslPlayerStats​

col_nametypedescription
rank_labelcharacterLeaderboard rank label (null unless ranked view).
player_idcharacterComposite Player id (Utf8 join key).
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
bib_numbercharacterShirt/bib number.
role_labelcharacterHuman position label (e.g. Forward).
roleintegerNumeric position/role code.
media_first_namecharacterMedia-style first name.
media_last_namecharacterMedia-style last name.
shirt_namecharacterName printed on the shirt.
short_namecharacterShort team name.
display_namecharacter
nationalitycharacterNationality name.
nationality_iso_codecharacterISO country code.
api_call_request_timecharacterServer timestamp the payload was assembled (ISO-8601).
stats_idcharacterStable stat key (e.g. goals, points, Xg).
stats_labelcharacterHuman stat name.
stats_label_abbreviationcharacterShort label (e.g. PTS, GD).
stats_valuecharacterStat value - integer, string, or array (e.g. form).
stats_unitcharacterUnit name (usually null).
stats_unit_abbreviationcharacterUnit abbreviation (usually null).
team_team_idcharacterClub: Composite Team id (Utf8 join key).
team_provider_idcharacterClub: underlying StatsPerform/Opta provider id (e.g. opta:...).
team_short_namecharacterClub: short team name.
team_official_namecharacterClub: official team name.
team_acronym_namecharacterClub: 3-letter team code.
team_acronym_name_localizedcharacterClub: localized 3-letter code.
team_is_team_fakelogicalClub: true for placeholder/TBD teams.
team_media_namecharacterClub: media-style display name.
team_media_short_namecharacterClub: short media-style display name.
team_country_codecharacterClub: ISO country code.
team_team_typecharacterClub: team type (e.g. club).
team_overall_summarycharacterClub: Season summary blurb.
team_stadiumcharacterClub: home venue: \{id, providerId, name, cityName, country, address, capacity, yearOfConstruction, mapsGeoCodeLatitude, mapsGeoCodeLongitude, imagery\}.
team_all_season_imagerycharacterClub: per-season crest variants.
team_editorial_social_facebookcharacterClub editorial: facebook handle or URL.
team_editorial_social_instagramcharacterClub editorial: instagram handle or URL.
team_editorial_social_xcharacterClub editorial: x (Twitter) handle or URL.
team_editorial_social_tik_tokcharacterClub editorial: tikTok handle or URL.
team_editorial_social_you_tubecharacterClub editorial: youTube handle or URL.
team_editorial_social_linked_incharacterClub editorial: linkedIn handle or URL.
team_editorial_website_urlcharacterClub editorial: official website URL.
team_editorial_shop_urlcharacterClub editorial: club shop URL.
team_editorial_tickets_urlcharacterClub editorial: ticketing URL.
team_editorial_club_primary_colourcharacterClub editorial: club primary colour (hex).
team_editorial_club_secondary_colourcharacterClub editorial: club secondary colour (hex).
team_editorial_club_text_colourcharacterClub editorial: club text colour (hex).
editorial_player_role_within_teamcharacterEditorial metadata: editorial description of the player's role in the side.

Row type: NwslApiPlayerStatsRow (exported from the package root).

Returns — nwsl_season_matches / nwslSeasonMatches​

col_nametypedescription
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
season_idcharacterComposite Season id (Utf8 join key).
match_idcharacterComposite Match id (Utf8 join key).
statuscharacterNormalized match status (e.g. PostMatch, PreMatch, Live).
provider_statuscharacterRaw provider status string.
phasecharacterSeason phase (e.g. RegularSeason, Final Series).
match_date_utccharacterKickoff time in UTC (ISO-8601).
match_date_localcharacterKickoff time in venue-local time.
local_time_utc_offsetcharacterVenue UTC offset.
is_unknown_kick_off_timelogicalTrue if kickoff time is TBD.
home_score_pushintegerHome club: live score pushed by the feed for this side.
away_score_pushintegerAway club: live score pushed by the feed for this side.
provider_penalty_score_homecharacterProvider-reported: home side's penalty-shootout score.
provider_penalty_score_awaycharacterProvider-reported: away side's penalty-shootout score.
aggregatecharacterTwo-leg aggregate label.
win_reasoncharacterHow the result was decided.
win_team_idcharacterComposite Team id of the winner (null if draw/unplayed).
previous_legs_resultcharacterAggregate result of previous legs in a two-legged tie.
stadium_idcharacterComposite Stadium id for the venue.
stadium_namecharacterStadium: stage display name.
city_namecharacterCity the stadium is in.
groupcharacter
group_namecharacter
round_idcharacterComposite id of the round.
round_namecharacterName of the round or series this match belongs to.
schedule_statuscharacterScheduling status.
provider_home_scoreintegerProvider-reported: home side's score.
provider_away_scoreintegerProvider-reported: away side's score.
group_idcharacter
sub_leaguecharacterSub-league label.
timecharacter
additional_timecharacterStoppage time added, in minutes.
previous_leg_idcharacterComposite Match id of the previous leg (two-legged ties).
editorial_broadcasters_broadcaster_national1characterBroadcast listing: first national broadcaster carrying the match.
editorial_broadcasters_broadcaster_national2characterBroadcast listing: second national broadcaster carrying the match.
editorial_broadcasters_broadcaster_national3characterBroadcast listing: third national broadcaster carrying the match.
editorial_broadcasters_broadcaster_international1characterBroadcast listing: first international broadcaster carrying the match.
editorial_broadcasters_broadcaster_international2characterBroadcast listing: second international broadcaster carrying the match.
editorial_broadcasters_broadcaster_international3characterBroadcast listing: third international broadcaster carrying the match.
editorial_highlights_urlcharacterEditorial metadata: Match highlights URL.
editorial_highlights_national_urlcharacterEditorial metadata: nationally-geofenced match highlights URL.
editorial_highlights_international_urlcharacterEditorial metadata: internationally-geofenced match highlights URL.
editorial_tickets_urlcharacterEditorial metadata: ticketing URL.
editorial_sponsor_imagecharacterEditorial metadata: sponsor image asset, JSON-encoded.
editorial_theme_nightcharacterEditorial metadata: theme-night promotion attached to the match.
editorial_editorialscharacterEditorial metadata: editorial blurbs attached to the record, JSON-encoded.
home_team_idcharacterHome club: Composite Team id (Utf8 join key).
home_provider_idcharacterHome club: underlying StatsPerform/Opta provider id (e.g. opta:...).
home_short_namecharacterHome club: short team name.
home_official_namecharacterHome club: official team name.
home_acronym_namecharacterHome club: 3-letter team code.
home_acronym_name_localizedcharacterHome club: localized 3-letter code.
home_is_team_fakelogicalHome club: true for placeholder/TBD teams.
home_media_namecharacterHome club: media-style display name.
home_media_short_namecharacterHome club: short media-style display name.
home_country_codecharacterHome club: ISO country code.
home_team_typecharacterHome club: team type (e.g. club).
home_overall_summarycharacterHome club: Season summary blurb.
home_stadiumcharacterHome club: home venue: \{id, providerId, name, cityName, country, address, capacity, yearOfConstruction, mapsGeoCodeLatitude, mapsGeoCodeLongitude, imagery\}.
home_all_season_imagerycharacterHome club: per-season crest variants.
home_editorial_social_facebookcharacterHome club editorial: facebook handle or URL.
home_editorial_social_instagramcharacterHome club editorial: instagram handle or URL.
home_editorial_social_xcharacterHome club editorial: x (Twitter) handle or URL.
home_editorial_social_tik_tokcharacterHome club editorial: tikTok handle or URL.
home_editorial_social_you_tubecharacterHome club editorial: youTube handle or URL.
home_editorial_social_linked_incharacterHome club editorial: linkedIn handle or URL.
home_editorial_website_urlcharacterHome club editorial: official website URL.
home_editorial_shop_urlcharacterHome club editorial: club shop URL.
home_editorial_tickets_urlcharacterHome club editorial: ticketing URL.
home_editorial_club_primary_colourcharacterHome club editorial: club primary colour (hex).
home_editorial_club_secondary_colourcharacterHome club editorial: club secondary colour (hex).
home_editorial_club_text_colourcharacterHome club editorial: club text colour (hex).
away_team_idcharacterAway club: Composite Team id (Utf8 join key).
away_provider_idcharacterAway club: underlying StatsPerform/Opta provider id (e.g. opta:...).
away_short_namecharacterAway club: short team name.
away_official_namecharacterAway club: official team name.
away_acronym_namecharacterAway club: 3-letter team code.
away_acronym_name_localizedcharacterAway club: localized 3-letter code.
away_is_team_fakelogicalAway club: true for placeholder/TBD teams.
away_media_namecharacterAway club: media-style display name.
away_media_short_namecharacterAway club: short media-style display name.
away_country_codecharacterAway club: ISO country code.
away_team_typecharacterAway club: team type (e.g. club).
away_overall_summarycharacterAway club: Season summary blurb.
away_stadiumcharacterAway club: home venue: \{id, providerId, name, cityName, country, address, capacity, yearOfConstruction, mapsGeoCodeLatitude, mapsGeoCodeLongitude, imagery\}.
away_all_season_imagerycharacterAway club: per-season crest variants.
away_editorial_social_facebookcharacterAway club editorial: facebook handle or URL.
away_editorial_social_instagramcharacterAway club editorial: instagram handle or URL.
away_editorial_social_xcharacterAway club editorial: x (Twitter) handle or URL.
away_editorial_social_tik_tokcharacterAway club editorial: tikTok handle or URL.
away_editorial_social_you_tubecharacterAway club editorial: youTube handle or URL.
away_editorial_social_linked_incharacterAway club editorial: linkedIn handle or URL.
away_editorial_website_urlcharacterAway club editorial: official website URL.
away_editorial_shop_urlcharacterAway club editorial: club shop URL.
away_editorial_tickets_urlcharacterAway club editorial: ticketing URL.
away_editorial_club_primary_colourcharacterAway club editorial: club primary colour (hex).
away_editorial_club_secondary_colourcharacterAway club editorial: club secondary colour (hex).
away_editorial_club_text_colourcharacterAway club editorial: club text colour (hex).
match_set_match_set_idcharacterMatch day (round): Composite match-day (match set) id.
match_set_provider_idcharacterMatch day (round): underlying StatsPerform/Opta provider id (e.g. opta:...).
match_set_namecharacterMatch day (round): stage display name.
match_set_season_idcharacterMatch day (round): Composite Season id (Utf8 join key).
match_set_competition_idcharacterMatch day (round): Composite Competition id (Utf8 join key).
match_set_round_idcharacterMatch day (round): Composite id of the round.
match_set_stage_idcharacterMatch day (round): Composite Stage id (nwsl::Football_Stage::\{hex\}).
match_set_indexcharacterMatch day (round): ordinal position of the match day within the season.
match_set_short_namecharacterMatch day (round): short team name.
match_set_match_set_format_idcharacterMatch day (round): identifier of the match-day format.
match_set_typecharacterMatch day (round): type discriminator for the record.
match_set_start_date_utccharacterMatch day (round): Season window start (ISO-8601 UTC).
match_set_end_date_utccharacterMatch day (round): Season window end (ISO-8601 UTC).
match_set_matchday_statuscharacterMatch day (round): status of the match day (scheduled, in progress, completed).

Row type: NwslApiSeasonMatchesRow (exported from the package root).

Returns — nwsl_stages / nwslStages​

col_nametypedescription
stage_idcharacterComposite Stage id (nwsl::Football_Stage::\{hex\}).
namecharacterStage display name.

Rows are untyped Row[] (not parity-verified yet).

Returns — nwsl_team_stats / nwslTeamStats​

col_nametypedescription
rank_labelcharacterLeaderboard rank label (null unless ranked view).
team_idcharacterComposite Team id (Utf8 join key).
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
short_namecharacterShort team name.
official_namecharacterOfficial team name.
acronym_namecharacter3-letter team code.
acronym_name_localizedcharacterLocalized 3-letter code.
is_team_fakelogicalTrue for placeholder/TBD teams.
media_namecharacterMedia-style display name.
media_short_namecharacterShort media-style display name.
country_codecharacterISO country code.
team_typecharacterTeam type (e.g. club).
overall_summarycharacterSeason summary blurb.
stadiumcharacterHome venue: \{id, providerId, name, cityName, country, address, capacity, yearOfConstruction, mapsGeoCodeLatitude, mapsGeoCodeLongitude, imagery\}.
all_season_imagerycharacterPer-season crest variants.
stats_idcharacterStable stat key (e.g. goals, points, Xg).
stats_labelcharacterHuman stat name.
stats_label_abbreviationcharacterShort label (e.g. PTS, GD).
stats_valuecharacterStat value - integer, string, or array (e.g. form).
stats_unitcharacterUnit name (usually null).
stats_unit_abbreviationcharacterUnit abbreviation (usually null).
editorial_social_facebookcharacterEditorial metadata: facebook handle or URL.
editorial_social_instagramcharacterEditorial metadata: instagram handle or URL.
editorial_social_xcharacterEditorial metadata: x (Twitter) handle or URL.
editorial_social_tik_tokcharacterEditorial metadata: tikTok handle or URL.
editorial_social_you_tubecharacterEditorial metadata: youTube handle or URL.
editorial_social_linked_incharacterEditorial metadata: linkedIn handle or URL.
editorial_website_urlcharacterEditorial metadata: official website URL.
editorial_shop_urlcharacterEditorial metadata: club shop URL.
editorial_tickets_urlcharacterEditorial metadata: ticketing URL.
editorial_club_primary_colourcharacterEditorial metadata: club primary colour (hex).
editorial_club_secondary_colourcharacterEditorial metadata: club secondary colour (hex).
editorial_club_text_colourcharacterEditorial metadata: club text colour (hex).

Row type: NwslApiTeamStatsRow (exported from the package root).

Returns — nwsl_teams / nwslTeams​

col_nametypedescription
team_idcharacterComposite Team id (Utf8 join key).
provider_idcharacterUnderlying StatsPerform/Opta provider id (e.g. opta:...).
short_namecharacterShort team name.
official_namecharacterOfficial team name.
acronym_namecharacter3-letter team code.
acronym_name_localizedcharacterLocalized 3-letter code.
is_team_fakelogicalTrue for placeholder/TBD teams.
media_namecharacterMedia-style display name.
media_short_namecharacterShort media-style display name.
country_codecharacterISO country code.
team_typecharacterTeam type (e.g. club).
overall_summarycharacterSeason summary blurb.
all_season_imagerycharacterPer-season crest variants.
stadium_idcharacterComposite Stadium id for the venue.
stadium_provider_idcharacterStadium: underlying StatsPerform/Opta provider id (e.g. opta:...).
stadium_namecharacterStadium: stage display name.
stadium_city_namecharacterStadium: city the stadium is in.
stadium_countrycharacterStadium: country the stadium is in.
stadium_addresscharacterStadium: street address of the stadium.
stadium_capacityintegerStadium: seating capacity of the stadium.
stadium_year_of_constructionintegerStadium: year the stadium was built.
stadium_maps_geo_code_latitudecharacterStadium: latitude in decimal degrees.
stadium_maps_geo_code_longitudecharacterStadium: longitude in decimal degrees.
editorial_social_facebookcharacterEditorial metadata: facebook handle or URL.
editorial_social_instagramcharacterEditorial metadata: instagram handle or URL.
editorial_social_xcharacterEditorial metadata: x (Twitter) handle or URL.
editorial_social_tik_tokcharacterEditorial metadata: tikTok handle or URL.
editorial_social_you_tubecharacterEditorial metadata: youTube handle or URL.
editorial_social_linked_incharacterEditorial metadata: linkedIn handle or URL.
editorial_website_urlcharacterEditorial metadata: official website URL.
editorial_shop_urlcharacterEditorial metadata: club shop URL.
editorial_tickets_urlcharacterEditorial metadata: ticketing URL.
editorial_club_primary_colourcharacterEditorial metadata: club primary colour (hex).
editorial_club_secondary_colourcharacterEditorial metadata: club secondary colour (hex).
editorial_club_text_colourcharacterEditorial metadata: club text colour (hex).

Row type: NwslApiTeamsRow (exported from the package root).

Generated by tools/codegen/generate.mjs from tools/codegen/endpoints/nwsl_api.yaml (vendored from sdv-py) — see How this library is built.