Tutorial · 11 min · endpoints verified 2026-09-14
How to build college football rankings and conference standings
Combine the free FBS record table with team Elo for a transparent power order. This is not an AP, Coaches or CFP poll, and conference grouping remains caller-supplied until membership is served.
API coverage and endpoint overview: Explore the NCAAF API
Why this is hard
Standings and rankings answer different questions
Wins and losses describe results. A poll expresses voter judgment. Elo estimates team strength from results. Putting all three under one “rank” label is how a dashboard becomes misleading.
- The standings endpoint serves FBS records, but it does not serve AP, Coaches or CFP poll positions.
- The response does not expose a conference-membership field. Conference tabs need an explicit team-id list supplied by your application.
- Current Elo is free and useful as a power order, but it must be labeled Elo rather than “official ranking.”
- The season selector on stored NCAAF standings has documented unresolved behavior; read the returned season instead of assuming the requested one won.
Path 1 · recommended
Have your AI agent build it
The MCP tools can fetch standings and current team Elo. Give the agent your conference membership list, and require it to retain the labels “record” and “Elo” throughout the UI.
1. Connect the MCP server
Add the server in your MCP client and sign in with your Big Balls account. Your client registers itself and handles the token exchange — there is no key to copy.
{
"mcpServers": {
"bigballs-sports-data": {
"url": "https://mcp.bigballsdata.com/mcp"
}
}
}2. Tools your agent gets
get_standingsLeague table with wins, losses, win_pct, games_played.
get_team_eloTeam Elo rating, rank and optional rating history.
get_coverageMachine-readable map of what we hold and what we do not.
3. Ask for what you want
Paste this at your agent. It is written to make the model check coverage before it designs anything, which is what stops it inventing a field we do not serve.
Build a college football records and Elo dashboard for one conference.
First call get_coverage for american_football. Fetch NCAAF standings with
get_standings and read the season returned by the response. I will supply the
canonical team ids that belong to the conference; do not infer membership from
team names.
For those ids call get_team_elo. Show two separate columns: conference-filtered
W-L record and Elo power rank. Label the latter "Elo", never AP, Coaches or CFP.
If I do not supply team ids, render the league-wide FBS table and state that it
is not conference grouped.What the agent cannot reach
No MCP or REST route serves official college-football polls or conference membership today. The agent can calculate an Elo order only after the application supplies the conference team ids.
Path 2 · hand-coded
Build it yourself
The implementation treats conference membership as application configuration. It never guesses membership or renames Elo as an official poll.
- 01
Fetch the league-wide FBS record table
Read the season from the response. Do not assume a season query was honored for the stored NCAAF table.
GET /v1/standingsbashcurl -s "https://api.bigballsdata.com/v1/standings?sport=american_football&league=ncaaf" \ -H "x-api-key: $BBS_API_KEY" - 02
Declare conference membership
Store canonical team UUIDs in your own configuration. This list is product input because the API does not serve conference membership.
Application-owned conference configjavascriptconst conferenceTeamIds = new Set([ process.env.CONFERENCE_TEAM_ID_1, process.env.CONFERENCE_TEAM_ID_2, ].filter(Boolean)); - 03
Fetch current Elo for each configured team
Current Elo is free. Keep null ratings visible as unavailable rather than sorting them as zero.
GET /v1/teams/:id/elobashcurl -s "https://api.bigballsdata.com/v1/teams/$TEAM_ID/elo" \ -H "x-api-key: $BBS_API_KEY" - 04
Build two explicit orders
Sort records by wins and losses for the standings view, and non-null Elo ratings for the power view. Never label either one as an official poll.
Record and Elo view modelsjavascriptconst table = response.data.standings[0]; const conferenceRows = table.rows.filter((row) => conferenceTeamIds.has(row.team_id) ); const byRecord = conferenceRows.toSorted( (a, b) => b.wins - a.wins || a.losses - b.losses ); const byElo = enriched.filter((row) => row.elo_rating != null).toSorted( (a, b) => b.elo_rating - a.elo_rating );
Reference
Every endpoint this tutorial uses
All on the gateway at api.bigballsdata.com. Verified against production on 2026-09-14.
| Method | Path | Returns | Why you need it | Plan |
|---|---|---|---|---|
| GET | /v1/standings?sport=american_football&league=ncaaf | League-wide FBS team ids, W-L-T records, win percentage and returned season | Supplies the factual record table before caller-owned conference filtering. Read the endpoint guide.The stored NCAAF season selector has unresolved behavior; trust the season returned in the payload, not the requested query alone. | Free |
| GET | /v1/teams/:id/elo | Current Elo rating plus a locked-intelligence disclosure on Free | Provides a model-based power order that remains visibly distinct from standings and polls. How Elo is calculated. | Free |
| GET | /v1/teams/:id/elo/history | The team rating series over settled games | Adds a strength trend after the basic standings and current-rating view works. Interpret the rating history. | Solo |
Pricing, honestly
Current records and Elo are free; the Elo timeline is Solo
The entire current table works on Free. Solo earns its place when the product needs to explain how a team moved, not merely where it sits.
Free routes
GET /v1/standings?sport=american_football&league=ncaaf\nGET /v1/teams/{teamId}/eloSolo route
GET /v1/teams/{teamId}/elo/history?source=ncaaf- Free supports a league-wide record table and a current Elo power order.
- Solo adds the rating history needed for a “why did they move?” chart.
- Neither tier includes AP, Coaches or CFP poll positions or conference membership today.
More tutorials
Other build guides
- How to build a fantasy hockey app
- How to build a fantasy basketball app
- How to build a soccer xG app
- How to build a cricket app
- NFL fantasy football API tutorial
- How to build an NFL scouting tool
- How to build an NFL conditions analytics tool
- NFL betting model API tutorial
- NFL live game center API tutorial
- How to build an NCAAF scoreboard and live game center
- How to build an NCAAF fantasy football app
Known gaps
What is not an official poll or conference table
Use these labels literally; they prevent the application from upgrading model output into a claim the API does not support.
- No AP, Coaches or CFP rankings are served. Elo is an independent model rating.
- No conference membership field is served. The application must provide canonical team ids for its chosen conference.
- FCS has no standings or Elo today. This guide is FBS-only.
Questions
- Does the API return AP or CFP rankings?
- No. It returns FBS records and team Elo. Label Elo as Elo, never as an AP, Coaches or CFP position.
- Can I request one conference from the standings endpoint?
- Not today. Supply the conference’s canonical team ids in your application and filter the league-wide table.
- Why use ids instead of team names for conference membership?
- Names and abbreviations can change or collide. The standings response already provides canonical team ids, so membership should use those ids.
- Can I request historical NCAAF standings by season?
- Do not rely on that yet. The stored NCAAF season selector has unresolved behavior, so read and display the season returned by the response.
- Does this work for FCS?
- No. FCS schedules and scores are served under league=ncaaf-fcs, but FCS standings and Elo are not loaded today.
Related APIs
Other APIs you can build with: