get_market_odds
Opening and closing lines by sportsbook for the period and regulation-result markets (history from May 2023)
Use it when you need a game's period or regulation-result lines as history: each sportsbook's opening and closing price on the regulation result (three-way), the 1st period result and puck line, or the 1st, 2nd and 3rd period totals.
Parameters
game_idstringrequired- Game id from get_schedule or get_games.
marketenum: h2h_3_way | totals_p1 | totals_p2 | totals_p3 | h2h_p1 | spreads_p1required- The market: h2h_3_way (regulation result: home, draw or away after 60 minutes), totals_p1 (1st period total goals), totals_p2 (2nd period total goals), totals_p3 (3rd period total goals), h2h_p1 (1st period result: home, draw or away), spreads_p1 (1st period puck line)
bookmakerstringoptional- One bookmaker key, e.g. draftkings, fanduel, pinnacle.
estimate_onlybooleanoptional- Return what this call would cost, without charging or running it.
Notes
- Over MCP, ask for it in plain English and the client calls
get_market_oddsitself. Point any MCP client athttps://mcp.puckapi.com/mcp?key=YOUR_API_KEY. - Each call costs 10 credits, taken before it runs and refunded if the server errors.
- Not the call you need? Find the right call by what you are trying to answer.
Request
curl -X POST https://mcp.puckapi.com/v1/get_market_odds \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"game_id": "2024020005",
"market": "totals_p1"
}'Response
{
"game_id": "2024020005",
"market": "totals_p1",
"label": "1st period total goals",
"scheduled_start": "2024-10-09T02:00:00.000Z",
"books": [
{
"bookmaker": "betmgm",
"opening": [
{
"outcome": "Over",
"point": 1.5,
"price": -130
},
{
"outcome": "Under",
"point": 1.5,
"price": 100
}
],
"opening_captured_at": "2024-10-09T01:35:38.000Z",
"closing": [
{
"outcome": "Over",
"point": 1.5,
"price": -130
},
{
"outcome": "Under",
"point": 1.5,
"price": 100
}
],
"closing_captured_at": "2024-10-09T01:35:38.000Z",
"minutes_before_start": 24.4
},
{
"bookmaker": "betonlineag",
"opening": [
{
"outcome": "Over",
"point": 1.5,
"price": -135
},
{
"outcome": "Under",
"point": 1.5,
"price": 115
}
],
"opening_captured_at": "2024-10-09T01:35:38.000Z",
"closing": [
{
"outcome": "Over",
"point": 1.5,
"price": -135
},
{
"outcome": "Under",
"point": 1.5,
"price": 115
}
],
"closing_captured_at": "2024-10-09T01:35:38.000Z",
"minutes_before_start": 24.4
},
{
"bookmaker": "bovada",
"opening": [
{
"outcome": "Over",
"point": 1.5,
"price": -135
},
{
"outcome": "Under",
"point": 1.5,
"price": 105
}
],
"opening_captured_at": "2024-10-09T01:35:38.000Z",
"closing": [
{
"outcome": "Over",
"point": 1.5,
"price": -135
},
{
"outcome": "Under",
"point": 1.5,
"price": 105
}
],
"closing_captured_at": "2024-10-09T01:35:38.000Z",
"minutes_before_start": 24.4
}
],
"count": 7
}Response fields
game_idstring- The game
marketstring- The market asked for
labelstring- The market in plain words
scheduled_startstring | null- The game's scheduled start (ISO 8601 UTC)
books[]array- One row per sportsbook
books[].openingarray- The first line captured: outcome, point and American price for each side
books[].opening_captured_atstring- When the opening line was captured
books[].closingarray- The last line captured before the game started; the same as the opening where only one capture was taken
books[].closing_captured_atstring- When the closing line was captured
books[].minutes_before_startnumber | null- Minutes from the closing capture to the scheduled start
Related endpoints
Returns the game_id this one takes.
Upcoming games for the next N days. Defaults to 7 days.
Returns the game_id this one takes.
Query games by date range, team, season, game state, or type.
Takes the game_id this one returns.
Full game detail including odds snapshots and the goalies who started, with time on ice.
Takes the game_id this one returns.
Every player's shifts in one NHL game, to the second, with the official boxscore time on ice and plus/minus.
Try it
500 free credits every month: 50 calls to get_market_odds, and no card.