Data information

Where the numbers come from.

Every stat and odds line on BetProps is built from multiple data sources with a defined refresh cadence. This page is the contract — what we pull, how often, and how we reconcile it.

Sources

Stats

Multiple hockey data sources

Schedule, roster, play-by-play, shift, team and player-reference data are collected from several trusted hockey data feeds and reconciled into one internal model before they appear on the site.

Odds

Seven tracked sportsbooks

Pinnacle, Bet365, Bethard, FanDuel, Betsson, Unibet and BetMGM. Scrapers run continuously and write to an immutable event log so we can replay the line history if a row ever looks wrong.

Stats data

01

Per-game player stats

One row per (player × game × strength state). Strength states cover 5v5 / 5v4 / 5v3 / 4v5 / 3v5 / 4v4 / 3v3 plus empty-net situations, so power-play and shorthanded splits are first-class instead of derived after the fact.

02

Shot geometry

Every shot event (goal / shot-on-goal / missed / blocked) carries coordinates, distance to net, angle and a danger-zone bucket (high / medium / low) so the "average shot distance" you see on a player card is calculated from actual rink coordinates.

03

Season rollups

We keep a season-level table per (player × team × season × regular/playoff) that's recomputed from the per-game rows. That's what powers the season-history table on every player page.

04

Refresh cadence

The stats pipeline runs once a day after the last game finishes. Rosters refresh weekly. If a game's events_synced flag is ever stuck, the next nightly run picks it up — nothing is ever permanently missed.

Odds data

01

Two market layers

Match markets (moneyline, total shots, home/away team totals) and player props (shots on goal, goals, assists, points, PP-points, blocks, hits, faceoffs, first/last goalscorer). Each row is one (bookie, market, line, side) snapshot.

02

Open vs closed

For every market we store the first price we saw (open) and the current price (closed). The "Best" column on the odds board always uses closed prices; the open price feeds the drop monitor.

03

Line reconciliation

When books offer the same prop at different lines (e.g. shots 2.5 vs 3.5), we pick a reference line — Pinnacle's closed line first, then the most-offered line otherwise — and only compare bookies at that line. No bogus apples-to-oranges payouts.

04

Adjusted shots

The player page also surfaces an "adjusted" over/under that scales the player's prop by the team-shots line for tonight's matchup (baseline 29 shots). Useful for filtering noise out of opponent- dependent props.

Questions about a number you see?

Ping us — every odds row links back to the bookie + timestamp we recorded.