SHOTLAB2.9.2
Real-data sports research • built for mobile
Checking feed
Pregame score projections, game totals, moneyline probabilities, team shots and player prop projections, and live/pregame sportsbook odds. Shot counts can change sharply during a match. The original shot estimate is only a pregame baseline; live updates incorporate current match pace. Experimental estimates, not guaranteed picks. Estimates use past game results; they are not yet backtested or calibrated and do not account for all injuries, lineup changes or market information. If the data is missing, the model says so.
01 / Select a game

Choose your sport

02 / Pick a matchup

Games

Not loaded
Select your sport and date, then load games.
Games will appear here automatically.
03 / Live & pregame sportsbook odds

Sportsbook odds board

Not connected

Compare actual available US sportsbook odds for today's and upcoming games. In-play prices appear when bookmakers offer them; markets may be suspended or unavailable. Refresh on demand to protect your API credits. No bets are placed.

Requires a private ODDS_API_KEY secret on your Cloudflare Pages project. Free plan has 500 monthly credits; one league / 3 markets / US region generally uses 3 credits.
Select a sport above, then tap “Fetch sportsbook odds.” No fake odds are displayed.

Source: The Odds API. “Started” is inferred from scheduled kickoff, not independently verified live game status. A displayed price may move before a wager is accepted. Soccer H2H usually means regulation-time three-way result (including draw). PGA is limited to majors, not every weekly event.

07 / Feedback & accuracy

Log what actually happened

ShotLab automatically saves the first pregame score, game-total, team-shot and player-prop forecasts it calculates in this browser. After a game finishes, add the actual stats to measure prediction error. You can also manually log older predictions. Results are stored on this device only; export a backup before clearing Safari data or changing devices. This is tracking, not automatic model retraining.

Checking whether this browser can save your forecasts…
No recorded results yet.
November 12 • final shots (published post-match figures)

Turkey 10, Belgium 12 • Spain 21, Czechia 13 • England 14, Croatia 12 • France 18, Italy 11. These figures come from a third-party post-match scoreboard and may differ from Opta/bookmaker counts.

Sources: Turkey · Spain · England · France

Nov 12 final shot counts were sourced from published post-match tables. This update preserves your original projections and fills in actual shots without replacing existing entries. The source counts can differ from your sportsbook’s official settlement provider.

Saved forecasts

0 tracked

After saving, your forecast should appear below with a verified confirmation. Reopen this exact website address to see the same stored results. Safari, private tabs, a different Cloudflare URL, and an installed Home Screen app can have separate storage. Download an export backup regularly.

How ShotLab's projections work and what they're missing

During live soccer games, ShotLab displays a separate in-play expected final shots total based on verified current shots plus a pace update. It never presents a pregame number as an in-play forecast. A 2-shot first half is meaningful evidence against a high pregame forecast. The model is not calibrated and may miss tactical changes, red cards, and score effects.

NBA, NFL, NHL, NCAA basketball, NCAA FBS football and MLB winner/score estimates use recent completed games, weighted team scoring and opponent scores, a shrinkage-adjusted scoring margin and a modest assumed home advantage. The predicted margin is consistent with the estimated winner probability. Full-game totals use the sum of projected scores; over/under probability uses recent-game score variability and a heuristic minimum SD (unvalidated). The soccer model uses recent goals scored and conceded to estimate goal rates, then computes home/draw/away outcomes with a Poisson model. Soccer team shots / shots on target, NHL team shots on goal, and basketball field-goal attempts are projected from box-score data where available, including combined totals. NBA, NHL and NFL individual player props use recent completed player box scores, with no claims that starters or playing time are confirmed. NFL and NCAA football have no literal shots market, and PGA uses tournament leaderboards rather than two-team score/moneyline projections. NHL shootouts can make official scoreboard goals differ from how sportsbooks settle totals. Missing source data never becomes a fabricated projection.

Feedback log: Logged prediction errors measure historical performance; they do not automatically update model coefficients or prove future accuracy. Old/manual entries cannot verify that a number was recorded before the match.

Samples are limited to games before the selected matchup, so future games do not leak into a retrospective projection. 2.9 checks additional box-score signals and rest, but injuries, confirmed starters, detailed lineup changes, weather impacts, opponent-adjusted strength and tactical changes are not comprehensively modeled. Optional what-if changes are user-supplied and unvalidated. Probabilities have not been validated out of sample. Never treat high displayed numbers as a reason to bet or chase losses.

Data: unofficial ESPN site data endpoints, accessed directly. Feeds can be blocked, go offline or change format. The app will display the error rather than fabricate a result. Most actions need an active internet connection.