College basketball rankings API (AP Top 25, Coaches Poll)

The men's college basketball AP Top 25 and Coaches Poll in JSON: each ranked team with rank, previous rank, record, points and first-place votes, plus others receiving votes. Latest release by default, or any past week.

Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

AvailableReturned Men's College Basketball data when checked.

Endpoint

  • GET/api/v1/sports/basketball/leagues/mens-college-basketball/rankings
  • College football and men's college basketball only.
  • CFP rankings have no points or first-place votes (null).

Live Men's College Basketball example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/basketball/leagues/mens-college-basketball/rankings?poll=ap"

Response captured from live data at 2026-11-07 13:48 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key. AP Top 25, Preseason: trimmed to the top 3 of 25 ranked teams.

Response

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "AP Top 25",
      "shortName": "AP Poll",
      "type": "ap",
      "week": {
        "number": 1,
        "label": "Preseason",
        "seasonType": 2
      },
      "season": 2027,
      "date": "2026-10-19T07:00Z",
      "lastUpdated": "2026-10-19T19:11Z",
      "ranks": [
        {
          "rank": 1,
          "previousRank": null,
          "trend": null,
          "points": 1461,
          "firstPlaceVotes": 47,
          "record": "0-0",
          "team": {
            "id": "57",
            "name": "Gators",
            "location": "Florida",
            "displayName": "Florida Gators",
            "abbreviation": "FLA",
            "conference": null,
            "logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTBheSkoYVg"
          }
        },
        {
          "rank": 2,
          "previousRank": null,
          "trend": null,
          "points": 1411,
          "firstPlaceVotes": 10,
          "record": "0-0",
          "team": {
            "id": "150",
            "name": "Blue Devils",
            "location": "Duke",
            "displayName": "Duke Blue Devils",
            "abbreviation": "DUKE",
            "conference": null,
            "logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTBxcVBQGX10"
          }
        },
        {
          "rank": 3,
          "previousRank": null,
          "trend": null,
          "points": 1342,
          "firstPlaceVotes": 2,
          "record": "0-0",
          "team": {
            "id": "356",
            "name": "Fighting Illini",
            "location": "Illinois",
            "displayName": "Illinois Fighting Illini",
            "abbreviation": "ILL",
            "conference": null,
            "logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTB5cUhQGX10"
          }
        }
      ],
      "othersReceivingVotes": [
        {
          "points": 167,
          "record": "0-0",
          "team": {
            "id": "142",
            "name": "Tigers",
            "location": "Missouri",
            "displayName": "Missouri Tigers",
            "abbreviation": "MIZ",
            "conference": null,
            "logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTBxdVhQGX10"
          }
        }
      ],
      "droppedOut": []
    }
  ],
  "meta": {
    "count": 1,
    "note": "Latest release of each poll.",
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1796083200000
    }
  }
}

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/basketball/leagues/mens-college-basketball/rankings?poll=ap"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/basketball/leagues/mens-college-basketball/rankings?poll=ap", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/basketball/leagues/mens-college-basketball/rankings?poll=ap",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

Each request above is 1 call. Free covers 125 calls a month after a 1,000-call first month, at 1 request/second. Starter is $29/month for 10,000 calls (about 333 a day) plus webhooks and WebSocket, so you stop polling for changes; 7-day free trial. Compare plans

Fields

FieldTypeNotes
idstring
namestring
shortNamestring
typestringap, usa (coaches), cfp, fcs, afca (Division II / III)
weekobject
seasonintegerCollege basketball seasons are named by the year they end (2026-27 = 2027).
datestring
lastUpdatedstring
ranksRankEntry[]
othersReceivingVotesobject[]
droppedOutobject[]

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Business$179/mo ($1,790/yr)150,000/mo40/s300,000 msgs/mo75,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

FAQ

Is there a free college basketball rankings API?
Yes. A free key (no card) includes every endpoint and league: 1,000 calls in the first 30 days, then 125 a month at 1 request per second. Paid plans start at $29/month for 10,000 calls and add webhooks and WebSocket.
Which season number do I use?
College basketball seasons are named by the year they end, so the 2026-27 season is season=2027.
How do I show a team's ranking next to its score?
Each ranked team carries the same team id as /events, so match on id.

Related