Odds

GET https://nba.highlightly.net/odds NBA & NCAAB API
GET https://sports.highlightly.net/nba/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

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. Home or Away, with no possibility of a Draw.

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.

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
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

200 application/json
{
  "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.