Retrieving Seasonal Statistics
The Seasonal Statistics feed returns a team's complete season statistics: a team-level record object and a players[] array, both organized by stat category. Seasonal statistics are an aggregation of game statistics across a season, for both teams and players; if you have integrated live game updates, you may already know the Game Statistics feed, which provides game statistics in real-time, and the seasonal feeds sit alongside it. One call per team per season type covers a stats page, the Player Profile follows a player across seasons, and League Leaders ranks players league-wide. Responses in this scenario are shown trimmed to representative slices.
This scenario is commonly used to:
- Build team and player season stat pages
- Follow a player's career season by season
- Rank players league-wide, per division, or within a team
- Power fantasy features with touchdowns and yards gained
- Pair a season's award winners with its statistics for season-in-review features
Relevant Feeds
| Feed | Scope | Use |
|---|---|---|
| Seasonal Statistics | season year + type, team ID | Team and player season statistics |
| Player Profile | player ID | The same player across seasons and teams, with biographical details |
| League Leaders | season year + type | Ranked leaderboards per statistic, league-wide and per division |
| Awards List | league | Every award the league presents |
| Seasonal Awards | season year + type | Award winners for a season |
| Daily Change Log | date | Statistic revisions after a game has ended |
| Game Statistics | game ID | Single-game breakdowns behind a revision |
High-Level Workflow
Integration Steps
1. Pull the team's season
Season years and types come from the Seasons feed, which lists every season with data; checking it first, especially when planning ahead for a season whose data is not yet loaded, prevents unnecessary errors and streamlines retrieval. Team IDs for every active team come from the Teams feed. Address the Seasonal Statistics feed with the season year, the season type, and the team ID; the response carries the team's record object and the seasonal statistics of its individual players. Team ids come from the Teams feed or the League Hierarchy; the Fundamentals page walks that catalog.
Data AvailabilitySeasonal statistics date back to the 2013 season, although availability can vary by player and team.
The 2023 regular season for the Alabama Crimson Tide (team ID 19775492-f1eb-4bc5-9e15-078ebd689c0f):
GET https://api.sportradar.com/ncaafb/trial/v7/en/seasons/2023/REG/teams/19775492-f1eb-4bc5-9e15-078ebd689c0f/statistics.json
x-api-key: YOUR_API_KEY{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"season": {
"id": "f58c6dbf-9dfe-487e-8b0b-af66af887206",
"year": 2023,
"type": "REG",
"name": "REG"
},
"record": {
"games_played": 14,
"touchdowns": {
"pass": 23,
"rush": 32,
"total_return": 3,
"total": 58,
"fumble_return": 1,
"int_return": 1,
"kick_return": 0,
"punt_return": 1,
"other": 0
},
"rushing": {
"avg_yards": 4.308,
"attempts": 561,
"touchdowns": 32,
"tlost": 39,
"tlost_yards": -134,
"yards": 2417,
"longest": 78,
"longest_touchdown": 53,
"redzone_attempts": 103
},
"receiving": {
"targets": 322,
"receptions": 208,
"avg_yards": 14.837,
"yards": 3086,
"touchdowns": 23,
"yards_after_catch": 3087,
"longest": 79,
"longest_touchdown": 79,
"redzone_targets": 29,
"air_yards": -1
},
"penalties": {
"penalties": 78,
"yards": 655
},
"passing": {
"attempts": 325,
"completions": 208,
"cmp_pct": 64,
"interceptions": 6,
"sack_yards": 360,
"rating": 172.73,
"touchdowns": 23,
"avg_yards": 10.603,
"sacks": 49,
"longest": 79,
"longest_touchdown": 79,
"air_yards": -1,
"redzone_attempts": 29,
"net_yards": 3086,
"yards": 3086,
"gross_yards": 3446,
"int_touchdowns": 0
}
},
"opponents": {
"games_played": 14,
"touchdowns": {
"pass": 17,
"rush": 15,
"total_return": 0,
"total": 32,
"fumble_return": 0,
"int_return": 0,
"kick_return": 0,
"punt_return": 0,
"other": 0
}
}
}The record is shown trimmed to the touchdowns, rushing, receiving, penalties, and passing blocks, and the opponents object to its touchdowns block. The full response carries comprehensive team seasonal statistics including punts and returns, kicking, defense, first downs, extra points, and efficiency, with the same category set repeated under opponents, which supports deep dives into team strategies and individual performances, such as analyzing rush attempts, average yards per carry, and the impact of penalties on game outcomes. A team page built from it, showing details such as points scored, total yards per game, passing yards per game, and rushing yards per game, lets users quickly compare team performances and evaluate offensive strengths across different teams and conferences:
Recommended pullSeasonal statistics update on a five-minute timer after a game moves to
closed. For the fastest updates, call the feed five to ten minutes after a game moves toclosed; otherwise pull it on an as-needed basis.
2. Read the player list
Each entry in players[] carries the same category structure, populated for the categories that player accumulated. Jalen Milroe's entry from the same response:
{
"id": "c795fe68-566f-4cab-9fbc-4a51e2b1d73f",
"name": "Jalen Milroe",
"jersey": "4",
"position": "QB",
"games_played": 13,
"games_started": 13,
"rushing": {
"avg_yards": 3.298,
"attempts": 161,
"touchdowns": 12,
"yards": 531,
"longest": 53,
"longest_touchdown": 53,
"redzone_attempts": 28,
"tlost": 6,
"tlost_yards": -18,
"first_downs": 44
},
"penalties": {
"penalties": 2,
"yards": 10,
"first_downs": 0
},
"passing": {
"attempts": 284,
"completions": 187,
"cmp_pct": 65.845,
"yards": 2834,
"avg_yards": 9.979,
"sacks": 44,
"sack_yards": 328,
"touchdowns": 23,
"longest": 79,
"interceptions": 6,
"rating": 172.17,
"longest_touchdown": 79,
"air_yards": -1,
"redzone_attempts": 25,
"gross_yards": 2834,
"first_downs": 116,
"int_touchdowns": 0
},
"fumbles": {
"fumbles": 3,
"lost_fumbles": 2,
"own_rec": 6,
"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": 0,
"sp_blocks": 0,
"misc_tackles": 1,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 0
},
"conversions": {
"pass_attempts": 1,
"pass_successes": 1,
"rush_attempts": 0,
"rush_successes": 0,
"receive_attempts": 0,
"receive_successes": 0,
"defense_attempts": 0,
"defense_successes": 0
}
}Milroe rushed for 531 yards with 12 touchdowns on 161 attempts, and he made 187 completions out of 284 passing attempts, accumulating 2,834 yards and 23 touchdowns, with 6 interceptions and a passer rating of 172.17: contributions in both rushing and passing during the season, with penalties, fumbles, defense, and conversions carried in their own blocks. Key statistics such as rushing yards, passing completions, touchdowns, and interceptions read directly from these blocks, and ranking the entries within the team by any category builds a team leaderboard.
3. Follow a player across seasons
Team-scoped season stats answer "this team's season"; the Player Profile answers "this player's career", with player seasonal statistics for each season they have played, one seasons[] entry per season, season type, and team, along with biographical details and draft information. eligibility carries the player's class year (JR for the player below).
Player IDs come from Seasonal Statistics when you are already retrieving seasonal data and want comprehensive career statistics, or from Team Roster when you have a team ID and need player IDs; the NCAAFB API Map lists every feed that carries player data.
GET https://api.sportradar.com/ncaafb/trial/v7/en/players/c795fe68-566f-4cab-9fbc-4a51e2b1d73f/profile.json
x-api-key: YOUR_API_KEY{
"id": "c795fe68-566f-4cab-9fbc-4a51e2b1d73f",
"name": "Jalen Milroe",
"jersey": "4",
"last_name": "Milroe",
"first_name": "Jalen",
"abbr_name": "J.Milroe",
"weight": 225,
"height": 74,
"position": "QB",
"birth_place": "Katy, TX, USA",
"status": "ACT",
"eligibility": "JR",
"team": {
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA"
},
"seasons": [
{
"id": "d1132b13-2c29-4e6d-9011-b627c7fd9a17",
"year": 2021,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 5,
"games_started": 0,
"rushing": {
"avg_yards": 3.8,
"attempts": 15,
"touchdowns": 0,
"yards": 57,
"longest": 15,
"longest_touchdown": 0,
"redzone_attempts": 2,
"tlost": 2,
"tlost_yards": -9,
"first_downs": 4
},
"passing": {
"attempts": 7,
"completions": 3,
"cmp_pct": 42.857,
"yards": 41,
"avg_yards": 5.857,
"sacks": 2,
"sack_yards": 9,
"touchdowns": 1,
"longest": 24,
"interceptions": 0,
"rating": 139.2,
"longest_touchdown": 24,
"air_yards": 0,
"redzone_attempts": 4,
"gross_yards": 41,
"first_downs": 2,
"int_touchdowns": 0
}
}
}
]
},
{
"id": "ff53e5e4-10ef-4842-a0b7-b489956fa07e",
"year": 2022,
"type": "REG",
"name": "REG",
"teams": [
{
"id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
"name": "Crimson Tide",
"market": "Alabama",
"alias": "BAMA",
"statistics": {
"games_played": 8,
"games_started": 1,
"rushing": {
"avg_yards": 8.484,
"attempts": 31,
"touchdowns": 1,
"yards": 263,
"longest": 77,
"longest_touchdown": 3,
"redzone_attempts": 4,
"tlost": 2,
"tlost_yards": -11,
"first_downs": 10
},
"passing": {
"attempts": 53,
"completions": 31,
"cmp_pct": 58.491,
"yards": 297,
"avg_yards": 5.604,
"sacks": 4,
"sack_yards": 25,
"touchdowns": 5,
"longest": 35,
"interceptions": 3,
"rating": 125.37,
"longest_touchdown": 35,
"air_yards": 5,
"redzone_attempts": 6,
"gross_yards": 297,
"first_downs": 18,
"int_touchdowns": 0
}
}
}
]
},
{
"id": "f58c6dbf-9dfe-487e-8b0b-af66af887206",
"year": 2023,
"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": 3.298,
"attempts": 161,
"touchdowns": 12,
"yards": 531,
"longest": 53,
"longest_touchdown": 53,
"redzone_attempts": 28,
"tlost": 6,
"tlost_yards": -18,
"first_downs": 44
},
"passing": {
"attempts": 284,
"completions": 187,
"cmp_pct": 65.845,
"yards": 2834,
"avg_yards": 9.979,
"sacks": 44,
"sack_yards": 328,
"touchdowns": 23,
"longest": 79,
"interceptions": 6,
"rating": 172.17,
"longest_touchdown": 79,
"air_yards": -1,
"redzone_attempts": 25,
"gross_yards": 2834,
"first_downs": 116,
"int_touchdowns": 0
}
}
}
]
}
]
}The profile is shown trimmed to the passing and rushing blocks of each season; the full profile also carries penalties, fumbles, defense, and conversions. Milroe's progression from 2021 through 2023, including passing attempts, completions, and touchdowns as well as rushing attempts, average yards per carry, and total touchdowns, supports analysis of a player's growth, consistency, and overall contribution to the Crimson Tide over the seasons.
Recommended pullThe Player Profile feed updates on the same five-minute timer after a game moves to
closed; call it five to ten minutes after a game moves toclosedfor the fastest updates, otherwise on an as-needed basis.
4. Read league leaders
The League Leaders feed provides league leaders across passing, rushing, receiving, defense, scoring, returns, kicking, and punting categories, with individual leaderboards for specific statistics (such as passing yards, tackles, or field goal percentage) inside each category.
Request League Leaders with a season year and season type. The response repeats the full category set three times under the leagues array: once for NCAA Football overall (NCAAFB) and once per division (FBS, FCS); filter on the league alias for the scope you want to display. Each category (for example, passing) contains one entry per statistic (for example, passing_yards), and each statistic carries its ranked leaders list. The 2025 regular season, shown trimmed to the NCAA-wide passing yards leaderboard and its top two leaders:
GET https://api.sportradar.com/ncaafb/trial/v7/en/seasons/2025/REG/leaders.json
x-api-key: YOUR_API_KEY{
"season": {
"id": "754e4990-efc7-11ef-bb2a-5d2d22b9215e",
"year": 2025,
"type": "reg"
},
"leagues": [
{
"id": "26c1246a-2fc3-4b7e-8999-1685d3ab4676",
"name": "NCAA Football",
"alias": "NCAAFB",
"categories": [
{
"name": "passing",
"categories": [
{
"name": "passing_yards",
"type": "total",
"sort_direction": "desc",
"leaders": [
{
"rank": 1,
"tied": false,
"value": "4379",
"player": {
"id": "3547d170-59b0-11ef-92d9-c398f52bf4ee",
"full_name": "Drew Mestemaker",
"jersey_number": "17",
"position": "QB",
"status": "ACT"
},
"teams": [
{
"id": "2a828de7-53d6-4a35-9f55-9aaa226956ed",
"name": "Mean Green",
"alias": "UNT",
"market": "North Texas"
}
]
},
{
"rank": 2,
"tied": false,
"value": "4070",
"player": {
"id": "582462e0-acae-11ed-b209-1539f381db49",
"full_name": "Keali'i Ah Yat",
"jersey_number": "8",
"position": "QB",
"status": "ACT"
},
"teams": [
{
"id": "465236db-280e-49a6-9575-feb4ca20b9b4",
"name": "Grizzlies",
"alias": "MONT",
"market": "Montana"
}
]
}
]
}
]
}
]
}
]
}A few notes for reading leaderboards:
- Each leader carries a
rankand atiedflag; when players share a value, their entries carry the same rank withtied: true. valueis returned as a string for every statistic.- The
typeandsort_directionfields on each statistic describe how the leaderboard is computed and ordered. teamsis an array and lists the team or teams a player was credited with during the season.
Recommended pullLeague leaders update around 20 minutes after a game moves to
closed. Pull 20 to 25 minutes after a game moves toclosedto receive the quickest updates; otherwise pull on an as-needed basis. The TTL/Cache is 15 minutes for the current season.
5. Read seasonal awards
The NCAAFB API also records postseason honors. The Awards List feed lists every award the league presents:
GET https://api.sportradar.com/ncaafb/trial/v7/en/league/awards.json
x-api-key: YOUR_API_KEYThe Seasonal Awards feed returns the award winners for a given season. Pair a season's award winners with the seasonal statistics above for season-in-review features:
GET https://api.sportradar.com/ncaafb/trial/v7/en/seasons/2023/REG/awards.json
x-api-key: YOUR_API_KEY6. Refresh after statistic revisions
A game statistic corrected after the game has ended changes seasonal totals, and the Daily Change Log records the update in its results node. To keep a season store current: identify the change type by spotting the game IDs listed in results; retrieve the detailed data for those games from feeds such as Game Statistics; pull the Seasonal Statistics feed for the team IDs involved, together with the Player Profile of any player whose totals moved and League Leaders for the season; then verify the change by comparing the newly retrieved data with the records you have stored.
GET https://api.sportradar.com/ncaafb/trial/v7/en/league/2026/09/02/changes.json
x-api-key: YOUR_API_KEYThe log's polling cadence, its league-day window, the entity types it lists, deletions, and change-log samples live on Monitoring Data Changes.
Common Use Cases
- Team stats page: one Seasonal Statistics pull per team per season type, refreshed after game days; updates on rushing yards, passing accuracy, and defensive stats for the season let fans, coaches, and analysts track progress, strategize, and make predictions from comprehensive, current season statistics
- Team leaderboards: rank
players[]within a team by any category - League leaders: League Leaders filtered on the
NCAAFB,FBS, orFCSalias - Fantasy sports: real-time updates and deep statistical insights into players like Jalen Milroe; touchdowns and yards gained drive fantasy scoring, so users can strategize player picks and lineup changes, and Player Profile
seasons[]powers a "Player Performance Tracker" that visualizes a player's stats over seasons, so users spot performance trends, assess the impact of injuries and team changes on a player's output, and optimize draft strategies - Team strategy analysis: rush attempts, average yards per carry, and the impact of penalties on game outcomes, from the team
record - Season in review: a season's award winners from Seasonal Awards paired with its statistics
Best Practices
- Check the Seasons feed before addressing a season, and take team IDs from the Teams feed
- Call Seasonal Statistics and Player Profile five to ten minutes after a game moves to
closed(both update on a five-minute timer) and League Leaders 20 to 25 minutes after; otherwise pull each feed on an as-needed basis - Watch the Daily Change Log for stat revisions after a game has ended and refetch the affected team's season; the log's mechanics are on Monitoring Data Changes
- Seasonal statistics and league leaders date back to the 2013 season; availability can vary by player and team
- TTLs and the pull cadence for every feed are on Update Frequencies
Updated about 7 hours ago
