View the API Docs for the formal API structure and types.

Suppose we want to get the player_first_goal player prop odds from an NHL game we know took place on March 7, 2023 (EST). First, we make a request to find all the games that took place that day. This allows us to get the game_id for use in subsequent requests.


{ "league": "nhl", "date": "2023-03-08", "games": [{ "game_id": "c301e5df55bde8d98eb3ae7e3fa67c84", "away_team": "Carolina Hurricanes", "home_team": "Montréal Canadiens", "start_timestamp": "2023-03-08T00:00:00Z" }, { "game_id": "ee5c9178cf8d6f4d7bc81897a76b542d", "away_team": "Columbus Blue Jackets", "home_team": "Pittsburgh Penguins", "start_timestamp": "2023-03-08T00:00:00Z" }, ... ] }

Let's continue with the second game in that result. That is, the one with game_id = ee5c9178cf8d6f4d7bc81897a76b542d. If you want to get more information about the game, make the following request.


{ "league": "nhl", "game": { "game_id": "ee5c9178cf8d6f4d7bc81897a76b542d", "away_team": "Columbus Blue Jackets", "home_team": "Pittsburgh Penguins", "start_timestamp": "2023-03-08T00:00:00Z" } }

Unfortunately, not all markets are offered for each game. But we can see which markets are available will the following request.


{ "game_id": "ee5c9178cf8d6f4d7bc81897a76b542d", "markets": [{ "name": "both_teams_score" }, { "name": "final_score" }, { "name": "goalie_min_saves" }, { "name": "goalie_min_saves_alternate" }, { "name": "goalie_saves_over_under" }, { "name": "goalie_shutout" }, { "name": "has_overtime" }, { "name": "moneyline" }, { "name": "moneyline_regulation" }, { "name": "player_anytime_goal" }, { "name": "player_first_goal" }, ... ] }

Looks like player_first_goal is available! Let's get the most recent odds.


{ "game_id": "ee5c9178cf8d6f4d7bc81897a76b542d", "sportsbooks": [{ "bookie_key": "fanduel", "market": { "market_key": "player_first_goal", "outcomes": [{ "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 4100, "name": "Adam Boqvist", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 4400, "name": "Andrew Peeke", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 1600, "name": "Boone Jenner", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 4400, "name": "Brian Dumoulin", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 1700, "name": "Bryan Rust", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 3100, "name": "Cole Sillinger", "description": "First Goal Scorer" }, { "timestamp": "2023-03-07T15:15:02", "handicap": 0.0, "odds": 2700, "name": "Danton Heinen", "description": "First Goal Scorer" }, ... ] } }] }

Then if you want to get the most recent odds, up to a certain timestamp, specify the end_datetime url parameter like so:


Note that the odds were not set for this market until after the provided timestamp, so the above request returns nothing.

Join the Prop Odds Discord Server!