Historical Data
The NCAAFB API carries college football history back to the 2013 season through the same feeds that serve the current season: any feed that takes a season_year parameter addresses a past season the same way it addresses the current one, and ID-keyed feeds such as Player Profile and the game feeds reach past seasons through the IDs a past schedule or team feed returns. This page covers what is on file, how past-season data changes, and a workflow for loading it.
What Is on File
Coverage begins with the 2013 season, and all NCAAFB data is collected by Sportradar's expert operators. The Seasons feed is the catalog, one REG entry per year from 2013 onward.
Historical college football statistics live inside the NCAAFB API itself; no separate API or add-on package is required. Any feed that takes the season_year parameter retrieves historical data:
| Feed | Scope | Use |
|---|---|---|
| Daily Change Log | {year}/{month}/{day} | Entities that changed on a past league day |
| Postgame Standings | {season_year}/{season_type} | Final standings of a past season |
| Rankings (By Week) | {poll_type}/{season_year}/{week_number} | A poll as published for a past week |
| Rankings (Current Week) | {poll_type}/{season_year} | The current-week poll for a season year |
| Seasonal Statistics | {season_year}/{season_type}, {team_id} | Team, opponent, and player totals for a past season |
| Season Schedule | {season_year}/{season_type} | Every game of a past season, with the game IDs that key the game feeds |
| Weekly Schedule | {season_year}/{season_type}/{week_number} | One week of a past season |
Feeds keyed by ID rather than by season reach the same history: Player Profile carries a player's statistics for every season on file, and the game feeds serve any game ID a past Season Schedule returns. Both are shown under Data Accessibility.
Data Updates
- Past-season statistics can change after the fact: catch statistical updates to past seasons with the Daily Change Log, which lists the entities that changed on a given league day
- Datasets are continually enhanced, so certain stats may be unavailable in past years or in earlier API versions
- New data points are typically available in the most recent API version from the point they are added going forward; the NCAAFB API Change Log carries the specifics on added data
- Read each season's fields from its own responses rather than assuming the current shape
Data Accessibility
The retrieval samples below are starting points for historical statistics by team, by player, and by game.
Team seasonal statistics
Seasonal Statistics provides complete team and player seasonal statistics for a given season and season type. The request takes three parameters:
GET https://api.sportradar.com/ncaafb/trial/v7/en/seasons/2020/REG/teams/ae68bc50-4135-47b5-b2f1-03d0669e54c8/statistics.json
x-api-key: YOUR_API_KEYseason_year: the year the college football season began, so2020addresses the 2020 seasonseason_type:REG(regular season)team_id: the team's unique ID, found in the League Hierarchy feed
The Texas Longhorns' 2020 regular season: https://api.sportradar.com/ncaafb/trial/v7/en/seasons/2020/REG/teams/ae68bc50-4135-47b5-b2f1-03d0669e54c8/statistics.xml
The response breaks the season down by team (record), opponent (opponents), and player (player_records); the full data-point list is in the Seasonal Statistics data points reference. The three tabs below show each section, with the player section trimmed to one player:
<record games_played="10">
<touchdowns pass="32" rush="20" total_return="2" total="54" fumble_return="0" int_return="0" kick_return="1" punt_return="1" other="0"/>
<rushing avg_yards="5.278" attempts="370" touchdowns="20" tlost="0" tlost_yards="0" yards="1953" longest="75" longest_touchdown="75" redzone_attempts="76"/>
<receiving targets="335" receptions="208" avg_yards="13.466" yards="2801" touchdowns="32" yards_after_catch="2797" longest="78" longest_touchdown="78" redzone_targets="58" air_yards="4"/>
<punts attempts="47" yards="2036" net_yards="1888" blocked="0" touchbacks="0" inside_20="17" return_yards="148" avg_net_yards="40.17" avg_yards="43.319" longest="60"/>
<punt_returns avg_yards="3.111" returns="18" yards="56" longest="21" touchdowns="1" longest_touchdown="0" faircatches="15"/>
<penalties penalties="81" yards="770"/>
<passing attempts="345" completions="208" cmp_pct="60.29" interceptions="5" sack_yards="143" rating="159.68" touchdowns="32" avg_yards="8.533" sacks="23" longest="78" longest_touchdown="78" air_yards="0" redzone_attempts="69" net_yards="2801" yards="2801" gross_yards="2944" int_touchdowns="0"/>
<misc_returns yards="0" touchdowns="0" longest_touchdown="2" blk_fg_touchdowns="0" blk_punt_touchdowns="0" fg_return_touchdowns="0" ez_rec_touchdowns="0" returns="0"/>
<kickoffs endzone="67" inside_20="6" return_yards="1763" returned="0" touchbacks="61" yards="4724" out_of_bounds="0" kickoffs="73"/>
<kick_returns avg_yards="28.957" yards="666" longest="100" touchdowns="1" longest_touchdown="100" faircatches="4" returns="23"/>
<interceptions return_yards="184" returned="10" interceptions="10"/>
<int_returns avg_yards="18.4" yards="184" longest="71" touchdowns="0" longest_touchdown="0" returns="10"/>
<fumbles fumbles="6" lost_fumbles="4" own_rec="0" own_rec_yards="0" opp_rec="8" opp_rec_yards="41" out_of_bounds="0" forced_fumbles="8" own_rec_tds="0" opp_rec_tds="0" ez_rec_tds="0"/>
<first_downs pass="113" penalty="21" rush="90" total="224"/>
<field_goals attempts="21" made="15" blocked="1" yards="494" avg_yards="24.7" longest="53" missed="6" pct="71.429" attempts_19="0" attempts_29="6" attempts_39="6" attempts_49="7" attempts_50="2" made_19="0" made_29="6" made_39="4" made_49="4" made_50="1"/>
<defense tackles="546" assists="142" combined="688" sacks="17.0" sack_yards="123.0" interceptions="10" passes_defended="0" forced_fumbles="8" fumble_recoveries="8" qb_hits="0" tloss="79.0" tloss_yards="0.0" safeties="1" sp_tackles="23" sp_assists="4" sp_forced_fumbles="0" sp_fumble_recoveries="0" sp_blocks="1" misc_tackles="4" misc_assists="1" misc_forced_fumbles="0" misc_fumble_recoveries="0"/>
<extra_points>
<kicks attempts="51" blocked="0" made="50" pct="98.039"/>
<conversions pass_attempts="2" pass_successes="2" rush_attempts="1" rush_successes="1" defense_attempts="0" defense_successes="0" turnover_successes="0"/>
</extra_points>
<efficiency>
<goaltogo attempts="29" successes="22" pct="75.862"/>
<redzone attempts="55" successes="48" pct="87.273"/>
<thirddown attempts="135" successes="50" pct="37.037"/>
<fourthdown attempts="12" successes="6" pct="50.0"/>
</efficiency>
</record><opponents games_played="10">
<touchdowns pass="17" rush="16" total_return="1" total="34" fumble_return="1" int_return="0" kick_return="0" punt_return="0" other="0"/>
<rushing avg_yards="3.632" attempts="386" touchdowns="16" tlost="0" tlost_yards="0" yards="1402" longest="75" longest_touchdown="75" redzone_attempts="77"/>
<receiving targets="381" receptions="246" avg_yards="10.829" yards="2664" touchdowns="17" yards_after_catch="2669" longest="50" longest_touchdown="35" redzone_targets="49" air_yards="-5"/>
<punts attempts="54" yards="2212" net_yards="2099" blocked="1" touchbacks="4" inside_20="20" return_yards="113" avg_net_yards="38.87" avg_yards="40.963" longest="66"/>
<punt_returns avg_yards="9.05" returns="20" yards="181" longest="36" touchdowns="0" longest_touchdown="0" faircatches="15"/>
<penalties penalties="71" yards="544"/>
<passing attempts="393" completions="246" cmp_pct="62.595" interceptions="10" sack_yards="123" rating="131.35" touchdowns="17" avg_yards="7.092" sacks="17" longest="50" longest_touchdown="35" air_yards="0" redzone_attempts="58" net_yards="2664" yards="2664" gross_yards="2787" int_touchdowns="0"/>
<kickoffs endzone="31" inside_20="4" return_yards="1315" returned="0" touchbacks="25" yards="3326" out_of_bounds="0" kickoffs="56"/>
<kick_returns avg_yards="19.833" yards="238" longest="40" touchdowns="0" longest_touchdown="0" faircatches="0" returns="12"/>
<interceptions return_yards="93" returned="5" interceptions="5"/>
<int_returns avg_yards="18.6" yards="93" longest="37" touchdowns="0" longest_touchdown="0" returns="5"/>
<fumbles fumbles="15" lost_fumbles="8" own_rec="2" own_rec_yards="0" opp_rec="4" opp_rec_yards="0" out_of_bounds="1" forced_fumbles="5" own_rec_tds="0" opp_rec_tds="1" ez_rec_tds="0"/>
<first_downs pass="131" penalty="27" rush="79" total="237"/>
<field_goals attempts="23" made="16" blocked="0" yards="528" avg_yards="22.957" longest="49" missed="7" pct="69.565" attempts_19="1" attempts_29="6" attempts_39="7" attempts_49="8" attempts_50="1" made_19="1" made_29="6" made_39="5" made_49="4" made_50="0"/>
<defense tackles="493" assists="152" combined="645" sacks="23.0" sack_yards="143.0" interceptions="5" passes_defended="0" forced_fumbles="5" fumble_recoveries="3" qb_hits="0" tloss="60.0" tloss_yards="0.0" safeties="0" sp_tackles="34" sp_assists="8" sp_forced_fumbles="0" sp_fumble_recoveries="3" sp_blocks="3" misc_tackles="6" misc_assists="1" misc_forced_fumbles="0" misc_fumble_recoveries="0"/>
<extra_points>
<kicks attempts="31" blocked="0" made="31" pct="100.0"/>
<conversions pass_attempts="3" pass_successes="1" rush_attempts="0" rush_successes="0" defense_attempts="0" defense_successes="0" turnover_successes="0"/>
</extra_points>
<efficiency>
<goaltogo attempts="21" successes="15" pct="71.429"/>
<redzone attempts="48" successes="40" pct="83.333"/>
<thirddown attempts="154" successes="54" pct="35.065"/>
<fourthdown attempts="15" successes="5" pct="33.333"/>
</efficiency>
</opponents><?xml version="1.0" ?>
<!-- Generation started @ 2026-09-01 09:21:09 +0000 -->
<season xmlns="http://feed.elasticstats.com/schema/football/statistics-v7.0.xsd" id="17d91be7-4bd3-4407-80e2-eca205c9284a" year="2020" type="REG" name="REG">
<team id="ae68bc50-4135-47b5-b2f1-03d0669e54c8" name="Longhorns" market="Texas" alias="TEX">
<player_records>
<player id="015b3f38-bfe7-4a1c-a9da-040fd68faf4a" name="Marqez Bimage" jersey="0" position="OLB" games_played="0" games_started="0">
</player>
<!-- ... omitted for brevity -->
</player_records>
<!-- ... omitted for brevity -->
</team>
</season>
<!-- Generation ended @ 2026-09-01 09:21:09 +0000 -->Player seasonal statistics
Player Profile provides biographical information and seasonal statistics for one player, broken down by team and season and reaching back to the beginning of data collection (see What Is on File).
GET https://api.sportradar.com/ncaafb/trial/v7/en/players/76e3d95c-89db-419b-b899-e8d9e847c9fc/profile.json
x-api-key: YOUR_API_KEYThe request takes the player's unique player_id, which a game, team, or schedule feed supplies. Two paths:
On either path, retrieve the Alabama Crimson Tide's team.id (through the Hierarchy feed, a Schedule feed, or a Game feed), then parse the team's 2020 Seasonal Statistics for DeVonta Smith's unique player.id.
DeVonta Smith's college career: https://api.sportradar.com/ncaafb/trial/v7/en/players/76e3d95c-89db-419b-b899-e8d9e847c9fc/profile.xml
The full data-point list is in the Player Profile data points reference. The response carries one season entry per year of Smith's career with the Crimson Tide, 2017 through 2020, each with that season's team and statistics:
{
"id": "76e3d95c-89db-419b-b899-e8d9e847c9fc",
"name": "DeVonta Smith",
"jersey": "0",
"last_name": "Smith",
"first_name": "DeVonta",
"abbr_name": "D.Smith",
"weight": 175,
"height": 73,
"position": "WR",
"birth_place": "Amite, LA, USA",
"status": "NWT",
"eligibility": "SR",
"seasons": [
{
"id": "8e84b9ee-9b8e-45ef-b61f-0dfd26ff37e6",
"year": 2017,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 8,
"games_started": 0,
"receiving": {
"receptions": 7,
"targets": 14,
"yards": 156,
"avg_yards": 22.286,
"longest": 41,
"touchdowns": 3,
"longest_touchdown": 41,
"yards_after_catch": 156,
"redzone_targets": 0,
"air_yards": 0,
"first_downs": 6
},
"defense": {
"tackles": 0,
"assists": 0,
"combined": 0,
"sacks": 0,
"sack_yards": 0,
"interceptions": 0,
"passes_defended": 0,
"forced_fumbles": 0,
"fumble_recoveries": 0,
"qb_hits": 0,
"tloss": 0,
"tloss_yards": 0,
"safeties": 0,
"sp_tackles": 1,
"sp_assists": 0,
"sp_forced_fumbles": 0,
"sp_fumble_recoveries": 0,
"sp_blocks": 0,
"misc_tackles": 1,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 0
}
}
}
]
},
{
"id": "34e9387d-2422-40dd-b289-572245995f35",
"year": 2018,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 13,
"games_started": 10,
"receiving": {
"receptions": 42,
"targets": 60,
"yards": 693,
"avg_yards": 16.5,
"longest": 57,
"touchdowns": 6,
"longest_touchdown": 41,
"yards_after_catch": 693,
"redzone_targets": 8,
"air_yards": 0,
"first_downs": 25
},
"penalties": {
"penalties": 1,
"yards": 10,
"first_downs": 0
},
"fumbles": {
"fumbles": 2,
"lost_fumbles": 1,
"own_rec": 1,
"own_rec_yards": 0,
"opp_rec": 0,
"opp_rec_yards": 0,
"out_of_bounds": 0,
"forced_fumbles": 0,
"own_rec_tds": 0,
"opp_rec_tds": 0,
"ez_rec_tds": 0
},
"defense": {
"tackles": 0,
"assists": 0,
"combined": 0,
"sacks": 0,
"sack_yards": 0,
"interceptions": 0,
"passes_defended": 0,
"forced_fumbles": 0,
"fumble_recoveries": 0,
"qb_hits": 0,
"tloss": 0,
"tloss_yards": 0,
"safeties": 0,
"sp_tackles": 0,
"sp_assists": 0,
"sp_forced_fumbles": 0,
"sp_fumble_recoveries": 1,
"sp_blocks": 0,
"misc_tackles": 0,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 0
}
}
}
]
},
{
"id": "a89f105a-fe49-4331-b638-4ee12dae0493",
"year": 2019,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 11,
"games_started": 11,
"receiving": {
"receptions": 68,
"targets": 92,
"yards": 1256,
"avg_yards": 18.471,
"longest": 85,
"touchdowns": 14,
"longest_touchdown": 85,
"yards_after_catch": 1258,
"redzone_targets": 6,
"air_yards": -2,
"first_downs": 43
},
"penalties": {
"penalties": 2,
"yards": 10,
"first_downs": 0
},
"fumbles": {
"fumbles": 1,
"lost_fumbles": 0,
"own_rec": 0,
"own_rec_yards": 0,
"opp_rec": 0,
"opp_rec_yards": 0,
"out_of_bounds": 0,
"forced_fumbles": 0,
"own_rec_tds": 0,
"opp_rec_tds": 0,
"ez_rec_tds": 0
},
"defense": {
"tackles": 0,
"assists": 0,
"combined": 0,
"sacks": 0,
"sack_yards": 0,
"interceptions": 0,
"passes_defended": 0,
"forced_fumbles": 0,
"fumble_recoveries": 0,
"qb_hits": 0,
"tloss": 1,
"tloss_yards": 0,
"safeties": 0,
"sp_tackles": 1,
"sp_assists": 0,
"sp_forced_fumbles": 0,
"sp_fumble_recoveries": 0,
"sp_blocks": 0,
"misc_tackles": 1,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 0
}
}
}
]
},
{
"id": "17d91be7-4bd3-4407-80e2-eca205c9284a",
"year": 2020,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 13,
"games_started": 13,
"rushing": {
"avg_yards": 1.5,
"attempts": 4,
"touchdowns": 1,
"yards": 6,
"longest": 14,
"longest_touchdown": 14,
"redzone_attempts": 1,
"tlost": 0,
"tlost_yards": 0,
"first_downs": 1
},
"receiving": {
"receptions": 117,
"targets": 148,
"yards": 1856,
"avg_yards": 15.863,
"longest": 66,
"touchdowns": 23,
"longest_touchdown": 66,
"yards_after_catch": 1856,
"redzone_targets": 28,
"air_yards": 0,
"first_downs": 79
},
"punt_returns": {
"returns": 11,
"yards": 237,
"avg_yards": 21.545,
"touchdowns": 1,
"longest": 84,
"faircatches": 9,
"longest_touchdown": 84
},
"penalties": {
"penalties": 1,
"yards": 10,
"first_downs": 0
},
"kick_returns": {
"returns": 4,
"yards": 52,
"avg_yards": 13,
"touchdowns": 0,
"longest": 22,
"faircatches": 2,
"longest_touchdown": 0
},
"fumbles": {
"fumbles": 0,
"lost_fumbles": 0,
"own_rec": 0,
"own_rec_yards": 0,
"opp_rec": 1,
"opp_rec_yards": 0,
"out_of_bounds": 0,
"forced_fumbles": 0,
"own_rec_tds": 0,
"opp_rec_tds": 0,
"ez_rec_tds": 0
},
"defense": {
"tackles": 0,
"assists": 0,
"combined": 0,
"sacks": 0,
"sack_yards": 0,
"interceptions": 0,
"passes_defended": 0,
"forced_fumbles": 0,
"fumble_recoveries": 0,
"qb_hits": 0,
"tloss": 1,
"tloss_yards": 0,
"safeties": 0,
"sp_tackles": 1,
"sp_assists": 0,
"sp_forced_fumbles": 0,
"sp_fumble_recoveries": 0,
"sp_blocks": 0,
"misc_tackles": 0,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 1
}
}
}
]
}
],
"_comment": "Generation started @ 2024-08-05 14:25:18 UTC ended @ 2024-08-05 14:25:18 UTC"
}<player xmlns="http://feed.elasticstats.com/schema/football/profile-v7.0.xsd" id="76e3d95c-89db-419b-b899-e8d9e847c9fc" name="DeVonta Smith" jersey="0" last_name="Smith" first_name="DeVonta" abbr_name="D.Smith" weight="175.0" height="73" position="WR" birth_place="Amite, LA, USA" status="NWT" eligibility="SR">
<season id="8e84b9ee-9b8e-45ef-b61f-0dfd26ff37e6" year="2017" type="REG" name="REG">
<team id="19775492-f1eb-4bc5-9e15-078ebd689c0f" name="Crimson Tide" market="Alabama" alias="BAMA">
<statistics games_played="8" games_started="0">
<receiving receptions="7" targets="14" yards="156" avg_yards="22.286" longest="41" touchdowns="3" longest_touchdown="41" yards_after_catch="156" redzone_targets="0" air_yards="0" first_downs="6"/>
<defense tackles="0" assists="0" combined="0" sacks="0.0" sack_yards="0.0" interceptions="0" passes_defended="0" forced_fumbles="0" fumble_recoveries="0" qb_hits="0" tloss="0.0" tloss_yards="0.0" safeties="0" sp_tackles="1" sp_assists="0" sp_forced_fumbles="0" sp_fumble_recoveries="0" sp_blocks="0" misc_tackles="1" misc_assists="0" misc_forced_fumbles="0" misc_fumble_recoveries="0"/>
</statistics>
</team>
</season>
<season id="34e9387d-2422-40dd-b289-572245995f35" year="2018" type="REG" name="REG">
<team id="19775492-f1eb-4bc5-9e15-078ebd689c0f" name="Crimson Tide" market="Alabama" alias="BAMA">
<statistics games_played="13" games_started="10">
<receiving receptions="42" targets="60" yards="693" avg_yards="16.5" longest="57" touchdowns="6" longest_touchdown="41" yards_after_catch="693" redzone_targets="8" air_yards="0" first_downs="25"/>
<penalties penalties="1" yards="10" first_downs="0"/>
<fumbles fumbles="2" lost_fumbles="1" own_rec="1" own_rec_yards="0" opp_rec="0" opp_rec_yards="0" out_of_bounds="0" forced_fumbles="0" own_rec_tds="0" opp_rec_tds="0" ez_rec_tds="0"/>
<defense tackles="0" assists="0" combined="0" sacks="0.0" sack_yards="0.0" interceptions="0" passes_defended="0" forced_fumbles="0" fumble_recoveries="0" qb_hits="0" tloss="0.0" tloss_yards="0.0" safeties="0" sp_tackles="0" sp_assists="0" sp_forced_fumbles="0" sp_fumble_recoveries="1" sp_blocks="0" misc_tackles="0" misc_assists="0" misc_forced_fumbles="0" misc_fumble_recoveries="0"/>
</statistics>
</team>
</season>
<season id="a89f105a-fe49-4331-b638-4ee12dae0493" year="2019" type="REG" name="REG">
<team id="19775492-f1eb-4bc5-9e15-078ebd689c0f" name="Crimson Tide" market="Alabama" alias="BAMA">
<statistics games_played="11" games_started="11">
<receiving receptions="68" targets="92" yards="1256" avg_yards="18.471" longest="85" touchdowns="14" longest_touchdown="85" yards_after_catch="1258" redzone_targets="6" air_yards="-2" first_downs="43"/>
<penalties penalties="2" yards="10" first_downs="0"/>
<fumbles fumbles="1" lost_fumbles="0" own_rec="0" own_rec_yards="0" opp_rec="0" opp_rec_yards="0" out_of_bounds="0" forced_fumbles="0" own_rec_tds="0" opp_rec_tds="0" ez_rec_tds="0"/>
<defense tackles="0" assists="0" combined="0" sacks="0.0" sack_yards="0.0" interceptions="0" passes_defended="0" forced_fumbles="0" fumble_recoveries="0" qb_hits="0" tloss="1.0" tloss_yards="0.0" safeties="0" sp_tackles="1" sp_assists="0" sp_forced_fumbles="0" sp_fumble_recoveries="0" sp_blocks="0" misc_tackles="1" misc_assists="0" misc_forced_fumbles="0" misc_fumble_recoveries="0"/>
</statistics>
</team>
</season>
<season id="17d91be7-4bd3-4407-80e2-eca205c9284a" year="2020" type="REG" name="REG">
<team id="19775492-f1eb-4bc5-9e15-078ebd689c0f" name="Crimson Tide" market="Alabama" alias="BAMA">
<statistics games_played="13" games_started="13">
<rushing avg_yards="1.5" attempts="4" touchdowns="1" yards="6" longest="14" longest_touchdown="14" redzone_attempts="1" tlost="0" tlost_yards="0" first_downs="1"/>
<receiving receptions="117" targets="148" yards="1856" avg_yards="15.863" longest="66" touchdowns="23" longest_touchdown="66" yards_after_catch="1856" redzone_targets="28" air_yards="0" first_downs="79"/>
<punt_returns returns="11" yards="237" avg_yards="21.545" touchdowns="1" longest="84" faircatches="9" longest_touchdown="84"/>
<penalties penalties="1" yards="10" first_downs="0"/>
<kick_returns returns="4" yards="52" avg_yards="13.0" touchdowns="0" longest="22" faircatches="2" longest_touchdown="0"/>
<fumbles fumbles="0" lost_fumbles="0" own_rec="0" own_rec_yards="0" opp_rec="1" opp_rec_yards="0" out_of_bounds="0" forced_fumbles="0" own_rec_tds="0" opp_rec_tds="0" ez_rec_tds="0"/>
<defense tackles="0" assists="0" combined="0" sacks="0.0" sack_yards="0.0" interceptions="0" passes_defended="0" forced_fumbles="0" fumble_recoveries="0" qb_hits="0" tloss="1.0" tloss_yards="0.0" safeties="0" sp_tackles="1" sp_assists="0" sp_forced_fumbles="0" sp_fumble_recoveries="0" sp_blocks="0" misc_tackles="0" misc_assists="0" misc_forced_fumbles="0" misc_fumble_recoveries="1"/>
</statistics>
</team>
</season>
</player>Game statistics
Historical game detail comes from the game feeds, each keyed by game_id: Game Boxscore, Game Roster, Game Statistics, or Game Play-by-Play, depending on the use case. To retrieve the game statistics for the entire 2021 season, collect that season's game IDs from the Season Schedule feed and request Game Statistics for each:
GET https://api.sportradar.com/ncaafb/trial/v7/en/games/461590fe-614d-44ff-913d-ac92980ee87b/statistics.json
x-api-key: YOUR_API_KEYSeason Schedule takes the same season_year (the year the season began, so 2021 for the 2021 season) and season_type (REG) parameters. The 2021 regular season: https://api.sportradar.com/ncaafb/trial/v7/en/games/2021/REG/schedule.xml
The response below is trimmed to the first game of week 1 and three of that week's bye_week teams:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" charset="UTF-8" href="/xslt/football/schedule-v7.0.xsl"?>
<!-- Generation started @ 2026-09-01 09:21:02 +0000 -->
<season xmlns="http://feed.elasticstats.com/schema/football/schedule-v7.0.xsd" id="d1132b13-2c29-4e6d-9011-b627c7fd9a17" year="2021" type="REG" name="REG">
<week id="5a8197bb-cead-45fd-9929-9ead409ed300" sequence="1" title="1">
<game id="461590fe-614d-44ff-913d-ac92980ee87b" status="closed" scheduled="2021-08-28T17:20:00+00:00" attendance="41064" entry_mode="LDE" coverage="full" sr_id="sr:match:27120406" game_type="regular" conference_game="true">
<venue id="b94a2088-1be5-4de0-8957-6e1cda199e5f" name="Gies Memorial Stadium (Champaign, IL)" city="Champaign" state="IL" country="USA" zip="61820" address="1402 South 1st Street" capacity="60670" surface="artificial" roof_type="outdoor">
<!-- ... omitted for brevity -->
</venue>
<home id="2d824a5f-e706-45b8-9d20-434ed5dd5c2f" name="Illinois Fighting Illini" alias="ILL" game_number="1"/>
<away id="98833e65-ab72-482d-b3c0-13f8656629c0" name="Nebraska Cornhuskers" alias="NEB" game_number="1"/>
<!-- ... omitted for brevity -->
</game>
<bye_week>
<team id="0a45c61e-24f5-4e76-a28c-0d2af432bf18" name="Wildcats" alias="FVSU"/>
<team id="2c40eb6f-f0ac-4d48-b47c-449efb705e6a" name="Buccaneers" alias="CHSO"/>
<team id="2e13191e-eb51-4d25-a3c7-7dec1fbfd3c8" name="Lions" alias="LINC"/>
<!-- ... omitted for brevity -->
</bye_week>
<!-- ... omitted for brevity -->
</week>
<!-- ... omitted for brevity -->
</season>
<!-- Generation ended @ 2026-09-01 09:21:07 +0000 -->Each game.id in the schedule keys a Game Statistics request; for the first game above: https://api.sportradar.com/ncaafb/trial/v7/en/games/461590fe-614d-44ff-913d-ac92980ee87b/statistics.xml. The same walk applies to every college football season on file; swap in whichever Game feed the use case needs.
Historical Retrieval Workflow
Best Practices
- Address a past season by
{season_year}/{season_type}, whereseason_yearis the year the season began (2021for the 2021 season) - Take team IDs from League Hierarchy and game IDs from that season's Season Schedule: they key Seasonal Statistics and the game feeds for every season on file, and the same schedule-then-game walk works for any Game feed
- Read each season's fields from its own responses: data points added later are available from the point they were added going forward, so earlier seasons can lack them
- Watch the Daily Change Log for statistical updates to past seasons, and the NCAAFB API Change Log for added data
Updated 8 days ago
