Skip to contents

Get ESPN's Total Quarterback Rating (QBR) and its full set of clutch-weighted EPA components for a college football season.

Usage

espn_cfb_qbr(year = NULL, group = 80, athlete_detail = FALSE)

Arguments

year

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

group

(Integer default 80): ESPN group id. 80 = all FBS. Conference group ids (e.g. 4 ACC, 8 Big 12, 12 SEC, 21 Big Ten) also work.

athlete_detail

(Logical): when TRUE, dereference each quarterback and append the athlete_* name columns (see Details). This costs one HTTP call per quarterback, so it defaults to FALSE; setting it FALSE reproduces the prior output exactly.

Value

A data frame with one row per quarterback:

col_nametypesdescription
seasonintegerSeason (4-digit year).
season_typeintegerESPN season type (2 = regular season).
group_idcharacterESPN group id queried (80 = all FBS).
athlete_idcharacterESPN athlete id (parsed from athlete_ref).
team_idcharacterESPN team id (parsed from team_ref).
qbpaanumericQB Points Added Above Average.
cwepa_passes_condensednumericClutch-weighted EPA from passes (condensed).
cwepa_rushesnumericClutch-weighted EPA from designed rushes.
cwepa_sacked_condensednumericClutch-weighted EPA lost to sacks (condensed).
cwepa_penaltiesnumericClutch-weighted EPA from penalties.
cwepa_totalnumericTotal clutch-weighted EPA.
action_playsnumericAction plays charged to the quarterback.
cw_averagenumericClutch-weighted average win value per play.
qbrnumericTotal Quarterback Rating (0-100).
cwepa_passesnumericClutch-weighted EPA from pass attempts.
cwepa_interceptionsnumericClutch-weighted EPA lost to interceptions.
cwepa_yards_after_carrynumericClutch-weighted EPA from yards after carry.
cwepa_runsnumericClutch-weighted EPA from runs.
cwepa_scramblesnumericClutch-weighted EPA from scrambles.
cwepa_sackednumericClutch-weighted EPA lost to sacks.
cwepa_fumblesnumericClutch-weighted EPA lost to fumbles.
avg_opp_dqbrnumericAverage opponent defensive QBR faced.
sched_adj_qbrnumericSchedule-adjusted QBR.
unqualified_ranknumericQBR rank including unqualified passers.
athlete_refcharacter$ref URL to the athlete-in-season resource.
team_refcharacter$ref URL to the team-in-season resource.
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 QBR endpoint seasons/{year}/types/2/groups/{group}/qbr/0. It returns season-to-date regular-season QBR for every qualified passer in the requested group (conference / division). group = 80 is the all-FBS bucket and is the sensible default; conference group ids (e.g. 4 ACC, 8 Big 12, 12 SEC, 21 Big Ten) also work.

Two parameters ESPN's QBR path technically accepts are deliberately not exposed, because neither carries data for college football:

  • The .../weeks/{week}/qbr/... path returns the same season aggregate for every week – use espn_cfb_player_stats() for week-resolved passing production instead.

  • The home/away game-location split (.../qbr/1, .../qbr/2) responds 200 but is empty for college football; only the total (.../qbr/0) is populated.

The result is wide – one row per quarterback – with the headline qbr column plus the 18 component metrics ESPN derives it from. Players are returned as ESPN athlete ids only (athlete_id) unless name resolution is requested.

When athlete_detail = TRUE the human-readable name columns athlete_display_name, athlete_first_name, athlete_last_name, athlete_jersey, athlete_position, and athlete_position_abbreviation are appended. There is no bulk athlete-name catalog, so resolving names here costs one HTTP call per quarterback – roughly 130 extra requests for an all-FBS pull. It therefore defaults to FALSE. A per-athlete fetch failure leaves that quarterback's name columns NA rather than erroring the wrapper. To resolve names without these extra calls, join athlete_id to another athlete source (e.g. cfbd_team_roster()).

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_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_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_qbr(year = 2024))
#> ── QBR data from ESPN ──────────────────────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:56:58 UTC
#> # A tibble: 129 × 26
#>    season season_type group_id athlete_id team_id  qbpaa cwepa_passes_condensed
#>     <int>       <int> <chr>    <chr>      <chr>    <dbl>                  <dbl>
#>  1   2024           2 80       102597     264      7.86                    41.7
#>  2   2024           2 80       4360480    328      4.01                    24.6
#>  3   2024           2 80       4360689    97      39.8                     61.1
#>  4   2024           2 80       4360890    326     69.0                     70.7
#>  5   2024           2 80       4362159    197     22.3                     37.5
#>  6   2024           2 80       4373895    309     48.0                     51.4
#>  7   2024           2 80       4426430    113      0.339                   17.9
#>  8   2024           2 80       4426444    189     24.2                     61.1
#>  9   2024           2 80       4426499    154      9.62                    38.5
#> 10   2024           2 80       4427238    2483    86.3                     87.0
#> # ℹ 119 more rows
#> # ℹ 19 more variables: cwepa_rushes <dbl>, cwepa_sacked_condensed <dbl>,
#> #   cwepa_penalties <dbl>, cwepa_total <dbl>, action_plays <dbl>,
#> #   cw_average <dbl>, qbr <dbl>, cwepa_passes <dbl>, cwepa_interceptions <dbl>,
#> #   cwepa_yards_after_carry <dbl>, cwepa_runs <dbl>, cwepa_scrambles <dbl>,
#> #   cwepa_sacked <dbl>, cwepa_fumbles <dbl>, avg_opp_dqbr <dbl>,
#> #   sched_adj_qbr <dbl>, unqualified_rank <dbl>, athlete_ref <chr>, …
  try(espn_cfb_qbr(year = 2024, athlete_detail = TRUE))
#> ── QBR data from ESPN ──────────────────────────────────────── cfbfastR 2.3.0 ──
#>  Data updated: 2026-06-09 07:57:03 UTC
#> # A tibble: 129 × 32
#>    season season_type group_id athlete_id team_id  qbpaa cwepa_passes_condensed
#>     <int>       <int> <chr>    <chr>      <chr>    <dbl>                  <dbl>
#>  1   2024           2 80       102597     264      7.86                    41.7
#>  2   2024           2 80       4360480    328      4.01                    24.6
#>  3   2024           2 80       4360689    97      39.8                     61.1
#>  4   2024           2 80       4360890    326     69.0                     70.7
#>  5   2024           2 80       4362159    197     22.3                     37.5
#>  6   2024           2 80       4373895    309     48.0                     51.4
#>  7   2024           2 80       4426430    113      0.339                   17.9
#>  8   2024           2 80       4426444    189     24.2                     61.1
#>  9   2024           2 80       4426499    154      9.62                    38.5
#> 10   2024           2 80       4427238    2483    86.3                     87.0
#> # ℹ 119 more rows
#> # ℹ 25 more variables: cwepa_rushes <dbl>, cwepa_sacked_condensed <dbl>,
#> #   cwepa_penalties <dbl>, cwepa_total <dbl>, action_plays <dbl>,
#> #   cw_average <dbl>, qbr <dbl>, cwepa_passes <dbl>, cwepa_interceptions <dbl>,
#> #   cwepa_yards_after_carry <dbl>, cwepa_runs <dbl>, cwepa_scrambles <dbl>,
#> #   cwepa_sacked <dbl>, cwepa_fumbles <dbl>, avg_opp_dqbr <dbl>,
#> #   sched_adj_qbr <dbl>, unqualified_rank <dbl>, athlete_ref <chr>, …
# }