Game Odds API Documentation
Description
This endpoint returns all the available betting odds for a specific game, team, player, sportsbook or market. Including American odds, decimal & fractional.
You'll need a license key to use OpticOdds' API. You can get one by contacting us at www.opticodds.com.
API Endpoint
https://api.opticodds.com/api/v2/game-odds
Parameters
key
(required)
Your OpticOdds API license key.
You can only pass in five or less game_id
, player_id
, or team_id
per request.
A game_id
, player_id
, or team_id
is required per request.
A sportsbook
is required per request.
game_id
You can pass in multiple of this parameter.
The game_id you want to receive odds for (e.g. 13602-17233-23-06
)
team_id
You can pass in multiple of this parameter.
The team_id you want to receive odds for (e.g. EDF03AD3C346
)
player_id
You can pass in multiple of this parameter.
The player_id you want to receive odds for (e.g. E61E5ECAC811
)
The OpticOdds game ID you want to receive odds for (e.g. 39341-78014-2022-01-17
)
sportsbook
(required)
You can pass in multiple of this parameter.
The sportsbook(s) you want to receive odds for. You must pass at least one sportsbook. We support the following:
10bet
1XBet
22bet
5Dimes
888sport
Action 24/7
Bally Bet
Barstool
BC.GAME
bet365
BET99
Bet America
Betano
BetAnySports
Betcris
BetDEX
BetDSI
Betfair
Betfair Exchange
Betfred
betJACK
Betly
BetMGM
Betnacional
BetNow
BetOnline
BetonUSA
BetOpenly
betPARX
Betplay
betr
Bet Right
BetRivers
Betr Picks
Betsafe
Betsson
Betstar
BetUK
BetUS
BetVictor
Betway
betwhale
BetWildwood
BlueBet
Bodog
BookMaker
Bookmaker
BoomBet
Boom Fantasy
Borgata
Bovada
bwin
Caesars
Casumo
Chalkboard
Circa Sports
Circa Vegas
ClutchBet
Codere
ComeOn!
Coolbet
Coral
Crab Sports
Dabble
Dafabet
DAZN Bet
Desert Diamond
DraftKings
DRF
Elite Sportsbook
ESPN BET
Everygame
Fanatics
FanDuel
FireKeepers
Fliff
Four Winds
FOX Bet
Galera.bet
GambetDC
GGBet
Golden Nugget
Hard Rock
Heritage
HotStreak
Intertops
Jazz Sports
Jock MKT
JuiceBet
Kutt
Ladbrokes
LeoVegas
Looselines
LowVig
MaximBet
Mise-o-jeu
Mojo Fantasy
Monkey Knife Fight
Mr Green
MyBookie
Neds
Nitrogen
No House Advantage
NorthStar Bets
Novig
OddsJam Algo Odds
Paddy Power
Palmerbet
ParlayPlay
partypoker
Picklebet
Pinnacle
Pinny
Play Alberta
Play Eagle
Play Maverick
PlayNow
PlayUp
PointsBet
PowerPlay
PrizePicks
Proline
Prophet Exchange
Prophet X
Rebet
Resorts
Resorts World Bet
Rivalry
Royal Panda
SaharaBets
SBK
SI
Sky Bet
Sleeper
Smarkets
Spin Sports
Sportingbet
SportsBattle
Sportsbet
Sportsbetting.ag
SportsBetting.com
Sports Interaction
SportsQuack
Sporttrade
Stake
STN Sports
SugarHouse
Superbet
SuperBook
SuperDraft
Suprabets
SX Bet
TAB
TABtouch
theScore
Thrillzz
ThriveFantasy
Tipico
TonyBet
TwinSpires
Underdog Fantasy
Underdog Sportsbook
Unibet
Vivid Picks
Westgate
William Hill
Wind Creek
WynnBET
Xbet
YouWager
To pass multiple sportsbooks, you pass it like this: &sportsbook=FanDuel&sportsbook=DraftKings
market_name
You can pass in multiple of this parameter.
The market you want to receive odds for (e.g. Moneyline
)
is_main
Flag to filter for odds for main lines (supports values true
, yes
, t
, 1
). This parameter indicates whether a line is the "main" or "given" line for a market. For example, the +/- 6 Point Spread and the Over/Under 46.5 Total Points lines are the "main" lines for the DraftKings game below:
odds_format
The format of the odd price. Options are AMERICAN|PROBABILITY|DECIMAL
. We default to american prices.
include_mobile_deep_link_url
Please contact us for access to deep link urls.
This will cause deep_link_url
to be returned as:
deep_link_url: {"mobile": "...", "desktop": "..."}
include_team_ids
Whether or not to include the team_id
field on the odds returned, if there is no matching team id, this will default to null.
include_grouping_keys
This is an optional field, and if it is set to true
, it will add a grouping_key
field to each odd that you can use to group odds across bet points. This is useful for cases when you have a spread market with these bet names: ["Home -1", "Away +1", "Home +1", "Away -1"]
, it is not straightforward how to know which home/away pair makeup the same market. The grouping_key
will be unique for a given market and should faciliate this.
Example Response
{
"data": [
{
"id": "39506-40644-2023-08-13-09",
"start_date": "2023-08-13T12:05:00-04:00",
"home_team": "Boston Red Sox",
"away_team": "Detroit Tigers",
"is_live": false,
"is_popular": true,
"tournament": null,
"status": "unplayed",
"sport": "baseball",
"league": "MLB",
"odds": [
{
"id": "39506-40644-2023-08-13-09:draftkings:player_strikeouts:eduardo_rodriguez_over_5_5",
"sports_book_name": "DraftKings",
"name": "Eduardo Rodriguez Over 5.5",
"price": -135,
"timestamp": 1691932813.2485504,
"bet_points": 5.5,
"is_main": true,
"is_live": false,
"market_name": "Player Strikeouts",
"market": "player_strikeouts",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": "1703DC89B0A0",
"selection": "Eduardo Rodriguez",
"normalized_selection": "eduardo_rodriguez",
"selection_line": "over",
"selection_points": 5.5
},
{
"id": "39506-40644-2023-08-13-09:draftkings:run_line:boston_red_sox_+1_5",
"sports_book_name": "DraftKings",
"name": "Boston Red Sox +1.5",
"price": -215,
"timestamp": 1691906920.9585743,
"bet_points": 1.5,
"is_main": false,
"is_live": false,
"market_name": "Run Line",
"market": "run_line",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": null,
"selection": "Boston Red Sox",
"normalized_selection": "boston_red_sox",
"selection_line": null,
"selection_points": 1.5
},
{
"id": "39506-40644-2023-08-13-09:draftkings:run_line:boston_red_sox_-1_5",
"sports_book_name": "DraftKings",
"name": "Boston Red Sox -1.5",
"price": 154,
"timestamp": 1691899249.0454822,
"bet_points": -1.5,
"is_main": true,
"is_live": false,
"market_name": "Run Line",
"market": "run_line",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": null,
"selection": "Boston Red Sox",
"normalized_selection": "boston_red_sox",
"selection_line": null,
"selection_points": -1.5
},
{
"id": "757CD7617965",
"sports_book_name": "Caesars",
"name": "Boston Red Sox",
"price": -130,
"timestamp": 1691929868.4992077,
"bet_points": null,
"is_main": true,
"is_live": false,
"market_name": "Moneyline",
"market": "moneyline",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": null,
"selection": "Boston Red Sox",
"normalized_selection": "boston_red_sox",
"selection_line": null,
"selection_points": null
},
{
"id": "470BBEE6141F",
"sports_book_name": "Caesars",
"name": "Over 9.5",
"price": 100,
"timestamp": 1691932202.0163093,
"bet_points": 9.5,
"is_main": true,
"is_live": false,
"market_name": "Total Runs",
"market": "total_runs",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": null,
"selection": "",
"normalized_selection": "",
"selection_line": "over",
"selection_points": 9.5
},
{
"id": "39506-40644-2023-08-13-09:fanduel:team_total:boston_red_sox_over_4_5",
"sports_book_name": "FanDuel",
"name": "Boston Red Sox Over 4.5",
"price": -128,
"timestamp": 1691932509.6268106,
"bet_points": 4.5,
"is_main": true,
"is_live": false,
"market_name": "Team Total",
"market": "team_total",
"home_rotation_number": null,
"away_rotation_number": null,
"deep_link_url": null,
"player_id": null,
"selection": "Boston Red Sox",
"normalized_selection": "boston_red_sox",
"selection_line": "over",
"selection_points": 4.5
},
...
]
}
]
}
Notes
id
The ID that we return for each odd object is not guaranteed to be of any specific format and is subject to change. Note that using this id will also not allow you to track line changes or historical movements because of the availability of alternate lines.
All Lines:
If you store and keep track of multiple sportsbooks for the same game / market combination, we would recommend constructing your own id using the following format:
<game_id>:<sportsbook>:<market>:<name>:<player_id>
.
If you store and keep track of a single sportsbook for the same game / market combination, we would recommend constructing your own id using the following format:
<game_id>:<market>:<name>:<player_id>
.
Main Lines Only:
If you want to track line changes for the main (is_main=True) lines of a market, we would recommend constructing your own id using the following format: <game_id>:<sportsbook>:<market>:<selection>:<selection_line>:<player_id>
.
Some examples below:
- Moneyline:
39506-40644-2023-08-13-09:DraftKings:Moneyline:Boston Red Sox:null:null
- Run Line:
39506-40644-2023-08-13-09:Caesars:Boston Red Sox:null:null
- Total Runs:
39506-40644-2023-08-13-09:Caesars::over:null
- Player Strikeouts:
39506-40644-2023-08-13-09:DraftKings:Player Strikeouts:Eduardo Rodriguez:over:AHF3454FEF
- Team Total:
39506-40644-2023-08-13-09:Fanduel:Team Total:Boston Red Sox:over:null