College football box score API
Team totals and player stat lines for a college football game, live or final, in one call per game.
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.
Endpoint
- GET/api/v1/sports/football/leagues/college-football/events/{eventId}/boxscore
Live College Football example
Request
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/events/401860924/boxscore"Response captured from live data at 2026-11-07 14:05 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key. Box score for Oregon State Beavers at Fresno State Bulldogs; player lists trimmed to 2 of 36 (home) and 35 (away).
Response
{
"success": true,
"data": {
"homeTeam": {
"id": "278",
"name": "Fresno State Bulldogs",
"abbreviation": "FRES",
"score": 38
},
"awayTeam": {
"id": "204",
"name": "Oregon State Beavers",
"abbreviation": "ORST",
"score": 22
},
"homePlayers": [
{
"id": "5010409",
"name": "Jayden Mandal",
"jersey": "7",
"categories": {
"passing": {
"completions/passingAttempts": "11/17",
"passingYards": "202",
"yardsPerPassAttempt": "11.9",
"passingTouchdowns": "2",
"interceptions": "1",
"adjQBR": "83.8"
},
"rushing": {
"rushingAttempts": "8",
"rushingYards": "34",
"yardsPerRushAttempt": "4.3",
"rushingTouchdowns": "2",
"longRushing": "15"
},
"fumbles": {
"fumbles": "1",
"fumblesLost": "0",
"fumblesRecovered": "0"
}
}
},
{
"id": "5175334",
"name": "Bryson Donelson",
"jersey": "6",
"categories": {
"rushing": {
"rushingAttempts": "16",
"rushingYards": "108",
"yardsPerRushAttempt": "6.8",
"rushingTouchdowns": "1",
"longRushing": "63"
}
}
}
],
"awayPlayers": [
{
"id": "5212654",
"name": "Braden Atkinson",
"jersey": "2",
"categories": {
"passing": {
"completions/passingAttempts": "33/59",
"passingYards": "373",
"yardsPerPassAttempt": "6.3",
"passingTouchdowns": "1",
"interceptions": "0",
"adjQBR": "39.6"
},
"rushing": {
"rushingAttempts": "9",
"rushingYards": "-14",
"yardsPerRushAttempt": "-1.6",
"rushingTouchdowns": "0",
"longRushing": "13"
},
"fumbles": {
"fumbles": "2",
"fumblesLost": "2",
"fumblesRecovered": "0"
}
}
},
{
"id": "5167313",
"name": "Cornell Hatcher Jr.",
"jersey": "3",
"categories": {
"rushing": {
"rushingAttempts": "9",
"rushingYards": "53",
"yardsPerRushAttempt": "5.9",
"rushingTouchdowns": "1",
"longRushing": "14"
}
}
}
],
"periodScores": {
"home": [
7,
14,
17,
"... 1 more"
],
"away": [
3,
6,
7,
"... 1 more"
]
}
},
"meta": {
"rateLimit": {
"limit": 125,
"remaining": 124,
"reset": 1796083200000
}
}
}Code samples
curl
curl -H "Authorization: Bearer $RSA_API_KEY" \
"https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/events/401860924/boxscore"JavaScript (fetch)
const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/football/leagues/college-football/events/401860924/boxscore", {
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/events/401860924/boxscore",
headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
timeout=10,
)
body = res.json()
print(body["data"])MCP prompt (Claude, Cursor, ChatGPT)
Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_box_score with sport "football" and league "college-football" and pick a finished game from get_events and list the top performers for College Football.Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.
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
| Field | Type | Notes |
|---|---|---|
| homeTeam | object | |
| awayTeam | object | |
| homePlayers | object[] | |
| awayPlayers | object[] | |
| periodScores | object |
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
- Is there a free college football box score 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.
- How do I find a game's id?
- Fetch a week with /seasons/{season}/schedule?week=N (or one day with /events?date=YYYY-MM-DD) and use the event id with /events/{eventId}/boxscore.
- Are box scores available during the game?
- Yes, box scores update while the game is in progress and are final afterwards. Data typically runs 20-30 seconds behind live play, so it suits apps, alerts, dashboards and bots, not in-play betting.