NHL skater expected goals by on-ice strength, 2014-2025 (Edge)
Season-aggregate skater expected goals broken out by ON-ICE STRENGTH STATE - even strength, power play, short-handed and everything else - for twelve complete seasons, 2014 through 2025.
NOT a second answer to GET /v1/nhl/xg-leaders, which stays free and unchanged. That route is OUR OWN shot-level model: current, updating daily, and deliberately strength-state agnostic. This one adds the two things that model does not have - ten further seasons of history, and the strength-state split itself.
A FROZEN ARCHIVE, AND THE RESPONSE SAYS SO. These rows have no writer. data.as_of carries the real data date for the exact slice served, scoped to the same season and game_type, so staleness is readable from the response rather than from a changelog. The 2026-27 season is not present and will not be added. If you want the current season, use GET /v1/nhl/xg-leaders.
player.id is a Big Balls player UUID where we have bridged the athlete and null where we have not; player.name is always present. Unbridged rows are returned rather than dropped, so filter on player.id yourself if you need only bridged athletes.
Requires the Edge plan or higher.
Request
- Base URL: https://api.bigballsdata.com
- URL: https://api.bigballsdata.com/v1/nhl/skaters/xg-splits
- Auth: one of:
- API key in header x-api-key
- HTTP bearer
Query parameters
Season LABEL: the year the season starts. 2014 to 2025 are present; later seasons are not and will not be added. Defaults to the newest season held for the requested game_type.
On-ice strength state. 5on4 is the player's team on the power play, 4on5 short-handed, other every remaining state.
Team abbreviation, case-insensitive (e.g. EDM).
Response
ok. { data, meta } with a route-local cache stamp. data.as_of is the real data date for the slice served, taken from the rows themselves.
Changes
No recorded changes to this operation across all 3 revisions of this API.