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.
The two refresh at very different rates. Prematch odds update multiple times a day, live odds every ten minutes, so polling live odds faster than that spends quota without returning anything new.
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. Alternatively use date with timezone to fetch all odds
for a given day. leagueName, bookmakerId and
bookmakerName narrow it further, and bookmaker ids come from
bookmakers.
Supported markets
| Market | Outcomes |
|---|---|
| Home/Away |
Home or Away. There is no Draw outcome.
|
| Over/Under |
Complex. Split into variants such as "Over/Under 7.5" or
"Over/Under 9.5". Each variant resolves to Over or
Under.
|
| Asian Handicap |
Complex. Split into variants such as "Asian Handicap -0.5/+0.5" or
"Asian Handicap -1.5/+1.5". Each variant resolves to
Home or Away.
|
| Odd or Even | Whether the score of both teams is Odd or Even. |
A complex market is split into multiple variants, so do not assume one entry per market.
How odds are grouped
Results in data are grouped by matchId. Each match holds an
odds list, and every entry carries a bookmakerId, a
type of prematch or live, a
market and a values list of selections.
bookmakerName may also be present.
A selection is a value label and an odd price, so a Home/Away
market arrives with the values Home and Away.
If you only display one bookmaker, filter by bookmakerId when you request
rather than after.
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. MLB
|
timezoneoptional |
stringdefault Etc/UTC
|
Valid timezone identifier.e.g. Europe/London
|
bookmakerIdoptional
|
number |
No description in the spec.e.g. 7122
|
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. Stake.com
|
dateoptional |
string | Date that follows the YYYY-MM-DD format. |
Request
curl --request GET \
--url 'https://baseball.highlightly.net/odds?oddsType=prematch&leagueName=MLB' \
--header 'x-rapidapi-key: YOUR_API_KEY'
const params = new URLSearchParams({
oddsType: 'prematch',
leagueName: 'MLB'
})
const response = await fetch(`https://baseball.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://baseball.highlightly.net/odds',
params={
'oddsType': 'prematch',
'leagueName': 'MLB',
},
headers={
'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
},
timeout=10,
)
response.raise_for_status()
data = response.json()
Response
dataBaseballOddsResponse[]required9 fields
matchIdnumberrequired
oddsBaseballMarketResponse[]required7 fields
bookmakerIdnumberrequired
bookmakerNamestring
typestringrequired
marketstringrequired
valuesBaseballMarketSelectionResponse[]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": 394,
"odds": [
{
"bookmakerId": 53,
"bookmakerName": "Megapari Sport",
"type": "prematch",
"market": "Odd or Even",
"values": [
{
"odd": 2.8,
"value": "Home"
}
]
}
]
}
],
"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. |