NHL PLAYER PROPSLive · Stanley Cup Finals
NHL Player Props API
Per-player props live across 5 sportsbooks and 6 markets: shots on goal, goals, assists, points, blocked shots, and power play points. Cross-book best-line aggregation in the same canonical schema as the rest of the API.
1,000 req/day on the free plan (2,000 with GitHub). No credit card.
5,168 prop lines live across BetMGM, Caesars, DraftKings, FanDuel, BetRivers.
What you'll get
The same primitives that make /v1/nba/players/{id}/props useful, brought to NHL. One free key, one shape.
Cross-book best line
Surface the best over and best under per market in a single request, with the book that posted the price.
Hit rate dashboards
Render last-10 and season-long hit rate per market so users see the bet history at a glance.
Unified player_id
Props join cleanly to /v1/nhl/games/{id}/matchup, player streaks, rolling stats — one id everywhere.
Bets Chat ready
JSON envelope mirrors /v1/nba/players/{id}/props, so the Bets Chat integration ports directly with no schema rework.
Six core markets
Shots on goal, goals, assists, points, blocked shots, and power play points. Audited markets, no novelty clutter.
Live for the Stanley Cup Finals
5,168 prop lines refresh continuously across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers.
Markets covered
Six core NHL markets live today. Audited, no novelty props.
| Market | Description |
|---|---|
shots_on_goal | Total shots on goal in the game |
goals | Goals scored |
assists | Assists |
points | Goals + assists (the canonical NHL "points" combo) |
blocked_shots | Blocked shots |
power_play_points | Points (goals + assists) scored while on the power play |
Endpoint shape
One call returns a single market for the player: the current line across books (best book per side) plus a rolling last-N-games hit rate for that market.
GET /v1/nhl/players/:id/props?market=shots_on_goal
{
"data": {
"player": {
"bbs_id": "84977260-f7d7-48af-857e-ea355ccdb266",
"name": "Tage Thompson",
"position": "C",
"team": { "bbs_id": "37766f6e-e138-4f4a-a845-cf3bf06d00f4", "name": "Buffalo Sabres", "abbr": "BUF" }
},
"market": "shots_on_goal",
"current_line": {
"line": 3.5,
"over_juice": -115,
"under_juice": -114,
"sportsbook": "balldontlie_fanduel",
"sportsbook_display": "FanDuel",
"fetched_at": "2026-06-02T06:07:21.726Z",
"all_books": [
{ "sportsbook": "balldontlie_betmgm", "display": "BetMGM", "line": 3.5, "over_juice": -105, "under_juice": -130 },
{ "sportsbook": "balldontlie_draftkings", "display": "DraftKings", "line": 3.5, "over_juice": -135, "under_juice": 105 },
{ "sportsbook": "balldontlie_fanduel", "display": "FanDuel", "line": 3.5, "over_juice": -115, "under_juice": -114 }
]
},
"hit_rate": {
"lookback_games": 20,
"games_with_box_score": 7,
"over_hits": 4,
"under_hits": 3,
"pushes": 0,
"hit_pct_over": 0.5714,
"samples": [
{ "match_id": "529e7cb8-8e2a-4554-a0ef-88bbfd21d510", "game_date": "2025-10-22", "opponent": null, "value": 5, "result": "over" },
{ "match_id": "9f9ba07e-1bac-45b6-bf65-d22d4020c566", "game_date": "2025-10-20", "opponent": null, "value": 3, "result": "under" }
]
},
"as_of": "2026-06-02T10:06:32.049Z"
},
"meta": { "cached": false, "cache_age_ms": 0 }
}SDK call
One call returns every market the player has a posted line on tonight. The cross-book attribution lands in the same payload.
- · Six markets returned in one call
- · Cross-book best-line attribution per market
- · Same canonical envelope as the rest of the API
// One market per call: best line across books + a rolling hit rate.
const url =
'https://api.bigballsdata.com/v1/nhl/players/' + playerId +
'/props?market=shots_on_goal&lookback=20';
const res = await fetch(url, { headers: { 'x-api-key': process.env.BBS_API_KEY! } });
const { data } = await res.json();
console.log(data.market, data.current_line?.line, 'best:', data.current_line?.sportsbook_display);
console.log('over hit rate:', data.hit_rate?.hit_pct_over, 'on', data.hit_rate?.games_with_box_score, 'games');
for (const b of data.current_line?.all_books ?? []) {
console.log(' ', b.display, b.line, b.over_juice, '/', b.under_juice);
}What will it cost
Free tier matches /v1/nba/players/{id}/props: 1,000 req/day on the free plan, 2,000 with GitHub connected. No credit card. Paid tiers (Solo / Trio / Edge / Pro) carry forward with the rest of the API.
Frequently asked
- How do I call the NHL Player Props endpoint?
- GET /v1/nhl/players/:id/props?market=shots_on_goal with your API key in the Authorization header or as ?api_key=. One call returns one market: data.current_line (line, over_juice / under_juice, the best book per side, and all_books) plus data.hit_rate (over_hits / under_hits, hit_pct_over, games_with_box_score, and per-game samples). Live today across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers.
- Will it be on the free tier?
- Yes. NHL Player Props will match /v1/nba/players/{id}/props on the free tier (1,000 req/day, 2,000 if you connect GitHub). No credit card to start.
- Which sportsbooks does it cross-reference?
- The same books the rest of the API normalises across. The response includes a books_count plus the specific book that posted the best over and the best under per market, so the source attribution is in the payload, not buried in a separate call.
- How fresh are the prices?
- Prices refresh continuously from the upstream books and the response is canonicalised to the BBS schema. The first request after a price change pays the upstream-fetch latency; subsequent calls within the cache window return cached data with cache_age_ms surfaced in meta.
Also on this sport
Stats reference
Free calculators
Get an API key now
The endpoint is live across BetMGM, Caesars, DraftKings, FanDuel, and BetRivers. 5,168 prop lines refreshing through every Stanley Cup Finals game.