API key Sign in, or get an instant trial key below — no signup required.

NCAAB

NCAAB API for Scores, Schedules, Odds & AI Agents

One event graph for men's college basketball — tip-off schedules, quarter-aware live scores, nine-book moneyline/spread/totals, settleable player props, and Stage-1 raw team stats agents can act on without scraping a board.

Available data

Everything below filters on the stable slug sport=ncaab (league ncaab). Discover seasons with GET /v1/seasons?sport=ncaab and teams with GET /v1/teams?sport=ncaab.

LayerEndpointNCAAB notes
Schedule / boardGET /v1/eventssport=ncaab; status, date, include_odds / include_scores
Live scoreGET /v1/events/{id}/score · SSEPeriods 14 / OT; clock when available
OddsGET …/odds · …/odds/historyTwo-way h2h, spreads, totals · 9 books
Player propsGET …/player-propsSettleable points/rebounds/assists/etc. mains + live box progress
SplitsGET …/splitsNot available for NCAAB
IntelligenceGET …/intelligenceNot yet — expect available: false
Raw statsGET …/statsStage-1 team context (record, form, H2H, rest, shooting/rebounding rates)

Schedules

List the slate with GET /v1/events?sport=ncaab. Narrow by status (scheduled / inprogress / final), date or from/to (max 90 days per request), and paginate with after_id / limit.

College tip-off volume is dense — use date windows and include_odds=true / include_scores=true to keep night-of boards to one round trip. Historical lookbacks work year-round (including March Madness when ingested).

Scores

NCAAB score payloads use basketball period labels — "1""4" and "OT" — plus a game clock when the feed has it (e.g. "8:42", "0:00").

  • GET /v1/events?sport=ncaab&status=inprogress&include_scores=true — live board
  • GET /v1/events/{id}/score — lightweight poll (~15s cache while live)
  • GET /v1/events/{id}/stream — SSE event: score or signed webhooks

Cloneable pattern: live scoreboard use case (keep keys server-side).

Odds

NCAAB markets are two-way: moneyline (h2h), point spreads, and game totals. American odds integers; point is null on moneyline sides. Default single-book call is Pinnacle; bookmaker=all is the same 1 credit.

GET /v1/events/{id}/odds/history returns recorded price/point moves between ingest cycles — useful for steam on college sides and totals. Game markets only — player props are a separate endpoint below.

Full bookmaker list and normalization notes: Sports Odds API.

Player props

GET /v1/events/{id}/player-props (1 credit when lines exist; available:false is free) joins persisted player-prop mains to this-event player box counts and grades over / under / push once the game is final. Same basketball catalog as NBA.

Market keys and which ones grade: player props catalog. Endpoint fields: API reference.

Raw stats

GET /v1/events/{id}/stats returns Stage-1 NCAAB-native team context — same basketball catalog as NBA, scoped to ncaab. Check available. Fields: API reference — stats.

Sportsbooks

Odds keys: pinnacle, fanduel, draftkings, betmgm, caesars, bet365, circa, hardrock, betonline. Availability varies by event — check each bookmaker entry.

Examples

Tonight’s NCAAB games with odds inlined:

curl
curl "https://lumify.ai/v1/events?sport=ncaab&status=scheduled&include_odds=true&limit=5" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
from lumify import Lumify

client = Lumify(api_key="YOUR_API_KEY")
page = client.events.list(
    sport="ncaab",
    status="scheduled",
    include_odds=True,
    limit=5,
)
for event in page["events"]:
    print(event["id"], event["name"], event.get("odds"))
TypeScript
import { Lumify } from "@lumifyai/sdk";

const client = new Lumify({ apiKey: "YOUR_API_KEY" });
const { events } = await client.events.list({
  sport: "ncaab",
  status: "scheduled",
  includeOdds: true,
  limit: 5,
});
events.forEach(e => console.log(e.id, e.name, e.odds));

Stage-1 stats for a tip-off (1 credit when available):

curl
curl "https://lumify.ai/v1/events/5201/stats" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
stats = client.events.stats(5201)
if stats.get("available"):
    print(stats.get("league_slug"), stats.get("teams"))
TypeScript
const stats = await client.events.stats(5201);
if (stats.available) {
  console.log(stats.league_slug, stats.teams);
}

Sample odds shape (abridged NCAAB event — totals market):

json
{
  "event_id": 5201,
  "available": true,
  "bookmakers": [
    {
      "bookmaker": "pinnacle",
      "markets": [
        {
          "key": "totals",
          "label": "total",
          "outcomes": [
            { "outcome": "Over", "price": -108, "point": 148.5 },
            { "outcome": "Under", "price": -112, "point": 148.5 }
          ]
        }
      ],
      "captured_at": "2026-02-15T23:05:00Z"
    }
  ]
}

Freshness

FeedCadenceFit
Live scores~1 minute (+ SSE/webhooks)Scoreboards, in-game agents
Odds ingest~10 minutes (2-min response cache)Research, line shop, alerts — not HFT
StatsScheduled box ingestPersist-then-read Stage-1 team context
IntelligenceNot available for NCAAB yet

Pricing

CallCredits
Most successful GETs (events, score, stats, teams, …)1
Multi-book odds (bookmaker=all or a list)1
available: false / errors0

Free Tier: 1,000 credits that never expire. Instant trial: 100 credits / 14 days, no signup. Details: /pricing.

For agents: machine-readable twin at /sports/ncaab-api.md. MCP tools: list_events, get_odds, get_stats — setup at /sports-mcp-server.

FAQ

What does the NCAAB API include?

Filter with sport=ncaab (league slug ncaab) for schedules, live scores (quarters + clock), teams/players, multi-book moneyline/spread/totals, settleable player props, and Stage-1 raw /stats. Same event IDs across every layer. No betting splits and no bet intelligence for NCAAB today.

Is NCAAB bet intelligence available?

Not yet. GET /v1/events/{id}/intelligence returns available: false for NCAAB today. Schedules, scores, odds, and Stage-1 /stats are live. Intelligence is already shipping for MLB, NFL, NCAAF, tennis, and MLS — NCAAB is on the roadmap.

Do you support NCAAB player props or player game logs?

Yes — the same basketball catalog as NBA on GET /player-props (points, rebounds, assists, threes made, steals, blocks, combo markets, double-double/triple-double). GET /odds stays moneyline/spread/totals. Raw /stats is Stage-1 team context (record, form, H2H, rest, shooting/rebounding rates — basketball-native, scoped so college rates never mix with NBA). Market keys: /docs/player-props.

Are NCAAB betting splits available?

No. Public ticket%/handle% splits cover MLB/NBA/NHL/NFL only. For college basketball, pair /odds with Stage-1 /stats on the same event IDs.

How is NCAAB different from NBA in the API?

Use sport=ncaab vs sport=nba. Both expose schedules, scores, odds, settleable player props (same basketball catalog), and Stage-1 basketball-native /stats. NBA has betting splits; NCAAB does not. Neither has Lumify intelligence yet. NBA landing: /sports/nba-api.

Start with the NCAAB API

Create a free key — or use an instant trial key with no signup — and list tonight’s college basketball slate in under a minute.