NCAA API: Get NCAA Top 25 rankings
Gets the latest NCAA.com Top 25 ranking for a college sport: AP, College Football Playoff, or D1Baseball for baseball. Coaches polls and polls not yet published for the current season are unavailable.
Unofficial. Not affiliated with or endorsed by NCAA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Poll optional
poll Poll to show, for example ap. Baseball always uses the D1Baseball Top 25, since it has no AP poll.
ap (default)
One of
ap,coaches,college_football_playoff.- Sport, required
sport College sport to rank, for example football.
baseball
One of
football,mens_basketball,womens_basketball,baseball.
Input as JSON
{ "sport": "baseball"}Output
{ "sport": "baseball", "teams": [ { "rank": 1, "team": "Oklahoma", "record": "43-23", "page_link": "https://www.ncaa.com/rankings/baseball/d1/d1baseballcom-top-25" , "poll_points": null, "previous_rank": null, "first_place_votes": null }, { "rank": 2, "team": "North Carolina", "record": "54-14", "page_link": "https://www.ncaa.com/rankings/baseball/d1/d1baseballcom-top-25" , "poll_points": null, "previous_rank": 4, "first_place_votes": null }, { "rank": 3, "team": "Georgia", "record": "53-14", "page_link": "https://www.ncaa.com/rankings/baseball/d1/d1baseballcom-top-25" , "poll_points": null, "previous_rank": 3, "first_place_votes": null } ], "poll_name": "D1Baseball.com Top 25", "poll_date_or_week": "Through Games JUN. 23, 2026"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"ncaa.com/get_rankings","input":{"sport":"baseball"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "ncaa.com/get_rankings" , "input": { "sport": "baseball" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "ncaa.com/get_rankings" , "input": { "sport": "baseball" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run ncaa.com/get_rankings# with {"sport":"baseball"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "sport" ], "properties": { "poll": { "enum": [ "ap", "coaches", "college_football_playoff" ], "type": "string", "default": "ap", "description": "Poll to show, for example ap. Baseball always uses the D1Baseball Top 25, since it has no AP poll." }, "sport": { "enum": [ "football", "mens_basketball", "womens_basketball", "baseball" ], "type": "string", "description": "College sport to rank, for example football." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "sport", "poll_name", "poll_date_or_week", "teams" ], "properties": { "sport": { "type": "string", "description": "Sport requested." }, "teams": { "type": "array", "items": { "type": "object", "required": [ "rank", "team", "record", "poll_points", "first_place_votes", "previous_rank", "page_link" ], "properties": { "rank": { "type": "integer" }, "team": { "type": "string" }, "record": { "type": [ "string", "null" ] }, "page_link": { "type": "string" }, "poll_points": { "type": [ "integer", "null" ] }, "previous_rank": { "type": [ "integer", "null" ] }, "first_place_votes": { "type": [ "integer", "null" ] } }, "additionalProperties": false } }, "poll_name": { "type": "string", "description": "Name of the published poll." }, "poll_date_or_week": { "type": "string", "description": "Poll period as labeled on the NCAA page." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
ncaa.com/get_rankings- Returns
- poll name, poll period, and teams with rank, record, points, first-place votes, previous rank
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method ncaa.com/get_rankings with the inputs above.
Ask your agent
- What is the latest AP Top 25 college football poll this week?
- Show me the current College Football Playoff rankings with records and previous ranks.
- Which teams are in the top 25 for men's basketball right now, and how many first-place votes did each get?
- Give me the D1Baseball Top 25 for this season, including each team's record and points.
- On ncaa.com, can you pull up the women's basketball top 25 with each team's previous rank?
See more
All NCAA methodsGets NCAA college sports games for a date (or, for football, the week containing it) with scores, rankings, live status, TV networks and NCAA game links, optionally for one conference.
ncaa.com/get_scoresLists the QS World University Rankings, or a QS subject ranking, for an edition and optionally one country, with each university's displayed rank, location, overall score and the indicator scores published for that table.
topuniversities.com/list_university_rankingsGets the latest official FIFA men's or women's national-team ranking, with points and movement since the previous ranking. Unranked teams are excluded.
fifa.com/get_world_rankingGets the ATP men's singles world rankings as of the latest published ranking date. Finds one ranked player by name, or returns up to 500 ranked players in rank order.
atptour.com/get_rankingsRanks Premier League players for a season by goals, assists or goalkeeper clean sheets, with each player's club and nationality.
premierleague.com/list_top_scorersGets ESPN scores and the schedule for a league on a local day. You can filter by team, and start times are shown in your time zone.
espn.com/get_scoresLists league leaders for a season and statistic in NBA basketball, NFL football, MLB baseball or NHL hockey. If no season is given, it uses the latest season with published leaders.
sports-reference.com/list_season_leadersFinds the latest game between two teams, or their game on a given date, in major US leagues, MLS or the EPL. Returns the score, scoring by period, leading players, team stats and player box scores.
espn.com/get_game_summary