NCAAF APIncaaf.com ↗
Access NCAAF scores, schedules, team/player stats, rosters, rankings, and betting odds via 8 structured endpoints covering FBS and FCS football.
What is the NCAAF API?
The NCAAF.com API exposes 8 endpoints covering live scoreboards, game boxscores, team and player statistics, rosters, rankings, and betting lines for college football. The get_game_details endpoint alone returns odds, drive summaries, scoring plays, against-the-spread records, and per-player stat leaders in a single response. Both FBS (group 80) and FCS (group 81) divisions are supported across scoreboard and team listing calls.
curl -X GET 'https://api.parse.bot/scraper/ee756345-80a0-49e2-8004-b478f878ca4e/get_scoreboard?date=20241012&limit=100&groups=80' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace ncaaf-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: NCAAF College Football SDK — bounded, re-runnable; every call capped."""
from parse_apis.ncaaf_college_football_api import NCAAF, Group, TeamNotFound
client = NCAAF()
# List today's scoreboard events (FBS games)
for event in client.events.list(date="20241012", groups=Group.FBS, limit=3):
print(event.name, event.short_name, event.date)
# Search for a team, then drill into its sub-resources
team = client.teams.search(query="Alabama", limit=1).first()
if team:
print(team.display_name, team.abbreviation, team.location)
# Get team season stats via sub-resource
stats = team.stats.get()
print(stats.team, stats.season)
# List roster position groups
for group in team.roster.list(limit=3):
print(group.position, len(group.items))
# Constructible team: directly access a known team's roster by ID
ohio_state = client.team(id="194")
for group in ohio_state.roster.list(limit=2):
print(group.position)
# Get game details from an event
event = client.events.list(date="20241012", limit=1).first()
if event:
try:
detail = event.details()
print(detail.boxscore, detail.header)
except TeamNotFound as exc:
print(f"Event not found: {exc}")
# Current rankings
for ranking in client.rankings.list(limit=3):
print(ranking.name, ranking.id, ranking.headline)
print("exercised: events.list / teams.search / team.stats.get / team.roster.list / event.details / rankings.list")
Retrieve the scoreboard/schedule for a specific date or the current week. Returns game events with scores, teams, status, and broadcast information. Each event includes competitors with scores, records, and game leaders. Paginates as a single page; pass date in YYYYMMDD format to target a specific day.
| Param | Type | Description |
|---|---|---|
| date | string | Date in YYYYMMDD format (e.g., '20241012'). Omitting returns the current week's scoreboard. |
| limit | integer | Maximum number of events to return. |
| groups | integer | Group ID: 80 for FBS, 81 for FCS. |
{
"type": "object",
"fields": {
"events": "array of game event objects with scores, teams, and status",
"groups": "array of group ID strings",
"leagues": "array of league metadata objects"
},
"sample": {
"data": {
"events": [
{
"id": "401628390",
"date": "2024-10-12T19:30Z",
"name": "Texas Longhorns at Oklahoma Sooners",
"shortName": "TEX VS OU",
"competitions": [
{
"competitors": [
{
"team": {
"displayName": "Oklahoma Sooners"
},
"score": "3"
},
{
"team": {
"displayName": "Texas Longhorns"
},
"score": "34"
}
]
}
]
}
],
"groups": [
"80"
],
"leagues": [
{
"id": "23",
"abbreviation": "NCAAF"
}
]
},
"status": "success"
}
}About the NCAAF API
Scores, Schedules, and Game Data
The get_scoreboard endpoint returns game events for a given date (YYYYMMDD format) or the current week when no date is supplied. Each event object includes team names, scores, and game status, alongside a week object showing the current week number and date range, a season object with year and type, and leagues metadata. The optional groups parameter filters results to FBS (80) or FCS (81).
The get_game_details endpoint accepts an event_id and returns a dense response: a boxscore with team and player statistics, a drives object with drive-by-drive play data, scoringPlays array, leaders covering passing/rushing/receiving stat leaders, and header with competitor scores and game status. On the betting side it exposes odds (lines and spreads), pickcenter (betting pick data), and againstTheSpread records for each team.
Teams, Rosters, and Player Stats
get_teams returns team data nested as sports[].leagues[].teams[], with an optional groups filter for FBS or FCS. search_teams accepts a query string and matches against team displayName, name, and abbreviation fields, returning an array of matching team objects. get_team_stats takes a team_id and optional season year, returning passing, rushing, receiving, and defensive categories under a results object along with opponent stats and the team's current record. get_team_roster returns athletes grouped by position (offense, defense, special teams) plus a coach array for coaching staff.
get_athlete_stats accepts an athlete_id and optional season, returning athlete bio metadata, season details, and related news articles. get_rankings requires no parameters and returns all active polls — AP Top 25, Coaches Poll, and CFP Rankings — as an array of poll objects, each listing ranked teams with their current and previous positions.
The NCAAF API is a managed, monitored endpoint for ncaaf.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ncaaf.com 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 ncaaf.com 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?+
- Display live FBS scoreboard with scores and game status for a specific week using
get_scoreboardwith thegroupsparameter - Build a betting dashboard using the
odds,pickcenter, andagainstTheSpreadfields returned byget_game_details - Track season-long passing, rushing, and receiving stats for any FBS or FCS team via
get_team_stats - Power a depth-chart or roster page with position-grouped athlete data from
get_team_roster - Show AP Top 25 and CFP Rankings side-by-side with current and previous rank positions using
get_rankings - Automate game recap generation by pulling drive summaries and scoring plays from
get_game_details - Implement a team search feature using
search_teamsto match user input against team names and abbreviations
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ncaaf.com have an official developer API?+
What betting data does `get_game_details` return?+
odds array with betting lines and spreads, a pickcenter array with pick data, and an againstTheSpread array showing each team's ATS record for the season. All three fields are included in the same response as the boxscore and play-by-play data, so you can correlate game outcomes with betting information in one call.Does the API cover historical seasons, or only the current season?+
get_team_stats and get_athlete_stats endpoints accept an optional season year parameter, so historical season data can be requested by passing a specific year. get_scoreboard accepts a date parameter in YYYYMMDD format to retrieve past results. get_rankings and get_team_roster return current data only and do not accept a season parameter.Does the API return play-by-play data beyond drive summaries?+
get_game_details includes a drives object with drive-by-drive summaries and a scoringPlays array, but individual play-by-play records within each drive are not exposed as a separate dataset. You can fork this API on Parse and revise it to add a dedicated play-by-play endpoint.Are team IDs documented, or do I need to look them up?+
get_teams (optionally filtered by FBS or FCS via the groups parameter) or search_teams with a name or abbreviation query to retrieve team objects that include the id field needed for get_team_stats and get_team_roster calls.