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 popular approach is matchId, which returns the odds for one match.
Alternatively use date with timezone to fetch all odds for a
given day. League and bookmaker filters narrow it further, and bookmaker ids come from
bookmakers.
Supported markets
| Market | Outcomes |
|---|---|
| Full Time Result | Home, Draw or Away. |
| Asian Handicap |
Complex. Split into variants such as "Asian Handicap -1.25/+1.25". Each
variant resolves to Home or Away.
|
| Odd or Even | Whether the score of both teams is Odd or Even. |
| Total Goals |
Complex. Variants such as "Total Goals 2" or "Total Goals
3.5". Each resolves to Over or Under.
|
| Both Teams to Score | Yes or No. |
| Correct Score | Complex. Variants such as "Correct Score 2 : 0". A single outcome per variant. |
| First Team to Score |
Home, Away, or None when neither scores.
|
| Total Cards |
Complex. Variants such as "Total Cards 4" or "Total Cards
5.25". Each resolves to Over or Under.
|
| Clean Sheet |
Home or Away. At 0 : 0 both outcomes win.
|
| Total Corners |
Complex. Variants such as "Total Corners 11.5". Each resolves to
Over or Under.
|
A complex market is split into multiple variants, such as "Total Goals 2" and "Total Goals 3.5", and each variant has its own outcomes.
How odds are grouped
Results are grouped by match. Each item in data carries a
matchId and an odds array.
Each entry in odds carries a bookmakerId, the odds
type, the market name and a values array, and may
also carry a bookmakerName.
Each item in values pairs a value label with an
odd price, so the Full Time Result market carries Home,
Draw and Away.
To narrow the results to one bookmaker, pass bookmakerId or
bookmakerName.
Parameters
| Parameter | Type | Description |
|---|---|---|
oddsTypeoptional |
string |
Defines whether live or prematch odds will be returned.e.g. prematch
|
leagueIdoptional |
number | No description in the spec. |
leagueNameoptional
|
string | No description in the spec. |
timezoneoptional |
stringdefault Etc/UTC
|
Valid timezone identifier.e.g. Europe/London
|
bookmakerIdoptional
|
number |
No description in the spec.e.g. 1
|
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://soccer.highlightly.net/odds?oddsType=prematch&bookmakerId=1' \
--header 'x-rapidapi-key: YOUR_API_KEY'
const params = new URLSearchParams({
oddsType: 'prematch',
bookmakerId: '1'
})
const response = await fetch(`https://soccer.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://soccer.highlightly.net/odds',
params={
'oddsType': 'prematch',
'bookmakerId': '1',
},
headers={
'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
},
timeout=10,
)
response.raise_for_status()
data = response.json()
Response
dataOddsResponse[]required9 fields
matchIdnumberrequired
oddsMarketResponse[]required7 fields
bookmakerIdnumberrequired
bookmakerNamestring
typestringrequired
marketstringrequired
valuesMarketSelectionResponse[]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": 884822928,
"odds": [
{
"bookmakerId": 1,
"bookmakerName": "Stake.com",
"type": "prematch",
"market": "Full Time Result",
"values": [
{
"odd": 6.6,
"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. |