College basketball odds API
College basketball prices from sportsbooks, exchanges and prediction markets in one JSON shape. One stable id per fixture, with last_update on every price.
Use the sport key ncaab to request NCAA basketball odds. The season opens November 3. Read moneyline, spread and total prices for each fixture in American or decimal odds.
We match team names across books: Miami (FL) and Miami Florida, or UConn and Connecticut, belong to the same fixture. Your code uses one stable id instead of matching those names itself.
curl -H "X-API-Key: $ODDSLINK_KEY" \
"https://oddslink.app/v1/sports/ncaab/odds?markets=h2h,spreads,totals&oddsFormat=american"import os, requests
r = requests.get(
"https://oddslink.app/v1/sports/ncaab/odds",
params={"markets": "h2h,spreads,totals", "oddsFormat": "american"},
headers={"X-API-Key": os.environ["ODDSLINK_KEY"]},
)
r.raise_for_status()
for game in r.json():
print(game["away_team"], "at", game["home_team"])[
{
"id": "ncaab:connecticut-miamiflorida:2026-11-03",
"sport_key": "ncaab",
"sport_title": "NCAAB",
"commence_time": "2026-11-03T23:00:00.000Z",
"is_live": false,
"status": "scheduled",
"home_team": "Connecticut",
"away_team": "Miami Florida",
"bookmakers": [
{
"key": "draftkings",
"title": "DraftKings",
"last_update": "2026-11-03T18:00:00.000Z",
"markets": [
{
"key": "h2h",
"last_update": "2026-11-03T18:00:00.000Z",
"outcomes": [
{
"name": "Connecticut",
"price": -150
},
{
"name": "Miami Florida",
"price": 130
}
]
},
{
"key": "spreads",
"last_update": "2026-11-03T18:00:00.000Z",
"outcomes": [
{
"name": "Connecticut",
"price": -110,
"point": -3.5
},
{
"name": "Miami Florida",
"price": -110,
"point": 3.5
}
]
},
{
"key": "totals",
"last_update": "2026-11-03T18:00:00.000Z",
"outcomes": [
{
"name": "Over",
"price": -110,
"point": 145.5
},
{
"name": "Under",
"price": -110,
"point": 145.5
}
]
}
]
}
],
"unmatched_bookmakers": []
}
]Illustrative NCAAB request and response. Teams, fixture date, bookmaker and prices are examples, not measured coverage.
More than the main line
Moneyline, spread and total
Request markets=h2h,spreads,totals for full-fixture college basketball lines.
One fixture id
Prices from different books share one fixture id, even when the books spell team names differently.
A time beside every price
last_update tells you when the book last confirmed a price.
In-play from Growth
Use /v1/sports/ncaab/odds/live for in-play prices on Growth and up.
Opening and closing lines
After a fixture finishes, read its opening and closing lines on Scale, Business or Enterprise, within your plan's history access.
Markets
| Market | Periods |
|---|---|
| Moneyline (h2h) | Full fixture |
| Spread (spreads) | Full fixture |
| Total (totals) | Full fixture |
Books for College basketball
Every book on every plan
| Plan | Per month | Requests a month | In-play | History |
|---|---|---|---|---|
| Free | $0 | 1,000 | No | No |
| Starter | $24 | 20,000 | No | No |
| Growth | $49 | 100,000 | Yes | No |
| Scale | $99 | 500,000 | Yes | 2 years |
| Business | $199 | 5,000,000 | Yes | All of it |
Questions
What is the NCAAB sport key?
Use ncaab, for example /v1/sports/ncaab/odds?markets=h2h,spreads,totals.
When does the college basketball season open?
The season opens November 3.
How do you handle different college team names?
We match names such as Miami (FL) and Miami Florida, or UConn and Connecticut, on our side. Each fixture has one stable id across books.
Does the NCAAB odds API include in-play prices?
Yes. In-play prices are included from the Growth plan.
Can I get college basketball opening and closing lines?
Yes, after the fixture finishes. Scale includes the last 2 years; Business and Enterprise include everything recorded.