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 theteam_idcolumn (see Details). SetFALSEto skip the catalog fetch and the join.- athlete_detail
(Logical): when
TRUE(default), fetch the requested athlete's ESPN record once and append theathlete_*name columns (see Details). SetFALSEto 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_name | types | description |
| athlete_id | character | ESPN athlete id. |
| season | integer | Season (4-digit year). |
| season_type | character | Season-type label (e.g. 2024 Regular Season). |
| game_id | character | ESPN event (game) id. |
| game_date | character | Game date (ISO 8601). |
| week | integer | Week number. |
| at_vs | character | vs (home) or @ (away). |
| opponent_id | character | ESPN team id of the opponent. |
| opponent_name | character | Opponent display name. |
| opponent_abbr | character | Opponent abbreviation. |
| team_id | character | ESPN team id the player played for. |
| team_name | character | Team nickname; team_detail = TRUE only. |
| team_abbreviation | character | Team abbreviation; team_detail = TRUE only. |
| team_location | character | Team location / school name; team_detail = TRUE only. |
| team_display_name | character | Full team display name; team_detail = TRUE only. |
| team_short_display_name | character | Short team display name; team_detail = TRUE only. |
| team_nickname | character | Team nickname label; team_detail = TRUE only. |
| team_color | character | Primary team color; team_detail = TRUE only. |
| team_alternate_color | character | Alternate team color; team_detail = TRUE only. |
| team_logo_href | character | Default team logo URL; team_detail = TRUE only. |
| team_logo_dark_href | character | Dark-variant team logo URL; team_detail = TRUE only. |
| home_team_score | character | Home team final score. |
| away_team_score | character | Away team final score. |
| game_result | character | Game result for the player's team (W/L). |
| score | character | Final score string. |
| athlete_display_name | character | Player display name; athlete_detail = TRUE only. |
| athlete_first_name | character | Player first name; athlete_detail = TRUE only. |
| athlete_last_name | character | Player last name; athlete_detail = TRUE only. |
| athlete_jersey | character | Player jersey number; athlete_detail = TRUE only. |
| athlete_position | character | Player position name; athlete_detail = TRUE only. |
| athlete_position_abbreviation | character | Player position abbreviation; athlete_detail = TRUE only. |
| ... | character | One 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>, …
# }
