Odds
Retrieve match odds.
- Prematch refresh
- Multiple times a day
- Live refresh
- Once every 10 minutes
- Plan
- Not available on Basic/Free
- Pagination
- limit and offset
Prematch or live
oddsType selects between prematch and
live odds. Omit it and you get prematch.
Prematch odds refresh multiple times a day, and live odds once every 10 minutes.
Querying
At least one primary query parameter must be specified. timezone,
limit, offset and oddsType are secondary and do
not count on their own.
The most common approach is matchId, which returns the odds for one game.
Alternatively use date with timezone to fetch all odds for a
given day. leagueName, bookmakerId and
bookmakerName narrow it further, and bookmaker ids and names come from
bookmakers.
Supported markets
| Market | Outcomes |
|---|---|
| Full Time Result | Home, Away or Draw. |
| Moneyline |
The two way version, offered when a game has no three way moneyline.
|
| Spread |
Complex. Split into variants such as "Spread -28.5/+28.5". Each variant
resolves to Home or Away.
|
| Totals |
Complex. Variants such as "Totals 25" or "Totals 25.5". Each
resolves to Over or Under.
|
| Odd or Even | Whether the score of both teams is Odd or Even. |
A complex market is one line per variant rather than one line per
market, so "Totals" arrives as several entries distinguished by their
threshold. Read the variant label in market rather than assuming one row
per market.
How odds are grouped
Results are grouped by match. Each item in data has a
matchId and an odds list. Every entry in
odds carries bookmakerId, type (prematch or
live), market and values, and may also carry
bookmakerName.
Each item in values is a selection, with a value label and an
odd price. A Moneyline market arrives as two of them, Home and
Away.
Each entry belongs to one bookmaker, so the same market can appear once for each
bookmaker. To show a single bookmaker, pass bookmakerId or
bookmakerName in the request.
Parameters
| Parameter | Type | Description |
|---|---|---|
oddsTypeoptional |
string |
Defines whether live or prematch odds will be returned.e.g. prematch
|
leagueNameoptional
|
string |
No description in the spec.e.g. NBA
|
timezoneoptional |
stringdefault Etc/UTC
|
Valid timezone identifier.e.g. Europe/London
|
bookmakerIdoptional
|
number |
No description in the spec.e.g. 284
|
limitoptional |
numberdefault 5
|
No description in the spec.e.g. 5
|
offsetoptional |
numberdefault 0
|
No description in the spec.e.g. 0
|
matchIdoptional |
number | No description in the spec. |
bookmakerNameoptional
|
string |
No description in the spec.e.g. Pinnacle
|
dateoptional |
string | Date that follows the YYYY-MM-DD format. |
Request
curl --request GET \
--url 'https://nba.highlightly.net/odds?oddsType=prematch&leagueName=NBA' \
--header 'x-rapidapi-key: YOUR_API_KEY'
const params = new URLSearchParams({
oddsType: 'prematch',
leagueName: 'NBA'
})
const response = await fetch(`https://nba.highlightly.net/odds?${params}`, {
headers: {
'x-rapidapi-key': process.env.HIGHLIGHTLY_API_KEY
}
})
if (!response.ok) {
throw new Error(`Highlightly responded ${response.status}`)
}
const data = await response.json()
import os
import requests
response = requests.get(
'https://nba.highlightly.net/odds',
params={
'oddsType': 'prematch',
'leagueName': 'NBA',
},
headers={
'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
},
timeout=10,
)
response.raise_for_status()
data = response.json()
Response
dataNbaOddsResponse[]required9 fields
matchIdnumberrequired
oddsNbaMarketResponse[]required7 fields
bookmakerIdnumberrequired
bookmakerNamestring
typestringrequired
marketstringrequired
valuesNbaMarketSelectionResponse[]required2 fields
oddnumberrequired
valuestringrequired
paginationPaginationResponserequired3 fields
totalCountnumberrequiredAvailable number of items, relevant to the provided query.
offsetnumberrequired
limitnumberrequired
planPlanResponserequired2 fields
tierstringrequiredYour current API subscription tier.
messagestringrequiredExplanation message regarding your current tier.
Example response
{
"data": [
{
"matchId": 1,
"odds": [
{
"bookmakerId": 1,
"bookmakerName": "Pinnacle",
"type": "prematch",
"market": "Total Points 161.5",
"values": [
{
"odd": 1.75,
"value": "Over"
}
]
}
]
}
],
"pagination": {
"totalCount": 490,
"offset": 20,
"limit": 100
},
"plan": {
"tier": "BASIC",
"message": "Some results might be hidden with FREE tier. Check your API coverage for more information: https://rapidapi.com/highlightly-api-highlightly-api-default/api/sport-highlights-api/details"
}
}
Values are the examples declared in the OpenAPI spec, not a captured live response.
Errors
| Status | Description |
|---|---|
400 |
Bad request descriptive error. |
500 |
Internal server error. |