Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

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

FeedScopeUse
Seasonal Statisticsseason year + type, team IDTeam and player season statistics
Player Profileplayer IDThe same player across seasons and teams, with biographical details
League Leadersseason year + typeRanked leaderboards per statistic, league-wide and per division
Awards ListleagueEvery award the league presents
Seasonal Awardsseason year + typeAward winners for a season
Daily Change LogdateStatistic revisions after a game has ended
Game Statisticsgame IDSingle-game breakdowns behind a revision


High-Level Workflow

Season Statistics WorkflowOne call per team per season type
Addressseason year + typeteam IDseason from Seasons, team from Teams
Team viewSeasonal Statisticsrecord object: rushing, passing, receiving, penalties, and more
Player viewplayers[]the same categories per player; rank within the team
Across seasonsPlayer Profileseasons[] per season type and team, plus biographical details
League-wideLeague Leadersranked leaders per statistic, NCAAFB, FBS, and FCS
HonorsSeasonal Awardsaward winners for the season; Awards List names every award
Season statistics and profiles update about five minutes after a game moves to closed, league leaders about 20 minutes after; refresh after game days rather than on a timer.


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 Availability

Seasonal 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:

ALABAMA · TEAM SEASON2025 REG · Seasonal Statistics
Passing yards3953
Rushing yards1562
First downs305
Penalties67
One call per team per season type returns the record object plus every player line.
📘

Recommended pull

Seasonal 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 to closed; 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 pull

The 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 to closed for 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.


🕑

Data Availability

NCAA Football league leaders are available from the 2013 season to the present.


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 rank and a tied flag; when players share a value, their entries carry the same rank with tied: true.
  • value is returned as a string for every statistic.
  • The type and sort_direction fields on each statistic describe how the leaderboard is computed and ordered.
  • teams is an array and lists the team or teams a player was credited with during the season.
📘

Recommended pull

League leaders update around 20 minutes after a game moves to closed. Pull 20 to 25 minutes after a game moves to closed to 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_KEY

The 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_KEY

6. 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_KEY

The 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, or FCS alias
  • 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

Did this page help you?