Skip to contents

Get a single college football player's game-by-game statistical log for a season – one row per game, with the player's stat line joined to opponent, score, and result metadata.

Usage

espn_cfb_player_gamelog(
  athlete_id = NULL,
  year = NULL,
  team_detail = TRUE,
  athlete_detail = TRUE
)

Arguments

athlete_id

(Character/Integer required): ESPN athlete id.

year

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

team_detail

(Logical): when TRUE (default), fetch the ESPN team catalog once and join friendly team fields next to the team_id column (see Details). Set FALSE to skip the catalog fetch and the join.

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 game. The leading columns are fixed; the trailing stat columns vary by position:

col_nametypesdescription
athlete_idcharacterESPN athlete id.
seasonintegerSeason (4-digit year).
season_typecharacterSeason-type label (e.g. 2024 Regular Season).
game_idcharacterESPN event (game) id.
game_datecharacterGame date (ISO 8601).
weekintegerWeek number.
at_vscharactervs (home) or @ (away).
opponent_idcharacterESPN team id of the opponent.
opponent_namecharacterOpponent display name.
opponent_abbrcharacterOpponent abbreviation.
team_idcharacterESPN team id the player played for.
team_namecharacterTeam nickname; team_detail = TRUE only.
team_abbreviationcharacterTeam abbreviation; team_detail = TRUE only.
team_locationcharacterTeam location / school name; team_detail = TRUE only.
team_display_namecharacterFull team display name; team_detail = TRUE only.
team_short_display_namecharacterShort team display name; team_detail = TRUE only.
team_nicknamecharacterTeam nickname label; team_detail = TRUE only.
team_colorcharacterPrimary team color; team_detail = TRUE only.
team_alternate_colorcharacterAlternate team color; team_detail = TRUE only.
team_logo_hrefcharacterDefault team logo URL; team_detail = TRUE only.
team_logo_dark_hrefcharacterDark-variant team logo URL; team_detail = TRUE only.
home_team_scorecharacterHome team final score.
away_team_scorecharacterAway team final score.
game_resultcharacterGame result for the player's team (W/L).
scorecharacterFinal score string.
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.
...characterOne column per stat in the names array (varies).

Details

Wraps the ESPN web-v3 endpoint site.web.api.espn.com/apis/common/v3/sports/football/college-football/athletes/{athlete_id}/gamelog. Unlike the core-v2 espn_cfb_player_eventlog() (which returns only $ref URLs), this endpoint ships fully-resolved per-game stat lines. The wrapper joins three blocks of the payload: the events map (game metadata – opponent, date, score, result), the seasonTypes -> categories -> events block (the per-game stat values), and the top-level labels / names arrays (the stat column names). Stat columns are named from the names array (e.g. completions, passing_yards); they vary by the player's position. If the player did not play in the requested season ESPN returns only a filters object and this wrapper returns an empty data frame.

When team_detail = TRUE (the default) the ESPN team catalog (espn_cfb_teams()) is fetched once and friendly team fields are joined in next to the team_id column – team_name, team_abbreviation, team_location, team_display_name, team_short_display_name, team_nickname, team_color, team_alternate_color, team_logo_href, and team_logo_dark_href, inserted immediately after team_id. A catalog failure degrades to NA rather than erroring the wrapper. Set team_detail = FALSE to skip the catalog fetch and the join.

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_career_stats(), espn_cfb_player_eventlog(), 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_gamelog(athlete_id = 102597, year = 2024))
#> ── Player game log from ESPN ───────────────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:56:48 UTC
#> # A tibble: 11 × 46
#>    athlete_id season season_type       game_id game_date  week at_vs opponent_id
#>    <chr>       <int> <chr>             <chr>   <chr>     <int> <chr> <chr>      
#>  1 102597       2024 2024 Regular Sea… 401628… 2024-11-…    12 vs    26         
#>  2 102597       2024 2024 Regular Sea… 401628… 2024-11-…    11 @     213        
#>  3 102597       2024 2024 Regular Sea… 401628… 2024-11-…    10 vs    30         
#>  4 102597       2024 2024 Regular Sea… 401628… 2024-10-…     9 @     84         
#>  5 102597       2024 2024 Regular Sea… 401628… 2024-10-…     7 @     2294       
#>  6 102597       2024 2024 Regular Sea… 401628… 2024-10-…     6 vs    130        
#>  7 102597       2024 2024 Regular Sea… 401628… 2024-09-…     5 @     164        
#>  8 102597       2024 2024 Regular Sea… 401628… 2024-09-…     4 vs    77         
#>  9 102597       2024 2024 Regular Sea… 401628… 2024-09-…     3 vs    265        
#> 10 102597       2024 2024 Regular Sea… 401628… 2024-09-…     2 vs    2199       
#> 11 102597       2024 2024 Regular Sea… 401628… 2024-09-…     1 vs    2692       
#> # ℹ 38 more variables: opponent_name <chr>, opponent_abbr <chr>, team_id <chr>,
#> #   team_name <chr>, team_abbreviation <chr>, team_location <chr>,
#> #   team_display_name <chr>, team_short_display_name <chr>,
#> #   team_nickname <chr>, team_color <chr>, team_alternate_color <chr>,
#> #   team_logo_href <chr>, team_logo_dark_href <chr>, home_team_score <chr>,
#> #   away_team_score <chr>, game_result <chr>, score <chr>, completions <chr>,
#> #   passing_attempts <chr>, passing_yards <chr>, completion_pct <chr>, …
  try(espn_cfb_player_gamelog(athlete_id = 102597, year = 2024,
                              team_detail = FALSE,
                              athlete_detail = FALSE))
#> ── Player game log from ESPN ───────────────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:56:48 UTC
#> # A tibble: 11 × 30
#>    athlete_id season season_type       game_id game_date  week at_vs opponent_id
#>    <chr>       <int> <chr>             <chr>   <chr>     <int> <chr> <chr>      
#>  1 102597       2024 2024 Regular Sea… 401628… 2024-11-…    12 vs    26         
#>  2 102597       2024 2024 Regular Sea… 401628… 2024-11-…    11 @     213        
#>  3 102597       2024 2024 Regular Sea… 401628… 2024-11-…    10 vs    30         
#>  4 102597       2024 2024 Regular Sea… 401628… 2024-10-…     9 @     84         
#>  5 102597       2024 2024 Regular Sea… 401628… 2024-10-…     7 @     2294       
#>  6 102597       2024 2024 Regular Sea… 401628… 2024-10-…     6 vs    130        
#>  7 102597       2024 2024 Regular Sea… 401628… 2024-09-…     5 @     164        
#>  8 102597       2024 2024 Regular Sea… 401628… 2024-09-…     4 vs    77         
#>  9 102597       2024 2024 Regular Sea… 401628… 2024-09-…     3 vs    265        
#> 10 102597       2024 2024 Regular Sea… 401628… 2024-09-…     2 vs    2199       
#> 11 102597       2024 2024 Regular Sea… 401628… 2024-09-…     1 vs    2692       
#> # ℹ 22 more variables: opponent_name <chr>, opponent_abbr <chr>, team_id <chr>,
#> #   home_team_score <chr>, away_team_score <chr>, game_result <chr>,
#> #   score <chr>, completions <chr>, passing_attempts <chr>,
#> #   passing_yards <chr>, completion_pct <chr>, passing_touchdowns <chr>,
#> #   interceptions <chr>, long_passing <chr>, sacks <chr>, qb_rating <chr>,
#> #   adj_qbr <chr>, rushing_attempts <chr>, rushing_yards <chr>,
#> #   yards_per_rush_attempt <chr>, rushing_touchdowns <chr>, …
# }