NCAA APIstats.ncaa.org ↗
Access NCAA player stats, team rosters, schedules, box scores, play-by-play, coach records, and passing efficiency leaders via the stats.ncaa.org API.
What is the NCAA API?
This API exposes 17 endpoints covering NCAA sports statistics from stats.ncaa.org, including player search, game-level box scores, play-by-play logs, team rosters and schedules, head coach win-loss records, and division-wide passing efficiency rankings. The get_box_score endpoint returns per-player stat columns for both teams in a contest, while get_play_by_play delivers every logged event with period, time, score, and team attribution.
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 and Team Discovery
The search_players endpoint accepts a name query and returns player objects carrying player_id, affiliated teams, and seasons played. Pagination is controlled by start and length parameters, and the response includes a total count. search_teams uses an autocomplete lookup and returns vid, label (name plus conference), value (team ID), and org_id. get_team_roster accepts a team_id and returns each player's number, Class, Position, Height, Hometown, High School, and player_id, making it straightforward to build a full player list for any team-season.
Game Data: Scores, Box Scores, and Play-by-Play
The get_scoreboard endpoint takes date (MM/DD/YYYY), year, sport, and division and returns game objects with team1_name, team1_id, team1_score, team2_name, team2_id, team2_score, and contest_id. That contest_id is the key for both get_box_score, which returns per-player stats for every player on both teams, and get_play_by_play, which returns a full event log with period, time, team, event description, and running score. Team schedules—including opponent, result, contest_id, and attendance—are available via get_team_schedule.
Football-Specific Stats and Participation
Several endpoints are scoped to college football. get_offensive_player_stats and get_defensive_player_stats accept a player_id and optional season year and return season totals: passing yards, completions, rush touchdowns, receptions, and points for offense; solo tackles, sacks, sack yards, passes defended, and forced fumbles for defense. get_player_game_log returns one entry per game the player appeared in, with stats merged from up to 12 requested categories. The get_passing_efficiency_leaders endpoint returns the division ranking table for passing efficiency, with fields including rank, games_played, pass_attempts, completion_pct, pass_yards, pass_tds, interceptions, and efficiency_rating, with an optional ranking_period for weekly cuts.
Participation and Coach Data
get_team_participation_matrix builds a player-by-game grid for a team-season: each roster player row has a cells array aligned to the header's contest_id, date, opponent, and opponent_team_id arrays, with X or empty string indicating appearance. search_head_coaches returns coach records with wins, losses, ties, wl_pct, tenure, alma_mater, and sport, and accepts an optional sport code to narrow results. The get_rankings endpoint lists available statistical ranking categories for a given sport, division, and season, returning stat_name, stat_seq, and a URL to the full national ranking table.
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?+
- Track live NCAA game scores and results by polling
get_scoreboardfor a given sport and date. - Build player comparison tools using
get_offensive_player_statsandget_defensive_player_statsseason totals. - Reconstruct game timelines for analysis using
get_play_by_playevent logs with period, time, and score fields. - Compile head coach career win-loss records across all sports using
search_head_coacheswith tenure and win percentage fields. - Generate team depth charts by cross-referencing
get_team_rosterposition data withget_team_participation_matrixgame appearance grids. - Identify top college football passers by division using
get_passing_efficiency_leaderswith weeklyranking_periodfiltering. - Map recruiting pipelines by extracting
HometownandHigh Schoolfields fromget_team_rosteracross multiple team-seasons.
| 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 public developer API?+
What does `get_player_game_log` return, and how do I filter by stat category?+
date, opponent, opponent_team_id, result, contest_id, and a stats object whose keys are stat column names. You supply a comma-separated categories parameter (e.g. Tackles,Sacks) to control which stat columns are fetched and merged. Up to 12 categories can be fetched per call; any additional available categories appear in skipped_categories.Are sports other than football covered for player stats endpoints?+
get_offensive_player_stats, get_defensive_player_stats, get_player_game_log, get_passing_efficiency_leaders, get_position_participation, and get_team_participation_matrix endpoints are scoped to college football. Endpoints like search_players, get_box_score, get_scoreboard, and get_team_roster cover multiple sports. You can fork the API on Parse and revise it to add sport-specific stat endpoints for basketball, baseball, or other NCAA sports.How does pagination work for `search_players` and `search_head_coaches`?+
search_players uses start (0-based offset) and length (page size) parameters. The response includes a total integer so you can calculate the number of pages. search_head_coaches returns both a total (full database count) and filtered_total (count matching current filters), but does not expose offset/length parameters — it returns all matching coaches in one response.Does the API return historical season data going back more than one year?+
get_player_profile include a seasons array listing all available academic years with their corresponding player_id values, so multi-year lookups are possible by iterating seasons. However, the API does not include a dedicated endpoint for bulk historical season archives or year-over-year trend tables. You can fork the API on Parse and revise it to add an endpoint that aggregates multi-season stat rows for a given player or team.