NCAA APIstats.ncaa.org ↗
Access NCAA player/team search, game scoreboards, box scores, play-by-play, rosters, schedules, coach records, and statistical rankings via a single API.
What is the NCAA API?
This API exposes 10 endpoints covering NCAA sports data from stats.ncaa.org, including player and team search, game-level box scores, play-by-play logs, team rosters and schedules, head coach win-loss records, and statistical ranking categories. The get_box_score endpoint alone returns per-player stats across both teams for any given contest, while search_head_coaches surfaces career wins, losses, tenure, and alma mater for coaches across all NCAA sports.
curl -X GET 'https://api.parse.bot/scraper/cc788f52-a551-42c0-9350-031581a15442/search_players?query=Harris&start=0&length=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for players by name across all sports and teams. Returns player names, IDs, seasons played, and team affiliations. Paginates via offset/length parameters.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword for player name |
| start | integer | Pagination offset (0-based index of first result) |
| length | integer | Number of results to return per page |
{
"type": "object",
"fields": {
"total": "integer total number of matching records",
"players": "array of player objects with name, player_id, seasons, and teams"
},
"sample": {
"data": {
"total": 2913931,
"players": [
{
"name": "Harrison Aakre",
"teams": [
{
"team_name": "Concordia-M'head Football",
"team_history_url": "/teams/history/MFB/161"
}
],
"seasons": "1",
"player_id": "3297520"
}
]
},
"status": "success"
}
}About the NCAA API
Player, Team, and Coach Search
The search_players endpoint accepts a query string and returns an array of player objects with name, player_id, seasons, and teams. Results paginate via start and length parameters, and the response includes a total field indicating how many records match. search_teams uses a term parameter and returns objects with vid, label (name plus conference), value (team ID), and org_id. search_head_coaches accepts a query and an optional sport code, returning coach records with wins, losses, ties, wl_pct, tenure, alma_mater, and seasons.
Game Data: Scoreboards, Box Scores, and Play-by-Play
get_scoreboard takes a date (MM/DD/YYYY), year, sport, and division, returning game objects with team1_name, team1_id, team1_score, team2_name, team2_id, team2_score, and contest_id. That contest_id feeds directly into get_box_score, which returns per-player stat columns for both teams, and into get_play_by_play, which returns every logged event with period, time, team, event description, and running score.
Team Schedule and Roster
get_team_schedule accepts a team_id and returns game objects with date, opponent, result, contest_id, and attendance. get_team_roster uses the same team_id parameter and returns player records including GP, GS, number, Name, Class, Position, Height, Hometown, High School, and player_id — enough to build a full depth chart or link roster players to their individual statistics.
Rankings and Defensive Player Stats
get_rankings accepts year, sport, and division, returning ranking category objects with stat_name, stat_seq, and url pointing to detailed national rankings. get_defensive_player_stats takes a player_id and optional season year, returning college football defensive figures: solo_tackles, total_tackles, sacks, sack_yards, qb_hurries, blocked_kicks, forced_fumbles, and passes_defended. Fields are returned as strings; null values indicate the stat is not tracked for that player or season.
The NCAA API is a managed, monitored endpoint for stats.ncaa.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when stats.ncaa.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official stats.ncaa.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a coach comparison tool using
search_head_coacheswin-loss records and tenure data across sports. - Aggregate live NCAA game scores with
get_scoreboardfiltered by sport and division for a dashboard. - Pull per-player box score data from
get_box_scoreto feed a fantasy sports or analytics model. - Reconstruct game timelines using
get_play_by_playevent logs with period, time, and score fields. - Generate team depth charts by combining
get_team_rosterplayer details with schedule results fromget_team_schedule. - Track defensive player performance in college football using
get_defensive_player_statssack and tackle fields across seasons. - Discover all statistical ranking categories available for a sport and division via
get_rankingsbefore querying detailed leaderboards.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does stats.ncaa.org have an official developer API?+
What does `get_defensive_player_stats` actually return, and how does the `season` parameter work?+
get_defensive_player_stats returns college football defensive stats — solo_tackles, total_tackles, sacks, sack_yards, qb_hurries, blocked_kicks, forced_fumbles, and passes_defended — for a given player_id. Pass a season year (e.g., 2025 for fall 2025) to get single-season figures; omit it to get career totals. Fields not tracked for a player return null rather than zero.Does `search_players` return statistics directly, or just identifying information?+
search_players returns identifying data only: name, player_id, seasons, and teams. It is primarily a lookup tool. Use the returned player_id with endpoints like get_defensive_player_stats to retrieve actual statistics.Does the API cover offensive player statistics — passing yards, rushing yards, or receiving stats?+
get_defensive_player_stats for college football defensive figures and get_box_score for game-level per-player stats, but no dedicated endpoint returns season-level offensive player statistics. You can fork this API on Parse and revise it to add an endpoint targeting offensive stat categories.Are all NCAA sports and divisions available, or is coverage limited?+
get_scoreboard, get_rankings, and search_head_coaches accept sport and division parameters, so coverage spans multiple sports and divisions where data is available on stats.ncaa.org. However, data freshness depends on what the source site has published; not all historical seasons or lower-visibility sports may have complete records. You can fork the API on Parse and revise it to target specific sport codes or add historical season handling if needed.