Analysts and researchers
Run a hockey study without spending a month on ingestion
Play-by-play with coordinates for every NHL game since 2010-11, queryable without building a scraper first.
Most hockey research dies in the data-collection phase. The public play-by-play is available, but turning it into something you can query means writing a scraper, handling the 2010-to-2019 API change, normalising coordinates that flip between periods, and reconciling team abbreviations across three relocations.
All of that is upstream of the question you actually wanted to ask, and none of it is the interesting part.
What to build
Shot quality over a season
Pull every unblocked attempt with its coordinates, bin by distance and angle, and compare a team's chance profile with the league. The coordinates are already normalised to one attacking end, which is the step that usually eats a week.
Goalie evaluation that survives peer review
GSAX is returned directly, calibrated within each season so league GSAX sums to zero and a goalie is measured against his own era. If you would rather build your own model, get_shot_map gives you the raw inputs.
Possession and expected goals by team-season
Corsi, Fenwick and expected goals for and against, at 5v5, for every team in every season held. Enough to replicate most published possession work without touching play-by-play at all.
What it will not do
- Play-by-play starts at 2010-11. There is nothing earlier, and a query for an earlier season returns empty rather than an error.
- The expected-goals model slightly over-rates the most dangerous chances — about 20.5% predicted against 17.5% actual in the top decile of shots.
- Odds coverage begins in 2019-20 and that first season is sparse, about 9% of games.
Worth reading first
Start with 500 free credits
No card. REST or MCP.