NCAA tournament bracket (men's + women's)
March Madness bracket games (seeds, rounds, scores and winners) for NCAAB (men's) and NCAAW (women's) (migration 278). ?season= is required: the table is additive across tournament years but today holds season 2025 only (134 rows: 67 men's + 67 women's), which is the bracket PLAYED between 17 March and 7 April 2026. A season label is the year the season BEGAN, not the year it was played, so ?season=2026 is a tournament that has not been played yet; it returns an empty list with a meta.note explaining that rather than a bare empty 200. round is the feed's own observed numbering: 0 = First Four, 1 through 5 = Round of 64 through Elite Eight, 6 = Championship. ?limit= defaults to 200 so that one request returns a whole bracket; any short page carries a meta.note saying how many games matched. Region labels are not populated on any row currently held, so ?region= matches nothing; select a stage with ?round= instead.
Request
- Base URL: https://api.bigballsdata.com
- URL: https://api.bigballsdata.com/v1/ncaab/tournament
- Auth: one of:
- API key in header x-api-key
- HTTP bearer
Query parameters
Year the tournament SEASON began, not the year it was played: season 2025 is the bracket played in March 2026. We currently hold 2025 only.
Omit for both.
The feed's observed round number: 0 = First Four ... 6 = Championship.
Case-insensitive substring match against the region label. Matches NOTHING today: region labels are empty on every bracket row currently held, so any value returns an empty list. Use ?round= to select a stage instead.
Page size. Defaults to 200 rather than the usual 50, so a single request returns a complete bracket (67 games for one gender, 134 for both).
Rows to skip. Results are ordered by round, then tip-off time, then game id, so pages are stable across requests.
Alias for ?offset=(page-1)*limit. An explicit ?offset= wins.
Response
ok. data is an array of bracket games (empty when the filter genuinely matches nothing, or when the season has no data yet; meta.note says which). meta carries count (rows in this page), total (rows matching the filter), limit and offset.
Example response
{
"meta": {
"date_window": {
"timezone": "UTC",
"start_utc": "2026-09-13T00:00:00.000Z",
"end_utc": "2026-09-14T00:00:00.000Z"
},
"source": "official-league",
"confidence": 0.95,
"cache_age_ms": 4200,
"request_id": "req_abc123",
"note": "match_id is omitted on 380 of 380 rows in this response. The live feed behind them does not carry an id we can resolve to a stored match, so we return no id rather than one that will not work. For rows with ids you can call back into, use /v1/stored/matches with the same sport or league, for example /v1/stored/matches?league=epl."
},
"error": {
"code": "NOT_FOUND"
}
}Changes
No recorded changes to this operation across all 3 revisions of this API.