College rankings and polls API
The AP Top 25, coaches polls and (college football) the College Football Playoff rankings: each ranked team with rank, previous rank, trend, record, points and first-place votes, plus others receiving votes and teams that dropped out. Latest release by default, or a 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.
- College football and men's college basketball only.
- CFP rankings have no points or first-place votes (null).
Paths and parameters
GET/api/v1/sports/{sport}/leagues/{league}/rankings
Get college polls and rankings. AP Top 25, coaches polls and, for college football, the College Football Playoff rankings, FCS and Division II/III polls. Leagues: football/college-football and basketball/mens-college-basketball. Without `week`, the latest release of each poll. Each poll lists the ranked teams with record, points and first-place votes, plus others receiving votes and teams that dropped out.
sport(path, required): Sport slug: football, basketball, baseball, hockey, soccer.league(path, required): League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.poll(query): One poll: ap, coaches, cfp, fcs, afca, or a poll id. Default: every poll.week(query): A past week of the season (1-25). Default: the latest release.season(query): Season year for `week` (default: current). College basketball 2026-27 = 2027.seasonType(query): With `week`: 1 preseason, 2 regular season (default), 3 postseason.
Live example
Request
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/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. Trimmed to the top 3 of 25 ranked teams, 1 of 10 others receiving votes and 1 of 4 dropped out.
Response
{
"success": true,
"data": [
{
"id": "1",
"name": "AP Top 25",
"shortName": "AP Poll",
"type": "ap",
"week": {
"number": 10,
"label": "Week 10",
"seasonType": 2
},
"season": 2026,
"date": "2026-11-01T07:00Z",
"lastUpdated": "2026-11-01T22:08Z",
"ranks": [
{
"rank": 1,
"previousRank": 1,
"trend": "-",
"points": 1740,
"firstPlaceVotes": 62,
"record": "8-0",
"team": {
"id": "2390",
"name": "Hurricanes",
"location": "Miami",
"displayName": "Miami Hurricanes",
"abbreviation": "MIA",
"conference": "ACC",
"logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTB9aXQpYQVRe"
}
},
{
"rank": 2,
"previousRank": 3,
"trend": "+1",
"points": 1648,
"firstPlaceVotes": 7,
"record": "7-1",
"team": {
"id": "61",
"name": "Bulldogs",
"location": "Georgia",
"displayName": "Georgia Bulldogs",
"abbreviation": "UGA",
"conference": "SEC",
"logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTBtYSkoYVg"
}
},
{
"rank": 3,
"previousRank": 6,
"trend": "+3",
"points": 1540,
"firstPlaceVotes": 1,
"record": "8-0",
"team": {
"id": "254",
"name": "Utes",
"location": "Utah",
"displayName": "Utah Utes",
"abbreviation": "UTAH",
"conference": "Big 12",
"logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTB9cUBQGX10"
}
}
],
"othersReceivingVotes": [
{
"points": 79,
"record": "0-0",
"team": {
"id": "77",
"name": "Wildcats",
"location": "Northwestern",
"displayName": "Northwestern Wildcats",
"abbreviation": "NU",
"conference": "Big Ten",
"logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTBpeSkoYVg"
}
}
],
"droppedOut": [
{
"previousRank": 19,
"record": "0-0",
"team": {
"id": "2567",
"name": "Mustangs",
"location": "SMU",
"displayName": "SMU Mustangs",
"abbreviation": "SMU",
"conference": "ACC",
"logo": "https://www.realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXR0CWxFaV1xZTB9cUg1YQVRe"
}
}
]
}
],
"meta": {
"count": 1,
"note": "Latest release of each poll.",
"rateLimit": {
"limit": 125,
"remaining": 124,
"reset": 1796083200000
}
}
}Fields
| Field | Type | Notes |
|---|---|---|
| id | string | |
| name | string | |
| shortName | string | |
| type | string | ap, usa (coaches), cfp, fcs, afca (Division II / III) |
| week | object | |
| season | integer | College basketball seasons are named by the year they end (2026-27 = 2027). |
| date | string | |
| lastUpdated | string | |
| ranks | RankEntry[] | |
| othersReceivingVotes | object[] | |
| droppedOut | object[] |
League support
Checked against live data on 2026-10-04: 2 available, 0 limited, 0 seasonal or not verified, 27 not available.
Code samples
curl
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/rankings?poll=ap"JavaScript (fetch)
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/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/football/leagues/college-football/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
Shipping a product with this data?
Polling works on every plan. Production apps usually also want events pushed to them, by webhook or WebSocket, as soon as we detect them (typically 20-30 seconds behind live play). These guides show the setup and the plan each one needs.
- Score alerts for your sports app, without pollingWebhooks into your backend, then FCM/APNs · Starter ($29/mo)
- Live scoreboards and game pages for news and media sitesCached REST on your server; optional WebSocket for live ticks · Starter ($29/mo)
- Player stats and box scores for fantasy platformsREST box scores during games, webhooks for finals and plays · Growth ($49/mo)
- Live scores on the screens in your venueFree widget, or one WebSocket feeding every screen · Starter ($29/mo)
- A play-by-play feed for your analytics stackWebSocket for live plays, REST to backfill and reconcile · Growth ($49/mo)
- Stream live scores to your backend over WebSocketWebSocket (server to server) · Starter ($29/mo)
- Sports data for a startup, from prototype to scaleREST, WebSocket and webhooks on one key · Starter ($29/mo)
Rate limits and pricing
| Plan | Price | Calls | Rate | WebSocket | Webhooks |
|---|---|---|---|---|---|
| Free | $0 | 125/mo (1,000 first 30 days) | 1/s | 500 msgs/mo | No |
| Starter | $29/mo ($290/yr) | 10,000/mo | 5/s | Shares monthly pool | Shares monthly pool |
| Growth | $49/mo ($490/yr) | 25,000/mo | 10/s | Shares monthly pool | Shares monthly pool |
| Pro | $99/mo ($990/yr) | 50,000/mo | 20/s | 100,000 msgs/mo | 25,000/mo |
| Business | $179/mo ($1,790/yr) | 150,000/mo | 40/s | 300,000 msgs/mo | 75,000/mo |
| Scale | $299/mo ($2,990/yr) | 500,000/mo | 100/s | 500,000 msgs/mo | 100,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
- What does the rankings endpoint return?
- The AP Top 25, coaches polls and (college football) the College Football Playoff rankings: each ranked team with rank, previous rank, trend, record, points and first-place votes, plus others receiving votes and teams that dropped out. Latest release by default, or a past week.
- Which leagues support rankings?
- Verified on 2026-10-04: College Football, Men's College Basketball. Not available: 27 other leagues.
- Is it free to try?
- Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. Every successful call counts as one call.
- How fresh is the data?
- 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.
- Can I get updates pushed instead of polling?
- Webhooks are included on every paid plan (Starter, Growth, Pro, Business, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview.