Skip to contents

Get a single college football player's full season statistics from ESPN – every published stat across every category, in long format (one row per stat).

Usage

espn_cfb_player_career_stats(
  athlete_id = NULL,
  year = NULL,
  season_type = 2,
  athlete_detail = TRUE
)

Arguments

athlete_id

(Character/Integer required): ESPN athlete id.

year

(Integer required): Season, 4 digit format (YYYY).

season_type

(Integer optional, default 2): ESPN season type. 2 = regular season, 3 = postseason.

athlete_detail

(Logical): when TRUE (default), fetch the requested athlete's ESPN record once and append the athlete_* name columns (see Details). Set FALSE to skip the fetch, reproducing the prior output exactly.

Value

A data frame with one row per stat:

col_nametypesdescription
athlete_idcharacterESPN athlete id.
seasonintegerSeason (4-digit year).
season_typeintegerESPN season type (2 = regular, 3 = postseason).
categorycharacterStat category (e.g. passing, rushing).
category_displaycharacterHuman-readable category name.
stat_namecharacterInternal stat key (e.g. passingYards).
display_namecharacterHuman-readable stat name.
abbreviationcharacterStat abbreviation.
descriptioncharacterESPN's description of the stat.
valuenumericSeason-total value of the stat.
display_valuecharacterDisplay-formatted season-total value.
per_game_valuenumericPer-game value of the stat.
per_game_display_valuecharacterDisplay-formatted per-game value.
athlete_display_namecharacterPlayer display name; athlete_detail = TRUE only.
athlete_first_namecharacterPlayer first name; athlete_detail = TRUE only.
athlete_last_namecharacterPlayer last name; athlete_detail = TRUE only.
athlete_jerseycharacterPlayer jersey number; athlete_detail = TRUE only.
athlete_positioncharacterPlayer position name; athlete_detail = TRUE only.
athlete_position_abbreviationcharacterPlayer position abbreviation; athlete_detail = TRUE only.

Details

Wraps the ESPN core-v2 endpoint sports.core.api.espn.com/v2/sports/football/leagues/college-football/seasons/{year}/types/{season_type}/athletes/{athlete_id}/statistics. ESPN nests a player's season stats under splits -> categories[] -> stats[]; this wrapper flattens that tree to long format – each row is one stat, tagged with its category (e.g. passing, rushing, defensive). The long shape is deliberate: ESPN adds and retires stats and whole categories across positions and seasons, and a long frame absorbs that drift without breaking column expectations. Pivot wider with tidyr::pivot_wider() keyed on stat_name for a wide table. Each stat carries both a season-total value (value) and a per-game value (per_game_value).

When athlete_detail = TRUE (the default) the requested athlete's ESPN record is fetched once and the human-readable name columns athlete_display_name, athlete_first_name, athlete_last_name, athlete_jersey, athlete_position, and athlete_position_abbreviation are appended to every row. This is a single cheap fetch – the wrapper already takes one athlete_id. A fetch failure degrades the name columns to NA rather than erroring the wrapper. Set athlete_detail = FALSE to skip the fetch and reproduce the prior output exactly.

See also

Other ESPN CFB Functions: espn_cfb_award(), espn_cfb_awards(), espn_cfb_clear_cache(), espn_cfb_coach(), espn_cfb_coach_record(), espn_cfb_coaches(), espn_cfb_franchise(), espn_cfb_franchises(), espn_cfb_futures(), espn_cfb_game_broadcasts(), espn_cfb_game_drive_plays(), espn_cfb_game_drives(), espn_cfb_game_leaders(), espn_cfb_game_odds(), espn_cfb_game_pbp(), espn_cfb_game_play(), espn_cfb_game_player_box(), espn_cfb_game_player_statistics(), espn_cfb_game_powerindex(), espn_cfb_game_predictor(), espn_cfb_game_probabilities(), espn_cfb_game_situation(), espn_cfb_game_status(), espn_cfb_game_team_leaders(), espn_cfb_game_team_linescores(), espn_cfb_game_team_records(), espn_cfb_game_team_roster(), espn_cfb_game_team_statistics(), espn_cfb_game_teams(), espn_cfb_groups(), espn_cfb_pbp_v2(), espn_cfb_player(), espn_cfb_player_eventlog(), espn_cfb_player_gamelog(), espn_cfb_player_overview(), espn_cfb_player_seasons(), espn_cfb_player_splits(), espn_cfb_player_stats_v3(), espn_cfb_players(), espn_cfb_position(), espn_cfb_positions(), espn_cfb_powerindex(), espn_cfb_qbr(), espn_cfb_rankings(), espn_cfb_recruits(), espn_cfb_season_info(), espn_cfb_season_types(), espn_cfb_season_weeks(), espn_cfb_seasons(), espn_cfb_standings(), espn_cfb_team(), espn_cfb_team_ats(), espn_cfb_team_awards(), espn_cfb_team_coaches(), espn_cfb_team_events(), espn_cfb_team_leaders(), espn_cfb_team_powerindex(), espn_cfb_team_ranks(), espn_cfb_team_record(), espn_cfb_team_roster(), espn_cfb_team_schedule(), espn_cfb_teams(), espn_cfb_unnest_plays(), espn_cfb_venue(), espn_cfb_venues(), espn_cfb_week_rankings()

Examples

# \donttest{
  try(espn_cfb_player_career_stats(athlete_id = 102597, year = 2024))
#> ── Player season statistics from ESPN ──────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:56:47 UTC
#> # A tibble: 157 × 19
#>    athlete_id season season_type category category_display stat_name            
#>    <chr>       <int>       <int> <chr>    <chr>            <chr>                
#>  1 102597       2024           2 general  General          fumbles              
#>  2 102597       2024           2 general  General          fumblesLost          
#>  3 102597       2024           2 general  General          fumblesForced        
#>  4 102597       2024           2 general  General          fumblesForcedPrimary 
#>  5 102597       2024           2 general  General          fumblesRecovered     
#>  6 102597       2024           2 general  General          fumblesRecoveredYards
#>  7 102597       2024           2 general  General          fumblesTouchdowns    
#>  8 102597       2024           2 general  General          gamesPlayed          
#>  9 102597       2024           2 general  General          offensiveTwoPtReturns
#> 10 102597       2024           2 general  General          offensiveFumblesTouc…
#> # ℹ 147 more rows
#> # ℹ 13 more variables: display_name <chr>, abbreviation <chr>,
#> #   description <chr>, value <dbl>, display_value <chr>, per_game_value <dbl>,
#> #   per_game_display_value <chr>, athlete_display_name <chr>,
#> #   athlete_first_name <chr>, athlete_last_name <chr>, athlete_jersey <chr>,
#> #   athlete_position <chr>, athlete_position_abbreviation <chr>
  try(espn_cfb_player_career_stats(athlete_id = 102597, year = 2024,
                                 athlete_detail = FALSE))
#> ── Player season statistics from ESPN ──────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:56:47 UTC
#> # A tibble: 157 × 13
#>    athlete_id season season_type category category_display stat_name            
#>    <chr>       <int>       <int> <chr>    <chr>            <chr>                
#>  1 102597       2024           2 general  General          fumbles              
#>  2 102597       2024           2 general  General          fumblesLost          
#>  3 102597       2024           2 general  General          fumblesForced        
#>  4 102597       2024           2 general  General          fumblesForcedPrimary 
#>  5 102597       2024           2 general  General          fumblesRecovered     
#>  6 102597       2024           2 general  General          fumblesRecoveredYards
#>  7 102597       2024           2 general  General          fumblesTouchdowns    
#>  8 102597       2024           2 general  General          gamesPlayed          
#>  9 102597       2024           2 general  General          offensiveTwoPtReturns
#> 10 102597       2024           2 general  General          offensiveFumblesTouc…
#> # ℹ 147 more rows
#> # ℹ 7 more variables: display_name <chr>, abbreviation <chr>,
#> #   description <chr>, value <dbl>, display_value <chr>, per_game_value <dbl>,
#> #   per_game_display_value <chr>
# }