Seasonal Statistics (Player & Team)
This guide helps you access NCAA Football seasonal and player career statistics. It also includes instructions for using the Daily Change Log endpoint to monitor post-game stat revisions.
Introduction to Seasonal Statistics
If you've explored integrating live game updates into your application, you may be familiar with the Game Statistics endpoint, which provides game statistics in real-time. This guide focuses on accessing seasonal statistics — an aggregation of game statistics across a season — for both players and teams.
Prerequisite - Accessing Available Seasons
To avoid confusion and ensure you're accessing available data, refer to our Seasons feed. This resource lists all the seasons for which we have data.
For example: To ensure data availability for future seasons, such as a schedule in advance of when a season begins, first check the Seasons feed to verify that data for that specific season is already provided.
Starting with this feed can prevent unnecessary errors and streamline your data retrieval process.
How to Access Seasonal Statistics
You can access seasonal statistics using the Seasonal Statistics feed. This endpoint provides complete team and player seasonal statistics for a given season.
Data Availability
Our seasonal statistics date back to the year 2013, although availability can vary by player and team.
Accessing the Seasonal Statistics Feed:
- Get a team ID: You can access a list of all active teams in the NCAAFB API database with the Teams endpoint.
- Call the Seasonal Statistics feed: Using the team ID, you can retrieve seasonal statistics for that team.
The call will retrieve seasonal statistics for the team and its individual players.
Recommended Pull Frequency:
- Seasonal stats are updated on a five-minute timer after a game is moved to
closed
- To receive the fastest updates, call the feed five to ten minutes after a game is moved to
closed
. - Otherwise, utilize this feed on an as needed basis.
- The TTL/Cache is 120 seconds.
Tip
Utilize the Daily Change Log endpoint to capture stat revisions after a game has ended. See the Change Log section for more details.
Example - Retrieving Seasonal Stats for the Crimson Tide and Jalen Milroe
This example shows a response from using the team ID 19775492-f1eb-4bc5-9e15-078ebd689c0f
to access the 2023 regular season stats for the Crimson Tide and Jalen Milroe.
Here are the team seasonal stats to start:
{
"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
},
"punts": {
"attempts": 63,
"yards": 2971,
"net_yards": 2690,
"blocked": 0,
"touchbacks": 8,
"inside_20": 25,
"return_yards": 121,
"avg_net_yards": 42.698,
"avg_yards": 47.159,
"longest": 67
},
"punt_returns": {
"avg_yards": 8.476,
"returns": 21,
"yards": 178,
"longest": 85,
"touchdowns": 1,
"longest_touchdown": 85,
"faircatches": 20
},
"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
},
"misc_returns": {
"yards": -1,
"touchdowns": 0,
"longest_touchdown": 69,
"blk_fg_touchdowns": 0,
"blk_punt_touchdowns": 0,
"fg_return_touchdowns": 0,
"ez_rec_touchdowns": 0,
"returns": 1
},
"kickoffs": {
"endzone": 10,
"inside_20": 20,
"return_yards": 397,
"returned": 24,
"touchbacks": 53,
"yards": 5911,
"out_of_bounds": 2,
"kickoffs": 93
},
"kick_returns": {
"avg_yards": 22.208,
"yards": 533,
"longest": 34,
"touchdowns": 0,
"longest_touchdown": 0,
"faircatches": 2,
"returns": 24
},
"interceptions": {
"return_yards": 125,
"returned": 12,
"interceptions": 12
},
"int_returns": {
"avg_yards": 10.417,
"yards": 125,
"longest": 37,
"touchdowns": 1,
"longest_touchdown": 28,
"returns": 12
},
"fumbles": {
"fumbles": 16,
"lost_fumbles": 5,
"own_rec": 11,
"own_rec_yards": -13,
"opp_rec": 7,
"opp_rec_yards": 38,
"out_of_bounds": 0,
"forced_fumbles": 14,
"own_rec_tds": 0,
"opp_rec_tds": 1,
"ez_rec_tds": 0
},
"first_downs": {
"pass": 124,
"penalty": 18,
"rush": 138,
"total": 280
},
"field_goals": {
"attempts": 25,
"made": 22,
"blocked": 0,
"yards": 870,
"avg_yards": 34.8,
"longest": 52,
"missed": 3,
"pct": 88,
"attempts_19": 0,
"attempts_29": 3,
"attempts_39": 7,
"attempts_49": 10,
"attempts_50": 5,
"made_19": 0,
"made_29": 3,
"made_39": 7,
"made_49": 7,
"made_50": 5
},
"defense": {
"tackles": 476,
"assists": 381,
"combined": 857,
"sacks": 39,
"sack_yards": 262,
"interceptions": 12,
"passes_defended": 15,
"forced_fumbles": 10,
"fumble_recoveries": 5,
"qb_hits": 51,
"tloss": 60,
"tloss_yards": 248,
"safeties": 1,
"sp_tackles": 37,
"sp_assists": 10,
"sp_forced_fumbles": 4,
"sp_fumble_recoveries": 3,
"sp_blocks": 2,
"misc_tackles": 7,
"misc_assists": 0,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 0
},
"extra_points": {
"kicks": {
"attempts": 56,
"blocked": 0,
"made": 56,
"pct": 100
},
"conversions": {
"pass_attempts": 1,
"pass_successes": 1,
"rush_attempts": 1,
"rush_successes": 1,
"defense_attempts": 0,
"defense_successes": 0,
"turnover_successes": 0
}
},
"efficiency": {
"goaltogo": {
"attempts": 27,
"successes": 24,
"pct": 88.889
},
"redzone": {
"attempts": 52,
"successes": 48,
"pct": 92.308
},
"thirddown": {
"attempts": 182,
"successes": 82,
"pct": 45.055
},
"fourthdown": {
"attempts": 7,
"successes": 5,
"pct": 71.429
}
}
},
"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
},
"rushing": {
"avg_yards": 3.721,
"attempts": 470,
"touchdowns": 15,
"tlost": 36,
"tlost_yards": -89,
"yards": 1749,
"longest": 74,
"longest_touchdown": 40,
"redzone_attempts": 67
},
"receiving": {
"targets": 413,
"receptions": 245,
"avg_yards": 10.918,
"yards": 2675,
"touchdowns": 17,
"yards_after_catch": 2671,
"longest": 54,
"longest_touchdown": 46,
"redzone_targets": 52,
"air_yards": 4
},
"punts": {
"attempts": 72,
"yards": 3314,
"net_yards": 3042,
"blocked": 1,
"touchbacks": 5,
"inside_20": 19,
"return_yards": 176,
"avg_net_yards": 42.25,
"avg_yards": 46.028,
"longest": 71
},
"punt_returns": {
"avg_yards": 9.231,
"returns": 13,
"yards": 120,
"longest": 46,
"touchdowns": 0,
"longest_touchdown": 0,
"faircatches": 23
},
"penalties": {
"penalties": 71,
"yards": 549
},
"passing": {
"attempts": 413,
"completions": 245,
"cmp_pct": 59.322,
"interceptions": 12,
"sack_yards": 262,
"rating": 126.83,
"touchdowns": 17,
"avg_yards": 7.111,
"sacks": 39,
"longest": 54,
"longest_touchdown": 46,
"air_yards": 4,
"redzone_attempts": 52,
"net_yards": 2675,
"yards": 2675,
"gross_yards": 2937,
"int_touchdowns": 1
},
"kickoffs": {
"endzone": 11,
"inside_20": 4,
"return_yards": 533,
"returned": 25,
"touchbacks": 30,
"yards": 3630,
"out_of_bounds": 2,
"kickoffs": 59
},
"kick_returns": {
"avg_yards": 16.28,
"yards": 407,
"longest": 35,
"touchdowns": 0,
"longest_touchdown": 0,
"faircatches": 14,
"returns": 25
},
"interceptions": {
"return_yards": 63,
"returned": 6,
"interceptions": 6
},
"int_returns": {
"avg_yards": 10.5,
"yards": 63,
"longest": 32,
"touchdowns": 0,
"longest_touchdown": 0,
"returns": 6
},
"fumbles": {
"fumbles": 17,
"lost_fumbles": 6,
"own_rec": 10,
"own_rec_yards": 3,
"opp_rec": 5,
"opp_rec_yards": -6,
"out_of_bounds": 0,
"forced_fumbles": 8,
"own_rec_tds": 0,
"opp_rec_tds": 0,
"ez_rec_tds": 0
},
"first_downs": {
"pass": 113,
"penalty": 20,
"rush": 95,
"total": 228
},
"field_goals": {
"attempts": 21,
"made": 14,
"blocked": 1,
"yards": 436,
"avg_yards": 21.8,
"longest": 55,
"missed": 6,
"pct": 66.667,
"attempts_19": 0,
"attempts_29": 7,
"attempts_39": 6,
"attempts_49": 6,
"attempts_50": 2,
"made_19": 0,
"made_29": 7,
"made_39": 4,
"made_49": 2,
"made_50": 1
},
"defense": {
"tackles": 502,
"assists": 394,
"combined": 896,
"sacks": 49,
"sack_yards": 360,
"interceptions": 6,
"passes_defended": 9,
"forced_fumbles": 5,
"fumble_recoveries": 3,
"qb_hits": 53,
"tloss": 79,
"tloss_yards": 447,
"safeties": 0,
"sp_tackles": 36,
"sp_assists": 14,
"sp_forced_fumbles": 3,
"sp_fumble_recoveries": 2,
"sp_blocks": 0,
"misc_tackles": 10,
"misc_assists": 6,
"misc_forced_fumbles": 0,
"misc_fumble_recoveries": 1
},
"extra_points": {
"kicks": {
"attempts": 31,
"blocked": 0,
"made": 30,
"pct": 96.774
},
"conversions": {
"pass_attempts": 1,
"pass_successes": 1,
"rush_attempts": 0,
"rush_successes": 0,
"defense_attempts": 0,
"defense_successes": 0,
"turnover_successes": 0
}
},
"efficiency": {
"goaltogo": {
"attempts": 25,
"successes": 24,
"pct": 96
},
"redzone": {
"attempts": 41,
"successes": 34,
"pct": 82.927
},
"thirddown": {
"attempts": 191,
"successes": 63,
"pct": 32.984
},
"fourthdown": {
"attempts": 27,
"successes": 11,
"pct": 40.741
}
}
}
}
The sample above gives comprehensive team seasonal statistics including touchdowns, rushing and receiving yards, penalties, and more. This allows for 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.
You could visualize this data in your application to display comprehensive NCAAFB team statistics by season. This example shows details such as points scored, total yards per game, passing yards per game, and rushing yards per game, allowing users to quickly compare team performances and evaluate offensive strengths across different teams and conferences.
Team Seasonal Stats Use Case: By integrating team seasonal statistics, your application could offer features like updates on rushing yards, passing accuracy, and defensive stats for the season. This would enable fans, coaches, and analysts to track progress, strategize, and make predictions based on comprehensive, current season statistics.
Further analysis of the data reveals seasonal statistics for Jalen Milroe:
{
"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
}
}
This data sample provides comprehensive information on Jalen Milroe's performance, highlighting key statistics such as rushing yards, passing completions, touchdowns, and interceptions. 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. Additionally, he had 6 interceptions and a passer rating of 172.17. This detailed breakdown showcases his contributions both in rushing and passing during the season.
Player Seasonal Stats Use Case: You can use this data to enhance a fantasy sports app, offering users real-time updates and deep statistical insights into players like Jalen Milroe. This could help in creating features that allow users to track performance metrics that impact their fantasy team's scoring, such as touchdowns and yards gained, helping them to strategize their player picks and lineup changes effectively.
Accessing Player Career and Seasonal Statistics
You can access both seasonal and career statistics for players via the Player Profile feed. This feed delivers player seasonal statistics for each season they have played, along with biographical details and draft information.
Accessing the Player Profile Feed:
- Obtain a Player ID: You can find player IDs using various endpoints, such as:
- Seasonal Statistics: Useful if you're already retrieving seasonal data and want comprehensive career statistics.
- Team Roster: Use this endpoint if you have a team ID and need player IDs. For a detailed guide on which feeds provide player data, check the NCAAFB API Map.
- Call the Player Profile Feed: Once you have a player ID, use it to access both seasonal and career statistics, providing a comprehensive overview of the player’s performance throughout their career.
Recommended Pull Frequency:
- The Player Profile feed is updated on a five minute timer after a game is moved to
closed
- To receive the fastest updates, call the feed five to ten minutes after a game is moved to
closed
. - Otherwise, utilize this feed on an as needed basis.
- The TTL/Cache is 120 seconds.
Example:
{
"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
},
"fumbles": {
"fumbles": 4,
"lost_fumbles": 2,
"own_rec": 2,
"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
}
}
}
]
},
{
"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
},
"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
}
}
}
]
}
]
}
The Player Profile data for Jalen Milroe offers a comprehensive view of his performance across multiple seasons, detailing statistics in areas like passing, rushing, penalties, and fumbles. For example, the profile shows Milroe’s progression from 2021 through 2023, including his passing attempts, completions, and touchdowns, as well as rushing attempts, average yards per carry, and total touchdowns. This detailed data is valuable for analyzing his growth, consistency, and overall contribution to the Alabama Crimson Tide over the seasons.
While building a fantasy football application, you can use such detailed statistics to enhance player analytics features, helping users make informed decisions when drafting players. For example, the application could include a "Player Performance Tracker" that visualizes a player's stats over various seasons, enabling users to spot trends in performance or assess the impact of injuries and team changes on a player's output. This would be a valuable tool for fantasy league participants aiming to optimize their draft strategies based on thorough statistical insights.
Monitoring Seasonal Statistics with the Daily Change Log
The Daily Change Log is useful for monitoring adjustments to college football seasonal statistics. For instance, if a game statistic that affects seasonal totals is corrected, the log will record this update in its results node.
Steps:
- Identify Change Type: Spot any game IDs within the results node to signify changes in game-related data or statistics.
- Retrieve Detailed Data: Use the identified game IDs to pull additional details from relevant feeds such as Game Statistics, Play-by-Play, or Game Boxscore. Game Statistics is recommended for its direct impact on seasonal statistics.
- Access the Seasonal Statistics Feed: Utilize the team ID obtained from the detailed data to fetch the seasonal statistics.
- Verify Changes: Compare the newly retrieved data with previously stored records to confirm changes in standings or player statistics. Use the player ID to access the Player Profile feed for deeper analysis of player-specific updates.
Update Frequency
TTL / Cache: 300 seconds
Data Updates:
- Entries populate live for changes to teams, players, game statistics, schedules, and standings.
- Start time of the log is 05:00:00 UTC; end time is 04:59:59 UTC
Updated about 2 months ago