Data
Data sources, update schedule and quality checks
Every number on the site traces back to one of a handful of sources. This page lists them, says how often each is refreshed, and describes the checks a game has to pass before it reaches a page.
Updated
How it's calculated
| Source | What we use | Seasons |
|---|---|---|
| NHL play-by-play | Every event: faceoffs, shots, hits, turnovers, penalties, goals, with coordinates and the strength code | 2017-18 on |
| NHL shift charts | Every shift of every player: who was on the ice each second | 2017-18 on |
| NHL boxscores | Official per-player ice time, shots, hits and blocks: the reference for our checks | 2017-18 on |
| NHL HTML game reports | Fallback for games whose shift chart is missing or broken | 2017-18 on |
| NHL stats API | Master schedule, per-game shot-attempt totals for validation, player handedness | 2017-18 on |
| NHL EDGE | Season-level skating speed and distance, shot speed, zone time, 17-area shot locations | 2021-22 on |
| NHL EDGE goal tracking | A short tracking clip for every goal, from which we derive numbers only | 2023-24 on |
| LineupExperts | Fantasy projections, goalie start certainty, team defence rankings by position, back-to-back and off-night flags, news headlines | Current season |
- Pages never call the NHL during a visit. Ingest jobs fetch the data, check it, store it in our database, and then refresh the affected pages.
- The current season is 2026-27, with 84 games per team (1,344 regular-season games).
- Seasons are labelled like 2025-26 and include the playoffs unless a page says otherwise.
Completed games per season in the archive
Research sample: 200 games from 2025-26 (2025020500–699)
From 868 regular-season games in the shortened 2020-21 season to 1,312 in full 32-team seasons, plus 82 to 130 playoff games each year.
Worked example
One game's checks
Real research numbersAfter a game goes final, it is fetched, rebuilt and compared with the boxscore. It passes only if every check holds.
- Goals and shots on goal per team from the play-by-play equal the official boxscore exactly (shootout excluded).
- Each player's ice time from shifts is within 5 s of the boxscore (a warning between 5 and 60 s; a failure beyond 60 s triggers a refetch and then the HTML fallback).
- At least 17 players per team have shifts, and there are no shifts with missing durations.
- Skater counts from shifts disagree with the NHL's strength code on fewer than 3% of events (5% sends the game for review).
- Totals add up: every player's 5v5 ice time sums to five times the team's 5v5 time, and team shot attempts equal the sum of individual attempts.
Games that fail are retried with backoff and flagged for review; pages show a "partial data" note for any game whose on-ice data is unavailable.
Update schedule
| Data | Refresh |
|---|---|
| Completed games (play-by-play, shifts, boxscore) | Several times overnight after games end, then re-checked the next day, because the NHL corrects shift charts overnight |
| Starting-goalie confirmations (LineupExperts) | Every 15 minutes through game days |
| NHL EDGE season data | Nightly, in batches |
| Fantasy projections and news (LineupExperts) | Through the day |
| League constants (zone values, penalty value, schedule effects) | Recomputed each season |
| xG model | Retrained each August; frozen during the season |
Known issues in the source data
- Blocked shots: the feed records the block location, not the shot location, and attributes zone from the blocker's point of view. We derive the shooting team and zones ourselves.
- 2017-18 play-by-play lacks the field that says which net each team defends, so we infer direction from shot locations each period.
- Some shift charts contain rows from another game; we drop rows whose team is not in the game.
- Turnover and hit recording changed across the league in 2024-25; see the Turnover Ledger for how we handle it.
- Missed-shot categories changed in 2023-24, and shots blocked by a teammate are flagged from 2024-25. The NHL's own shot-attempt totals credit teammate-blocked shots to the wrong team; ours don't, so our totals can differ by one or two.
Credits
- Play-by-play, shift charts, boxscores and schedules: National Hockey League.
- Skating, shot-speed and shot-location data: NHL EDGE.
- Goal anatomy numbers: Tracking-derived via NHL EDGE.
- Projections, goalie certainty, defence rankings and news: LineupExperts.
- Scoring-chance zones follow the War-on-Ice definition as used by Natural Stat Trick. Score and venue adjustment follows Micah Blake McCurdy's method with our own coefficients. Flurry adjustment follows MoneyPuck's published approach.
Edgehalla is not affiliated with the NHL, NHL EDGE, Natural Stat Trick or MoneyPuck. All published numbers are computed from our own copies of the source data.
Reliability
Source quality is measured by agreement with official totals, checked on every game.
| Measure | Split-half r | Sample | Verdict |
|---|---|---|---|
| On-ice counts vs NHL strength code99.2% of events, 99.7% of shots. | — | 200 games, 2025-26 | Stable |
| Player ice time vs boxscoreWithin 5 s, or the game is flagged. | — | Every game | Stable |
| 5v5 shot attempts vs NHL oracleTarget: 90% of players exact, all within ±3. | — | Every game | Stable |
Split-half r: we split each sample in two (for example odd and even games) and correlate the two halves across players or teams. Near 0 means the stat is mostly noise; near 1 means it is a stable trait.
Limitations
- Before the full backfill completes, some older seasons may be partly loaded; pages note partial coverage.
- Scorer-recorded events (hits, giveaways, takeaways, blocks, missed-shot locations) carry human error and arena bias, especially before 2024-25.
- NHL EDGE data is season-level with some recent-game lists, so it can't be split by game or opponent.
- LineupExperts projections occasionally arrive without some categories (such as power-play goals or faceoffs) for some players.
FAQ
Where does Edgehalla get its NHL data?
From the NHL's public play-by-play, shift charts and boxscores for game data, NHL EDGE for tracking-based season data, and LineupExperts for projections, goalie confirmations and news.
How far back does your data go?
Play-by-play and shift data from 2017-18, including playoffs. NHL EDGE season data starts in 2021-22 and goal tracking in 2023-24.
How quickly are games added?
Games are ingested several times overnight after they end and re-checked the next day, because the NHL corrects shift charts overnight.
Why might your numbers differ slightly from NHL.com or other sites?
Shift charts round to whole seconds, so an attempt at a line change can be credited to different players on different sites. We also count shots blocked by a teammate for the shooting team, which the NHL does not. Differences are usually one or two attempts per player per game.