NHL player props by sportsbook, from 2023
NHL player prop lines by sportsbook since May 2023, opening and closing, with each player's history against his line. REST or MCP.
PuckAPI serves NHL player prop lines by sportsbook for the games The Odds API's archive holds, which starts May 3 2023: points, goals, assists, shots on goal, blocked shots, goalie saves and anytime goal scorer, each with the book's line and its over and under prices.
It is built for backtesting props models. One call returns every player's props for a game; another returns one player's lines across a date range; and get_prop_history sets a player's closing line beside what he actually recorded, game by game, with the over rate. Lines carry our NHL player id where the name matches a player in that game's play-by-play. The table below is read from the database.
Coverage by season
Counted from the database on October 10, 2026: finished regular-season and playoff games.
| Season | Games | Covered | Prop lines |
|---|---|---|---|
| 2026-27 | 69 | 4% | 1,210 |
| 2025-26 | 1,394 | 5% | 27,999 |
| 2024-25 | 1,398 | 22% | 128,662 |
| 2023-24 | 1,400 | 27% | 156,041 |
| 2022-23 | 1,400 | 1% | 2,931 |
How to get it
get_player_props, 10 credits a call.
curl -X POST https://mcp.puckapi.com/v1/get_player_props \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"game_id": "2024020500",
"market": "player_shots_on_goal"
}'What comes back
| snapshot_type | opening or closing |
| games | Games the rows come from |
| props[] | One row per book, market and player |
| props[].player_name | The player as the book spells him |
| props[].player_id | Our player id where the name matched a player in that game; null otherwise |
| props[].market | The Odds API market key, e.g. player_shots_on_goal |
| props[].bookmaker | Bookmaker key |
| props[].line | The line; null for anytime goal scorer |
| props[].over_odds | American price on the over (the Yes price for anytime goal scorer) |
| props[].under_odds | American price on the under |
| props[].captured_at | When the book posted this line, always before puck drop |
| count | Rows returned |
Every field and a real response: get_player_props docs.
Questions
How far back do the NHL player props go?
The archive starts May 3 2023, so nothing is earlier, and it holds the games it holds: the table on this page is the live coverage by season, counted from the database.
Which sportsbooks and markets?
Markets: points, goals, assists, shots on goal, blocked shots, goalie saves and anytime goal scorer. Books: DraftKings, FanDuel, BetMGM, ESPN BET, Pinnacle, BetOnline, MyBookie and Bovada, where the archive has them for a game. Pass bookmaker to filter to one.
Opening or closing line?
get_player_props returns the closing line by default, the last one captured before the game starts, or the opening line with snapshot_type: opening. For past games the archive was sampled once near the start, so the two are usually the same capture; an earlier capture exists only where one was taken.
What does it cost?
Priced per game returned: one game's props for every player, or one player's props for each game in a date range, at the credits a call shows above, and get_prop_history is a fixed price a call. estimate_only returns the price of any call before you run it. Every account starts with 500 free credits.
Can I match props to what actually happened?
Yes. get_prop_history takes a player id and a market and returns each game's closing line, what he recorded, and over, under or push. The same id works in the box score tools, so a game's result is one call away.
Can I use it from Claude or ChatGPT?
Yes. PuckAPI is an MCP server as well as a REST API: add one URL to Claude, Cursor or any MCP client and ask for a player's props in plain English.
What it will not do
- The markets above only: no alternate lines, no futures, no live in-game props and no fantasy-score props.
- Pre-game lines only. A capture at or after the start of the game is never served.
- A line carries a player id only when its name matches a player in that game's play-by-play; otherwise the name is still served, without one.
- Nothing before May 3 2023. For past games the opening and closing line are usually one capture, as the archive was sampled once near the start.
Works with
Start with 500 free credits
No card. REST or MCP.