NCAA tournament API

NCAA men's basketball tournament games for a season with region, round and a First Four flag. Filter by round or region. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Paths and parameters

GET/api/v1/sports/{sport}/leagues/{league}/seasons/{season}/tournament

Get NCAA tournament games. NCAA tournament games for a season with region, round and First Four flag. Basketball only; excludes NIT/CBI/CIT.

  • sport (path, required): Sport slug: football, basketball, baseball, hockey, soccer.
  • league (path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
  • season (path, required): Season year, e.g. 2026.
  • round (query): Round label filter (substring, case-insensitive).
  • region (query): Region name filter.
  • firstFour (query): true = only First Four games, false = exclude them.
  • startDate (query): Override scan window start (YYYYMMDD).
  • endDate (query): Override scan window end (YYYYMMDD).

Live example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/seasons/2026/tournament"

Example shape generated from the OpenAPI spec (live data was not available when this page was built). Example shape generated from the OpenAPI spec, not live data.

Response

{
  "success": true,
  "data": [
    {
      "id": "401772982",
      "uid": "",
      "name": "Kansas City Chiefs at Baltimore Ravens",
      "shortName": "KC @ BAL",
      "date": "2026-10-04T17:00Z",
      "status": {
        "state": "in",
        "completed": false,
        "period": 2,
        "clock": "5:23",
        "detail": "5:23 - 2nd Quarter",
        "halftime": false,
        "firstHalfEnded": false
      },
      "homeTeam": {
        "id": "12",
        "name": "Kansas City Chiefs",
        "abbreviation": "KC",
        "logo": "",
        "color": "e31837",
        "alternateColor": "ffb612",
        "winner": false,
        "record": "3-1",
        "score": 14
      },
      "awayTeam": {
        "id": "12",
        "name": "Kansas City Chiefs",
        "abbreviation": "KC",
        "logo": "",
        "color": "e31837",
        "alternateColor": "ffb612",
        "winner": false,
        "record": "3-1",
        "score": 14
      },
      "competition": {
        "attendance": 0,
        "neutralSite": false,
        "conferenceCompetition": false,
        "divisionCompetition": false,
        "playByPlayAvailable": false,
        "highlightsAvailable": false
      },
      "venue": {
        "id": "",
        "name": "",
        "city": "",
        "state": "",
        "indoor": false,
        "grass": false
      },
      "notes": [
        ""
      ],
      "season": {
        "year": 2026,
        "displayName": "2026",
        "type": {
          "id": "2",
          "name": "Regular Season",
          "abbreviation": "reg"
        },
        "week": {
          "number": 5,
          "startDate": "",
          "endDate": "",
          "text": "Week 5"
        }
      },
      "broadcasts": [
        {
          "network": "CBS",
          "type": "TV"
        }
      ],
      "officials": [
        {
          "id": "",
          "fullName": "",
          "displayName": "",
          "order": 0,
          "position": ""
        }
      ],
      "odds": {
        "provider": "",
        "spread": {
          "line": -3.5,
          "home": -110,
          "away": -110
        },
        "moneyline": {
          "home": -180,
          "away": 150
        },
        "overUnder": {
          "total": 48.5,
          "over": -110,
          "under": -110
        },
        "updatedAt": "2026-10-04T17:00:00Z"
      },
      "tournament": {
        "region": "South",
        "round": "1st Round",
        "firstFour": false
      }
    }
  ],
  "meta": {
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1793491200000
    }
  }
}

Fields

FieldTypeNotes
idstringEvent id; use it with the detail, plays, box score and odds endpoints.
uidstring
namestringFull matchup name.
shortNamestringAbbreviated matchup, e.g. "AWAY @ HOME".
datestringStart time, ISO-8601 UTC.
statusEventStatusstate (pre, in, post), completed, period, clock and display detail.
homeTeamEventTeamid, name, abbreviation, colors, logo (proxied), record, score, winner.
awayTeamEventTeamSame shape as homeTeam.
competitionobjectattendance, neutralSite, conference/division flags, playByPlayAvailable.
venueobjectVenue id, name, city, state, indoor, grass (null when unknown).
notesstring[]Headline notes, e.g. round or rivalry names.
seasonobjectyear, type (preseason/regular/postseason) and week where the league uses weeks.
broadcastsobject[]TV/stream networks for the game.
officialsobject[]Game officials when published.
oddsOddsOnly with includeOdds=true and when the game has odds.
tournamentobject

League support

Checked against live data on 2026-10-04: 1 available, 0 limited, 0 seasonal or not verified, 28 not available.

Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available
Not available

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/seasons/2026/tournament"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/seasons/2026/tournament", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/football/leagues/nfl/seasons/2026/tournament",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

FAQ

What does the ncaa tournament endpoint return?
NCAA men's basketball tournament games for a season with region, round and a First Four flag. Filter by round or region.
Which leagues support ncaa tournament?
Verified on 2026-10-04: Men's College Basketball. Not available: 28 other leagues.
Is it free to try?
Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. Every successful call counts as one call.
How fresh is the data?
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.
Can I get updates pushed instead of polling?
Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview.