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.
- Basketball only, and only men's college basketball returned games when checked. NIT, CBI and CIT games are excluded.
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
| Field | Type | Notes |
|---|---|---|
| id | string | Event id; use it with the detail, plays, box score and odds endpoints. |
| uid | string | |
| name | string | Full matchup name. |
| shortName | string | Abbreviated matchup, e.g. "AWAY @ HOME". |
| date | string | Start time, ISO-8601 UTC. |
| status | EventStatus | state (pre, in, post), completed, period, clock and display detail. |
| homeTeam | EventTeam | id, name, abbreviation, colors, logo (proxied), record, score, winner. |
| awayTeam | EventTeam | Same shape as homeTeam. |
| competition | object | attendance, neutralSite, conference/division flags, playByPlayAvailable. |
| venue | object | Venue id, name, city, state, indoor, grass (null when unknown). |
| notes | string[] | Headline notes, e.g. round or rivalry names. |
| season | object | year, type (preseason/regular/postseason) and week where the league uses weeks. |
| broadcasts | object[] | TV/stream networks for the game. |
| officials | object[] | Game officials when published. |
| odds | Odds | Only with includeOdds=true and when the game has odds. |
| tournament | object |
League support
Checked against live data on 2026-10-04: 1 available, 0 limited, 0 seasonal or not verified, 28 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
| Plan | Price | Calls | Rate | WebSocket | Webhooks |
|---|---|---|---|---|---|
| Free | $0 | 125/mo (1,000 first 30 days) | 1/s | 500 msgs/mo | No |
| Starter | $29/mo ($290/yr) | 10,000/mo | 5/s | Shares monthly pool | Shares monthly pool |
| Growth | $49/mo ($490/yr) | 25,000/mo | 10/s | Shares monthly pool | Shares monthly pool |
| Pro | $99/mo ($990/yr) | 50,000/mo | 20/s | 100,000 msgs/mo | 25,000/mo |
| Scale | $299/mo ($2,990/yr) | 500,000/mo | 100/s | 500,000 msgs/mo | 100,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.