Odds

GET https://hockey.highlightly.net/odds Hockey API
GET https://sports.highlightly.net/hockey/odds All Sports API

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, 5 per page

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, which returns the odds for one fixture. 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
3-Way Moneyline Home, Draw or Away.
Moneyline Home or Away. Offered where a match has no three way line, and there is no way for the game to end in a draw.
Total Goals Complex. Variants such as "Total Goals 8" or "Total Goals 8.5". Each resolves to Over or Under.
Odd or Even Whether the score of both teams is Odd or Even.
Both Teams to Score Whether both teams score, as Yes or No.
Correct Score Complex. Variants such as "Correct Score 2 : 0" or "Correct Score 1 : 1", each with a single outcome.

A complex market is split into variants, such as "Total Goals 8" and "Total Goals 8.5", so do not assume one entry per market. Each Correct Score variant has a single possible outcome.

How odds are grouped

Results are grouped by match. Each entry in data holds a matchId and an odds list, and every item in that list carries bookmakerId, type (prematch or live), market and its values. bookmakerName is optional.

Each value is a label in value and a price in odd, so the 3-Way Moneyline market arrives as Home, Draw and Away.

Because every item names its bookmaker, one match can carry the same market from several bookmakers, which is what lets you compare prices. If you only display one bookmaker, filter by bookmakerId when you request rather than after.

Bookmaker odds rendered for a single match

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. 19
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. 1Bet
dateoptional string Date that follows the YYYY-MM-DD format.

Request

curl --request GET \
  --url 'https://hockey.highlightly.net/odds?oddsType=prematch&bookmakerId=19' \
  --header 'x-rapidapi-key: YOUR_API_KEY'
const params = new URLSearchParams({
  oddsType: 'prematch',
  bookmakerId: '19'
})
const response = await fetch(`https://hockey.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://hockey.highlightly.net/odds',
    params={
        'oddsType': 'prematch',
        'bookmakerId': '19',
    },
    headers={
        'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
    },
    timeout=10,
)

response.raise_for_status()
data = response.json()

Response

dataHockeyOddsResponse[]required9 fields
matchIdnumberrequired
oddsHockeyMarketResponse[]required7 fields
bookmakerIdnumberrequired
bookmakerNamestring
typestringrequired
marketstringrequired
valuesHockeyMarketSelectionResponse[]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

200 application/json
{
  "data": [
    {
      "matchId": 295119925,
      "odds": [
        {
          "bookmakerId": 19,
          "bookmakerName": "1Bet",
          "type": "prematch",
          "market": "3-Way Moneyline",
          "values": [
            {
              "odd": 2.2,
              "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.