NCAAW API
Welcome to the BALLDONTLIE NCAAW API, the best Women's College Basketball (NCAAW DI) API on the planet. This API contains data from 2003 to now. An API key is required. You can obtain an API key by creating a free account on our website. Read the authentication section to learn how to use the API key.
Take a look at our other APIs.
Join us on discord.
AI-Powered Integration
Using the OpenAPI Specification with AI
Our complete OpenAPI specification allows AI assistants to automatically understand and interact with our API. Simply share the spec URL with your AI assistant and describe what you want to build—the AI will handle the technical implementation.
Getting Started with AI:
- Copy this URL:
https://www.balldontlie.io/openapi.yml - Share it with your preferred AI assistant (ChatGPT, Claude, Gemini, etc.)
- Tell the AI what you want to build (e.g., "Create a March Madness bracket tracker")
- The AI will read the OpenAPI spec and write the code for you
Example prompts to try:
- "Using the OpenAPI spec at https://www.balldontlie.io/openapi.yml, show me how to get the current AP Top 25 rankings"
- "Read the BALLDONTLIE OpenAPI spec and create a Python script that fetches March Madness tournament data"
- "Help me understand the available NCAAW endpoints from this OpenAPI spec: https://www.balldontlie.io/openapi.yml"
This makes it incredibly easy for non-technical users, analysts, and researchers to leverage our sports data without needing to learn programming from scratch.
Google Sheets Integration
Our Google Sheets integration lets you access all the same data available through our API using simple spreadsheet formulas. Perfect for fantasy sports tracking, betting analysis, and sports research.
Quick Start:
- Get your API key from app.balldontlie.io
- Copy our Google Sheets script
- Paste it into your Google Sheet (Extensions > Apps Script)
- Start using functions in your cells
Example functions:
=BDL_NCAAW_TEAMS()- Get all teams=BDL_NCAAW_GAMES("2026-03-15")- Get games by date=BDL_NCAAW_BRACKET(2026)- Get March Madness bracket=BDL_NCAAW_RANKINGS(2026)- Get AP rankings
For full setup instructions and the complete list of 150+ functions, see our Google Sheets Integration Guide.
Account Tiers
There are three different account tiers which provide you access to different types of data. Visit our website to create an account for free.
Paid tiers do not apply across sports. The tier you purchase for NCAAW will not automatically be applied to other sports. You can purchase the ALL-ACCESS ($299.99/mo) tier to get access to every endpoint for every sport.
Read the table below to see the breakdown.
| Endpoint | Free | ALL-STAR | GOAT |
|---|---|---|---|
| Conferences | Yes | Yes | Yes |
| Teams | Yes | Yes | Yes |
| Players | Yes | Yes | Yes |
| Standings | Yes | Yes | Yes |
| Active Players | No | Yes | Yes |
| Games | No | Yes | Yes |
| Rankings | No | Yes | Yes |
| Play-by-Play | No | Yes | Yes |
| Player Stats | No | No | Yes |
| Team Stats | No | No | Yes |
| Player Season Stats | No | No | Yes |
| Team Season Stats | No | No | Yes |
| March Madness Bracket | No | No | Yes |
| Betting Odds | No | No | Yes |
The feature breakdown per tier is shown in the table below.
| Tier | Requests / Min | $USD / mo. |
|---|---|---|
| GOAT | 600 | 39.99 |
| ALL-STAR | 60 | 9.99 |
| Free | 5 | 0 |
Authentication
To authorize, use this code:
curl "api_endpoint_here" -H "Authorization: YOUR_API_KEY"
// Using fetch
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/teams", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
# Using requests
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/teams',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
Make sure to replace
YOUR_API_KEYwith your API key.
BALLDONTLIE uses API keys to allow access to the API. You can obtain an API key by creating a free account at our website
We expect the API key to be included in all API requests to the server in a header that looks like the following:
Authorization: YOUR_API_KEY
Pagination
This API uses cursor based pagination rather than limit/offset. Endpoints that support pagination will send back responses with a meta key that looks like what is displayed on the right.
{
"meta": {
"next_cursor": 90,
"per_page": 25
}
}
You can use per_page to specify the maximum number of results. It defaults to 25 and doesn't allow values larger than 100.
You can use next_cursor to get the next page of results. Specify it in the request parameters like this: ?cursor=NEXT_CURSOR.
Errors
The API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 401 | Unauthorized - You either need an API key or your account tier does not have access to the endpoint. |
| 400 | Bad Request -- The request is invalid. The request parameters are probably incorrect. |
| 404 | Not Found -- The specified resource could not be found. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 429 | Too Many Requests -- You're rate limited. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |
Conferences
Get All Conferences
curl "https://api.balldontlie.io/ncaaw/v1/conferences" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/conferences",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/conferences',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 3,
"name": "America East Conference",
"short_name": "America East"
},
{
"id": 4,
"name": "American Conference",
"short_name": "American"
},
{
"id": 2,
"name": "ASUN Conference",
"short_name": "ASUN"
},
{
"id": 5,
"name": "Atlantic 10 Conference",
"short_name": "Atlantic 10"
},
{
"id": 1,
"name": "Atlantic Coast Conference",
"short_name": "ACC"
},
{
"id": 6,
"name": "Big 12 Conference",
"short_name": "Big 12"
},
{
"id": 7,
"name": "Big East Conference",
"short_name": "Big East"
},
{
"id": 8,
"name": "Big Sky Conference",
"short_name": "Big Sky"
},
{
"id": 9,
"name": "Big South Conference",
"short_name": "Big South"
},
{
"id": 10,
"name": "Big Ten Conference",
"short_name": "Big Ten"
},
...
]
}
This endpoint retrieves all NCAAW conferences.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/conferences
Teams
Get All Teams
curl "https://api.balldontlie.io/ncaaw/v1/teams" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/teams", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/teams',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 1,
"conference_id": 1,
"name": "Eagles",
"full_name": "Boston College Eagles",
"college": "Boston College",
"abbreviation": "BC"
},
{
"id": 2,
"conference_id": 1,
"name": "Golden Bears",
"full_name": "California Golden Bears",
"college": "California",
"abbreviation": "CAL"
},
{
"id": 3,
"conference_id": 1,
"name": "Tigers",
"full_name": "Clemson Tigers",
"college": "Clemson",
"abbreviation": "CLEM"
},
{
"id": 4,
"conference_id": 1,
"name": "Blue Devils",
"full_name": "Duke Blue Devils",
"college": "Duke",
"abbreviation": "DUKE"
},
{
"id": 5,
"conference_id": 1,
"name": "Seminoles",
"full_name": "Florida State Seminoles",
"college": "Florida State",
"abbreviation": "FSU"
},
...
]
}
This endpoint retrieves all NCAAW teams.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/teams
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| conference_id | false | Returns teams that belong to this conference |
Players
Get All Players
curl "https://api.balldontlie.io/ncaaw/v1/players" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/players", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/players',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 1,
"first_name": "Ace",
"last_name": "Austin",
"position": "G",
"height": "5' 7\"",
"jersey_number": "1",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
},
{
"id": 2,
"first_name": "Leah",
"last_name": "Brooks",
"position": "G",
"height": "6' 3\"",
"jersey_number": "24",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
},
{
"id": 3,
"first_name": "Tianna",
"last_name": "Chambers",
"position": "G",
"height": "6' 1\"",
"jersey_number": "11",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
}
],
"meta": {
"next_cursor": 3,
"per_page": 3
}
}
This endpoint retrieves all NCAAW players.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/players
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| search | false | Returns players whose first or last name matches this value. For example, ?search=clark will return players that have 'clark' in their first or last name. |
| first_name | false | Returns players whose first name matches this value. For example, ?first_name=paige will return players that have 'paige' in their first name. |
| last_name | false | Returns players whose last name matches this value. For example, ?last_name=clark will return players that have 'clark' in their last name. |
| team_ids | false | Returns players that belong to these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| player_ids | false | Returns players that match these ids. This should be an array: ?player_ids[]=1&player_ids[]=2 |
Get a Specific Player
curl "https://api.balldontlie.io/ncaaw/v1/players/<ID>" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/players/1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/players/1',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": {
"id": 1,
"first_name": "Ace",
"last_name": "Austin",
"position": "G",
"height": "5' 7\"",
"jersey_number": "1",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
}
}
This endpoint retrieves a specific NCAAW player.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/players/<ID>
URL Parameters
| Parameter | Required | Description |
|---|---|---|
| ID | true | The ID of the player to retrieve |
Get Active Players
curl "https://api.balldontlie.io/ncaaw/v1/players/active" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/players/active",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/players/active',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 1,
"first_name": "Ace",
"last_name": "Austin",
"position": "G",
"height": "5' 7\"",
"jersey_number": "1",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
},
{
"id": 2,
"first_name": "Leah",
"last_name": "Brooks",
"position": "G",
"height": "6' 3\"",
"jersey_number": "24",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
},
{
"id": 3,
"first_name": "Tianna",
"last_name": "Chambers",
"position": "G",
"height": "6' 1\"",
"jersey_number": "11",
"team": {
"id": 274,
"conference_id": 24,
"name": "Crimson Tide",
"full_name": "Alabama Crimson Tide",
"college": "Alabama",
"abbreviation": "ALA"
}
},
...
],
"meta": {
"next_cursor": 3,
"per_page": 3
}
}
This endpoint retrieves all currently active NCAAW players.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/players/active
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| search | false | Returns players whose first or last name matches this value. For example, ?search=clark will return players that have 'clark' in their first or last name. |
| first_name | false | Returns players whose first name matches this value. For example, ?first_name=paige will return players that have 'paige' in their first name. |
| last_name | false | Returns players whose last name matches this value. For example, ?last_name=clark will return players that have 'clark' in their last name. |
| team_ids | false | Returns players that belong to these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| player_ids | false | Returns players that match these ids. This should be an array: ?player_ids[]=1&player_ids[]=2 |
Standings
Get Standings
curl "https://api.balldontlie.io/ncaaw/v1/standings?conference_id=1&season=2024" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/standings?conference_id=1&season=2024",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/standings',
params={'conference_id': 1, 'season': 2024},
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"team": {
"id": 9,
"conference_id": 1,
"name": "Wolfpack",
"full_name": "NC State Wolfpack",
"college": "NC State",
"abbreviation": "NCSU"
},
"conference": {
"id": 1,
"name": "Atlantic Coast Conference",
"short_name": "ACC"
},
"season": 2024,
"wins": 28,
"losses": 7,
"win_percentage": 0.8,
"conference_win_percentage": 0.889,
"games_behind": 0,
"home_record": "18-0",
"away_record": "7-3",
"conference_record": "16-2",
"playoff_seed": 1
},
{
"team": {
"id": 11,
"conference_id": 1,
"name": "Fighting Irish",
"full_name": "Notre Dame Fighting Irish",
"college": "Notre Dame",
"abbreviation": "ND"
},
"conference": {
"id": 1,
"name": "Atlantic Coast Conference",
"short_name": "ACC"
},
"season": 2024,
"wins": 28,
"losses": 6,
"win_percentage": 0.824,
"conference_win_percentage": 0.889,
"games_behind": 0,
"home_record": "16-1",
"away_record": "11-1",
"conference_record": "16-2",
"playoff_seed": 2
},
...
]
}
This endpoint retrieves NCAAW standings for a specific conference.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/standings
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| conference_id | true | The ID of the conference |
| season | true | Filter by season year |
Games
Get All Games
curl "https://api.balldontlie.io/ncaaw/v1/games" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/games", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/games',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 6101,
"date": "2024-11-05T00:30:00.000Z",
"season": 2024,
"status": "post",
"period_detail": "Final",
"period": 0,
"home_team": {
"id": 285,
"conference_id": 24,
"name": "Gamecocks",
"full_name": "South Carolina Gamecocks",
"college": "South Carolina",
"abbreviation": "SC"
},
"visitor_team": {
"id": 118,
"conference_id": 10,
"name": "Wolverines",
"full_name": "Michigan Wolverines",
"college": "Michigan",
"abbreviation": "MICH"
},
"home_score": 68,
"away_score": 62,
"home_score_q1": 18,
"away_score_q1": 21,
"home_score_q2": 19,
"away_score_q2": 17,
"home_score_q3": 17,
"away_score_q3": 13,
"home_score_q4": 14,
"away_score_q4": 11,
"home_score_ot": null,
"away_score_ot": null,
"home_ot_scores": null,
"away_ot_scores": null
},
{
"id": 6102,
"date": "2024-11-04T17:00:00.000Z",
"season": 2024,
"status": "post",
"period_detail": "Final",
"period": 0,
"home_team": {
"id": 128,
"conference_id": 10,
"name": "Trojans",
"full_name": "USC Trojans",
"college": "USC",
"abbreviation": "USC"
},
"visitor_team": {
"id": 284,
"conference_id": 24,
"name": "Rebels",
"full_name": "Ole Miss Rebels",
"college": "Ole Miss",
"abbreviation": "MISS"
},
"home_score": 68,
"away_score": 66,
"home_score_q1": 15,
"away_score_q1": 16,
"home_score_q2": 22,
"away_score_q2": 10,
"home_score_q3": 15,
"away_score_q3": 19,
"home_score_q4": 16,
"away_score_q4": 21,
"home_score_ot": null,
"away_score_ot": null,
"home_ot_scores": null,
"away_ot_scores": null
},
{
"id": 6103,
"date": "2024-11-04T19:48:00.000Z",
"season": 2024,
"status": "post",
"period_detail": "Final",
"period": 0,
"home_team": {
"id": 127,
"conference_id": 10,
"name": "Bruins",
"full_name": "UCLA Bruins",
"college": "UCLA",
"abbreviation": "UCLA"
},
"visitor_team": {
"id": 7,
"conference_id": 1,
"name": "Cardinals",
"full_name": "Louisville Cardinals",
"college": "Louisville",
"abbreviation": "LOU"
},
"home_score": 66,
"away_score": 59,
"home_score_q1": 13,
"away_score_q1": 18,
"home_score_q2": 19,
"away_score_q2": 11,
"home_score_q3": 18,
"away_score_q3": 17,
"home_score_q4": 16,
"away_score_q4": 13,
"home_score_ot": null,
"away_score_ot": null,
"home_ot_scores": null,
"away_ot_scores": null
}
],
"meta": {
"next_cursor": 6103,
"per_page": 3
}
}
This endpoint retrieves all NCAAW games.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/games
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| dates | false | Returns games that match these dates. Dates should be formatted in YYYY-MM-DD. This should be an array: ?dates[]=2024-11-04&dates[]=2024-11-05 |
| seasons | false | Returns games that occurred in these seasons. This should be an array: ?seasons[]=2024&seasons[]=2025 |
| team_ids | false | Returns games for these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| start_date | false | Returns games that occurred on or after this date. Date should be formatted in YYYY-MM-DD |
| end_date | false | Returns games that occurred on or before this date. Date should be formatted in YYYY-MM-DD |
Get a Specific Game
curl "https://api.balldontlie.io/ncaaw/v1/games/<ID>" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/games/1", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/games/1',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": {
"id": 1,
"date": "2025-11-04T22:30:00.000Z",
"season": 2025,
"status": "post",
"period_detail": "Final",
"period": 4,
"home_team": {
"id": 91,
"conference_id": 7,
"name": "Huskies",
"full_name": "UConn Huskies",
"college": "UConn",
"abbreviation": "CONN"
},
"visitor_team": {
"id": 7,
"conference_id": 1,
"name": "Cardinals",
"full_name": "Louisville Cardinals",
"college": "Louisville",
"abbreviation": "LOU"
},
"home_score": 79,
"away_score": 66,
"home_score_q1": 25,
"away_score_q1": 9,
"home_score_q2": 19,
"away_score_q2": 14,
"home_score_q3": 17,
"away_score_q3": 17,
"home_score_q4": 18,
"away_score_q4": 26,
"home_score_ot": null,
"away_score_ot": null,
"home_ot_scores": null,
"away_ot_scores": null
}
}
This endpoint retrieves a specific NCAAW game.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/games/<ID>
URL Parameters
| Parameter | Required | Description |
|---|---|---|
| ID | true | The ID of the game to retrieve |
Rankings
Get Rankings
curl "https://api.balldontlie.io/ncaaw/v1/rankings?season=2024" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/rankings?season=2024",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/rankings',
params={'season': 2024},
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"poll": "ap",
"team": {
"id": 127,
"conference_id": 10,
"name": "Bruins",
"full_name": "UCLA Bruins",
"college": "UCLA",
"abbreviation": "UCLA"
},
"season": 2024,
"week": 20,
"rank": 1,
"first_place_votes": 19,
"trend": "-",
"points": 779,
"record": "30-2"
},
{
"poll": "ap",
"team": {
"id": 285,
"conference_id": 24,
"name": "Gamecocks",
"full_name": "South Carolina Gamecocks",
"college": "South Carolina",
"abbreviation": "SC"
},
"season": 2024,
"week": 20,
"rank": 2,
"first_place_votes": 8,
"trend": "-",
"points": 761,
"record": "30-3"
},
{
"poll": "ap",
"team": {
"id": 91,
"conference_id": 7,
"name": "Huskies",
"full_name": "UConn Huskies",
"college": "UConn",
"abbreviation": "CONN"
},
"season": 2024,
"week": 20,
"rank": 3,
"first_place_votes": 5,
"trend": "-",
"points": 737,
"record": "31-3"
},
{
"poll": "ap",
"team": {
"id": 128,
"conference_id": 10,
"name": "Trojans",
"full_name": "USC Trojans",
"college": "USC",
"abbreviation": "USC"
},
"season": 2024,
"week": 20,
"rank": 4,
"first_place_votes": null,
"trend": "-",
"points": 713,
"record": "28-3"
},
{
"poll": "ap",
"team": {
"id": 288,
"conference_id": 24,
"name": "Longhorns",
"full_name": "Texas Longhorns",
"college": "Texas",
"abbreviation": "TEX"
},
"season": 2024,
"week": 20,
"rank": 5,
"first_place_votes": null,
"trend": "-",
"points": 689,
"record": "31-3"
},
...
]
}
This endpoint retrieves NCAAW AP Poll rankings.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/rankings
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| season | true | Season year |
| week | false | Filter by week number (defaults to latest week) |
Play-by-Play
Get Play-by-Play Data
curl "https://api.balldontlie.io/ncaaw/v1/plays?game_id=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/plays?game_id=1",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/plays',
params={'game_id': 1},
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"game_id": 1,
"order": 1,
"type": "Jumpball",
"text": "Start game",
"home_score": 0,
"away_score": 0,
"period": 1,
"clock": "10:00",
"scoring_play": false,
"score_value": null
},
{
"game_id": 1,
"order": 2,
"type": "Jumpball",
"text": "Jump Ball won by UConn",
"home_score": 0,
"away_score": 0,
"period": 1,
"clock": "9:59",
"scoring_play": false,
"score_value": null,
"team": {
"id": 91,
"conference_id": 7,
"name": "Huskies",
"full_name": "UConn Huskies",
"college": "UConn",
"abbreviation": "CONN"
}
},
{
"game_id": 1,
"order": 3,
"type": "Jumpball",
"text": "Jump Ball lost by Louisville",
"home_score": 0,
"away_score": 0,
"period": 1,
"clock": "9:59",
"scoring_play": false,
"score_value": null,
"team": {
"id": 7,
"conference_id": 1,
"name": "Cardinals",
"full_name": "Louisville Cardinals",
"college": "Louisville",
"abbreviation": "LOU"
}
},
{
"game_id": 1,
"order": 4,
"type": "JumpShot",
"text": "Azzi Fudd missed Three Point Jumper.",
"home_score": 0,
"away_score": 0,
"period": 1,
"clock": "9:52",
"scoring_play": false,
"score_value": 3,
"team": {
"id": 91,
"conference_id": 7,
"name": "Huskies",
"full_name": "UConn Huskies",
"college": "UConn",
"abbreviation": "CONN"
}
},
{
"game_id": 1,
"order": 5,
"type": "Offensive Rebound",
"text": "Serah Williams Offensive Rebound.",
"home_score": 0,
"away_score": 0,
"period": 1,
"clock": "9:47",
"scoring_play": false,
"score_value": null,
"team": {
"id": 91,
"conference_id": 7,
"name": "Huskies",
"full_name": "UConn Huskies",
"college": "UConn",
"abbreviation": "CONN"
}
}
]
}
This endpoint retrieves play-by-play data for a specific game.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/plays
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| game_id | true | The game ID |
Player Stats
Get Player Statistics
curl "https://api.balldontlie.io/ncaaw/v1/player_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/player_stats",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/player_stats',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"player": {
"id": 70169,
"first_name": "Quentarra",
"last_name": "Mitchell",
"position": "Forward",
"height": null,
"jersey_number": "25"
},
"team": {
"id": 29,
"conference_id": 2,
"name": "Hatters",
"full_name": "Stetson Hatters",
"college": "Stetson",
"abbreviation": "STET"
},
"game": {
"id": 6120,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"min": "25",
"fgm": 3,
"fga": 10,
"fg3m": 2,
"fg3a": 4,
"ftm": 2,
"fta": 2,
"oreb": 1,
"dreb": 4,
"reb": 5,
"ast": 0,
"stl": 4,
"blk": 0,
"turnover": 1,
"pf": 1,
"pts": 10
},
{
"player": {
"id": 69737,
"first_name": "Tiasia",
"last_name": "McMillan",
"position": "Forward",
"height": null,
"jersey_number": "11"
},
"team": {
"id": 29,
"conference_id": 2,
"name": "Hatters",
"full_name": "Stetson Hatters",
"college": "Stetson",
"abbreviation": "STET"
},
"game": {
"id": 6120,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"min": "29",
"fgm": 4,
"fga": 12,
"fg3m": 0,
"fg3a": 3,
"ftm": 2,
"fta": 4,
"oreb": 1,
"dreb": 4,
"reb": 5,
"ast": 3,
"stl": 2,
"blk": 0,
"turnover": 2,
"pf": 2,
"pts": 10
},
{
"player": {
"id": 3956,
"first_name": "Cameron",
"last_name": "Thomas",
"position": "G",
"height": "5' 9\"",
"jersey_number": "21"
},
"team": {
"id": 29,
"conference_id": 2,
"name": "Hatters",
"full_name": "Stetson Hatters",
"college": "Stetson",
"abbreviation": "STET"
},
"game": {
"id": 6120,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"min": "23",
"fgm": 4,
"fga": 13,
"fg3m": 1,
"fg3a": 6,
"ftm": 2,
"fta": 3,
"oreb": 0,
"dreb": 2,
"reb": 2,
"ast": 0,
"stl": 0,
"blk": 0,
"turnover": 0,
"pf": 3,
"pts": 11
}
],
"meta": {
"next_cursor": 2060759,
"per_page": 3
}
}
This endpoint retrieves player game statistics.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/player_stats
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| player_ids | false | Returns stats for these player ids. This should be an array: ?player_ids[]=1&player_ids[]=2 |
| team_ids | false | Returns stats for these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| game_ids | false | Returns stats for these game ids. This should be an array: ?game_ids[]=1&game_ids[]=2 |
| dates | false | Returns stats that match these dates. Dates should be formatted in YYYY-MM-DD. This should be an array: ?dates[]=2024-11-04&dates[]=2024-11-05 |
| seasons | false | Returns stats that occurred in these seasons. This should be an array: ?seasons[]=2024&seasons[]=2025 |
| start_date | false | Returns stats that occurred on or after this date. Date should be formatted in YYYY-MM-DD |
| end_date | false | Returns stats that occurred on or before this date. Date should be formatted in YYYY-MM-DD |
Team Stats
Get Team Statistics
curl "https://api.balldontlie.io/ncaaw/v1/team_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/ncaaw/v1/team_stats", {
headers: { Authorization: "YOUR_API_KEY" },
});
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/team_stats',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"team": {
"id": 29,
"conference_id": 2,
"name": "Hatters",
"full_name": "Stetson Hatters",
"college": "Stetson",
"abbreviation": "STET"
},
"game": {
"id": 6120,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"fgm": 19,
"fga": 68,
"fg_pct": 28,
"fg3m": 6,
"fg3a": 28,
"fg3_pct": 21,
"ftm": 9,
"fta": 15,
"ft_pct": 60,
"oreb": 8,
"dreb": 28,
"reb": 36,
"ast": 9,
"stl": 10,
"blk": null,
"turnovers": 16,
"fouls": 19
},
{
"team": {
"id": 8,
"conference_id": 1,
"name": "Hurricanes",
"full_name": "Miami Hurricanes",
"college": "Miami",
"abbreviation": "MIA"
},
"game": {
"id": 6120,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"fgm": 28,
"fga": 66,
"fg_pct": 42,
"fg3m": 5,
"fg3a": 24,
"fg3_pct": 21,
"ftm": 17,
"fta": 23,
"ft_pct": 74,
"oreb": 14,
"dreb": 44,
"reb": 58,
"ast": 14,
"stl": 11,
"blk": 4,
"turnovers": 19,
"fouls": 16
},
{
"team": {
"id": 59,
"conference_id": 5,
"name": "Explorers",
"full_name": "La Salle Explorers",
"college": "La Salle",
"abbreviation": "LAS"
},
"game": {
"id": 6119,
"date": "2024-11-04T16:00:00.000Z",
"season": 2024
},
"fgm": 20,
"fga": 60,
"fg_pct": 33,
"fg3m": 2,
"fg3a": 13,
"fg3_pct": 15,
"ftm": 9,
"fta": 14,
"ft_pct": 64,
"oreb": 8,
"dreb": 28,
"reb": 36,
"ast": 14,
"stl": 14,
"blk": 1,
"turnovers": 13,
"fouls": 20
}
],
"meta": {
"next_cursor": 197345,
"per_page": 3
}
}
This endpoint retrieves team game statistics.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/team_stats
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| team_ids | false | Returns stats for these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| game_ids | false | Returns stats for these game ids. This should be an array: ?game_ids[]=1&game_ids[]=2 |
| dates | false | Returns stats that match these dates. Dates should be formatted in YYYY-MM-DD. This should be an array: ?dates[]=2024-11-04&dates[]=2024-11-05 |
| seasons | false | Returns stats that occurred in these seasons. This should be an array: ?seasons[]=2024&seasons[]=2025 |
| start_date | false | Returns stats that occurred on or after this date. Date should be formatted in YYYY-MM-DD |
| end_date | false | Returns stats that occurred on or before this date. Date should be formatted in YYYY-MM-DD |
Player Season Stats
Get Player Season Statistics
curl "https://api.balldontlie.io/ncaaw/v1/player_season_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/player_season_stats",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/player_season_stats',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"player": {
"id": 2850,
"first_name": "Mackenzie",
"last_name": "Hughes",
"position": "G",
"height": "5' 5\"",
"jersey_number": "5",
"team": {
"id": 324,
"conference_id": 28,
"name": "Fighting Hawks",
"full_name": "North Dakota Fighting Hawks",
"college": "North Dakota",
"abbreviation": "UND"
}
},
"team": {
"id": 324,
"conference_id": 28,
"name": "Fighting Hawks",
"full_name": "North Dakota Fighting Hawks",
"college": "North Dakota",
"abbreviation": "UND"
},
"season": 2024,
"games_played": 1,
"min": 39,
"fgm": 11,
"fga": 27,
"fg_pct": 40.74,
"fg3m": 3,
"fg3a": 13,
"fg3_pct": 23.08,
"ftm": 7,
"fta": 8,
"ft_pct": 87.5,
"reb": 2,
"ast": 2,
"stl": 9,
"blk": 0,
"turnover": 0,
"pts": 32
},
{
"player": {
"id": 68815,
"first_name": "Alize",
"last_name": "Ruiz",
"position": "Forward",
"height": null,
"jersey_number": "13",
"team": {
"id": 945,
"conference_id": null,
"name": "Warriors",
"full_name": "Bacone College Warriors",
"college": "Bacone College",
"abbreviation": "BACONE"
}
},
"team": {
"id": 945,
"conference_id": null,
"name": "Warriors",
"full_name": "Bacone College Warriors",
"college": "Bacone College",
"abbreviation": "BACONE"
},
"season": 2024,
"games_played": 1,
"min": 36,
"fgm": 15,
"fga": 22,
"fg_pct": 68.18,
"fg3m": 0,
"fg3a": 1,
"fg3_pct": 0,
"ftm": 1,
"fta": 2,
"ft_pct": 50,
"reb": 13,
"ast": 2,
"stl": 3,
"blk": 0,
"turnover": 2,
"pts": 31
},
{
"player": {
"id": 8076,
"first_name": "Cayla",
"last_name": "Howard",
"position": "ATH",
"height": null,
"jersey_number": "13",
"team": {
"id": 682,
"conference_id": null,
"name": "Chargers",
"full_name": "Dominican (NY) Chargers",
"college": "Dominican (NY)",
"abbreviation": "DOMNY"
}
},
"team": {
"id": 682,
"conference_id": null,
"name": "Chargers",
"full_name": "Dominican (NY) Chargers",
"college": "Dominican (NY)",
"abbreviation": "DOMNY"
},
"season": 2024,
"games_played": 1,
"min": 36,
"fgm": 9,
"fga": 25,
"fg_pct": 36,
"fg3m": 5,
"fg3a": 8,
"fg3_pct": 62.5,
"ftm": 4,
"fta": 4,
"ft_pct": 100,
"reb": 6,
"ast": 0,
"stl": 2,
"blk": 1,
"turnover": 1,
"pts": 27
}
],
"meta": {
"next_cursor": 299783,
"per_page": 3
}
}
This endpoint retrieves player season statistics.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/player_season_stats
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| player_ids | false | Returns stats for these player ids. This should be an array: ?player_ids[]=1&player_ids[]=2 |
| team_ids | false | Returns stats for these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| season | false | Filter by season year |
Team Season Stats
Get Team Season Statistics
curl "https://api.balldontlie.io/ncaaw/v1/team_season_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/team_season_stats",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/team_season_stats',
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"team": {
"id": 226,
"conference_id": 19,
"name": "Racers",
"full_name": "Murray State Racers",
"college": "Murray State",
"abbreviation": "MUR"
},
"season": 2024,
"games_played": 33,
"fgm": 30.242424,
"fga": 66.63636,
"fg_pct": 45.38,
"fg3m": 10.030303,
"fg3a": 28.636364,
"fg3_pct": 35.03,
"ftm": 16.30303,
"fta": 20.333334,
"ft_pct": 80.18,
"oreb": 11.454545,
"dreb": 27.69697,
"reb": 39.151516,
"ast": 17.90909,
"stl": 8.121212,
"blk": 2.2121212,
"turnover": 13.181818,
"pts": 86.818184
},
{
"team": {
"id": 5,
"conference_id": 1,
"name": "Seminoles",
"full_name": "Florida State Seminoles",
"college": "Florida State",
"abbreviation": "FSU"
},
"season": 2024,
"games_played": 32,
"fgm": 31.375,
"fga": 70.75,
"fg_pct": 44.35,
"fg3m": 8.5625,
"fg3a": 25.03125,
"fg3_pct": 34.21,
"ftm": 15.34375,
"fta": 19.5625,
"ft_pct": 78.43,
"oreb": 12.625,
"dreb": 27.78125,
"reb": 40.40625,
"ast": 13.40625,
"stl": 8.84375,
"blk": 5.90625,
"turnover": 11.15625,
"pts": 86.65625
},
{
"team": {
"id": 286,
"conference_id": 24,
"name": "Lady Volunteers",
"full_name": "Tennessee Lady Volunteers",
"college": "Tennessee",
"abbreviation": "TENN"
},
"season": 2024,
"games_played": 34,
"fgm": 32.64706,
"fga": 74.35294,
"fg_pct": 43.91,
"fg3m": 10.088235,
"fg3a": 31,
"fg3_pct": 32.54,
"ftm": 11.235294,
"fta": 16.5,
"ft_pct": 68.09,
"oreb": 16.852942,
"dreb": 23.588236,
"reb": 40.441177,
"ast": 15.558824,
"stl": 11.323529,
"blk": 3.0882354,
"turnover": 14.264706,
"pts": 86.617645
}
],
"meta": {
"next_cursor": 15523,
"per_page": 3
}
}
This endpoint retrieves team season statistics.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/team_season_stats
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| team_ids | false | Returns stats for these team ids. This should be an array: ?team_ids[]=1&team_ids[]=2 |
| season | false | Filter by season year |
March Madness Bracket
Get March Madness Bracket Data
curl "https://api.balldontlie.io/ncaaw/v1/bracket?season=2025" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/ncaaw/v1/bracket?season=2025",
{
headers: { Authorization: "YOUR_API_KEY" },
}
);
const data = await response.json();
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/bracket',
params={'season': 2025},
headers={'Authorization': 'YOUR_API_KEY'}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"game_id": 6101,
"season": 2024,
"round": 0,
"bracket_location": 1,
"date": "2025-03-20T01:05:00.000Z",
"location": "Los Angeles, CA",
"status": "post",
"status_detail": "Final",
"home_team": {
"id": 140,
"conference_id": 11,
"name": "Tritons",
"full_name": "UC San Diego Tritons",
"college": "UC San Diego",
"abbreviation": "UCSD",
"seed": "16",
"score": 56,
"winner": null
},
"away_team": {
"id": 300,
"conference_id": 25,
"name": "Jaguars",
"full_name": "Southern Jaguars",
"college": "Southern",
"abbreviation": "SOU",
"seed": "16",
"score": 68,
"winner": true
}
},
{
"game_id": 6102,
"season": 2024,
"round": 0,
"bracket_location": 2,
"date": "2025-03-20T23:00:00.000Z",
"location": "Chapel Hill, NC",
"status": "post",
"status_detail": "Final",
"home_team": {
"id": 179,
"conference_id": 15,
"name": "Lions",
"full_name": "Columbia Lions",
"college": "Columbia",
"abbreviation": "COLU",
"seed": "11",
"score": 63,
"winner": true
},
"away_team": {
"id": 129,
"conference_id": 10,
"name": "Huskies",
"full_name": "Washington Huskies",
"college": "Washington",
"abbreviation": "WASH",
"seed": "11",
"score": 60,
"winner": null
}
},
{
"game_id": 6103,
"season": 2024,
"round": 0,
"bracket_location": 3,
"date": "2025-03-19T23:00:00.000Z",
"location": "South Bend, IN",
"status": "post",
"status_detail": "Final",
"home_team": {
"id": 74,
"conference_id": 6,
"name": "Cyclones",
"full_name": "Iowa State Cyclones",
"college": "Iowa State",
"abbreviation": "ISU",
"seed": "11",
"score": 68,
"winner": true
},
"away_team": {
"id": 184,
"conference_id": 15,
"name": "Tigers",
"full_name": "Princeton Tigers",
"college": "Princeton",
"abbreviation": "PRIN",
"seed": "11",
"score": 63,
"winner": null
}
},
...
],
"meta": {
"next_cursor": 898,
"per_page": 3
}
}
This endpoint retrieves NCAA Women's March Madness bracket data.
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/bracket
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| season | false | Filter by season year |
| round_id | false | Filter by round: 0=First Four, 1=Round of 64, 2=Round of 32, 3=Sweet 16, 4=Elite 8, 5=Final Four, 6=Championship |
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
Betting Odds
Get Betting Odds
curl "https://api.balldontlie.io/ncaaw/v1/odds?dates[]=2025-11-10" \
-H "Authorization: YOUR_API_KEY"
const axios = require("axios");
const response = await axios.get("https://api.balldontlie.io/ncaaw/v1/odds", {
params: {
dates: ["2025-11-10"],
},
headers: {
Authorization: "YOUR_API_KEY",
},
});
console.log(response.data);
import requests
response = requests.get(
'https://api.balldontlie.io/ncaaw/v1/odds',
params={'dates': ['2025-11-10']},
headers={'Authorization': 'YOUR_API_KEY'}
)
print(response.json())
The above command returns JSON structured like this:
{
"data": [
{
"id": 133994421,
"game_id": 4475,
"vendor": "draftkings",
"spread_home_value": "-19.5",
"spread_home_odds": -115,
"spread_away_value": "19.5",
"spread_away_odds": -115,
"moneyline_home_odds": -15000,
"moneyline_away_odds": 2500,
"total_value": "141.5",
"total_over_odds": -110,
"total_under_odds": -120,
"updated_at": "2026-02-07T19:28:17.140Z"
},
{
"id": 134029144,
"game_id": 4476,
"vendor": "fanduel",
"spread_home_value": "17.5",
"spread_home_odds": -114,
"spread_away_value": "-17.5",
"spread_away_odds": -114,
"moneyline_home_odds": 3500,
"moneyline_away_odds": -50000,
"total_value": "152.5",
"total_over_odds": -112,
"total_under_odds": -118,
"updated_at": "2026-02-07T20:14:14.322Z"
}
],
"meta": { "next_cursor": 134029144, "per_page": 25 }
}
This endpoint retrieves betting odds for NCAAW games. You can filter by specific dates or by game IDs.
Available Vendors:
| Vendor | Description |
|---|---|
| betmgm | BetMGM |
| betrivers | BetRivers |
| caesars | Caesars Sportsbook |
| draftkings | DraftKings |
| fanatics | Fanatics Sportsbook |
| fanduel | FanDuel |
HTTP Request
GET https://api.balldontlie.io/ncaaw/v1/odds
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor, used for pagination |
| per_page | false | The number of results per page. Default to 25. Max is 100 |
| dates | false | Returns odds for games on these dates (YYYY-MM-DD format). Array: ?dates[]=2025-01-15&dates[]=2025-01-16 |
| game_ids | false | Returns odds for these game ids. This should be an array: ?game_ids[]=12345&game_ids[]=12346 |