Skip to contents

Get individual punt plays with yardage, field position and outcome

Usage

cfbd_punting_plays(
  year = NULL,
  game_id = NULL,
  week = NULL,
  season_type = NULL,
  team = NULL,
  punting_team = NULL,
  receiving_team = NULL,
  conference = NULL,
  punter_id = NULL,
  returner_id = NULL,
  classification = NULL,
  proxy = NULL
)

Arguments

year

(Integer optional): Year, 4 digit format (YYYY). Required unless game_id is given.
Minimum value accepted: 2015

game_id

(Integer optional): Game ID filter for querying a single game

week

(Integer optional): Week - values range from 1-15, 1-14 for seasons pre-playoff (i.e. 2013 or earlier). With year, CFBD also needs one of week, a team filter, punter_id or returner_id.

season_type

(String optional): Season type - regular, postseason, both, allstar, spring_regular, spring_postseason

team

(String optional): Team on either side of the punt

punting_team

(String optional): Punting team filter

receiving_team

(String optional): Receiving team filter

conference

(String optional): Conference name or abbreviation on either side of the punt

punter_id

(String optional): CFBD athlete id of the punter to filter on.

returner_id

(String optional): CFBD athlete id of the returner to filter on.

classification

(String optional): Division classification - fbs, fcs, ii, ii/iii, iii. CFBD defaults to fbs.

proxy

(List optional): Per-call proxy override passed to get_req(). NULL (default) falls back to getOption("cfbfastR.proxy") and then the http(s)_proxy environment variables, so a caller can override the shared setting for one endpoint.

Value

cfbd_punting_plays() - A data frame with 46 variables:

col_nametypedescription
game_idintegerUnique game identifier - game_id.
play_idcharacterUnique play identifier - play_id.
drive_idcharacterUnique drive identifier - drive_id.
seasonintegerFour-digit season year (e.g. 2025).
weekintegerWeek of the season.
season_typecharacterSeason type (regular, postseason, ...).
punting_team_idintegerPunting team id.
punting_teamcharacterPunting team name.
punting_conferencecharacterPunting team conference name.
receiving_team_idintegerReceiving team id.
receiving_teamcharacterReceiving team name.
receiving_conferencecharacterReceiving team conference name.
periodintegerQuarter of the play.
downintegerDown of the play.
distanceintegerYards to gain for a first down.
play_typecharacterCFBD play type (e.g. Punt, Blocked Punt, Punt Return Touchdown).
play_textcharacterPlay description text as published by the source.
punter_idcharacterCFBD athlete id of the punter.
puntercharacterPunter full name.
receiver_idcharacterCFBD athlete id of the player who fielded the punt.
receivercharacterFull name of the player who fielded the punt.
returner_idcharacterCFBD athlete id of the returner.
returnercharacterReturner full name.
blocker_idcharacterCFBD athlete id of the player who blocked the punt.
blockercharacterFull name of the player who blocked the punt.
counts_as_puntlogicalTRUE when the play counts as a punt (NA when unknown).
counts_as_returnlogicalTRUE when the play counts as a punt return (NA when unknown).
start_yards_to_goalintegerPunting team's yards from the opponent's end zone at the snap.
punt_yardsintegerGross punt yards.
return_yardsintegerReturn yards for the receiving team.
returner_yardsintegerReturn yards credited to the returner (NA when not credited individually).
net_punt_yardsintegerGross punt yards minus return yards, less 20 yards for a touchback.
kick_end_yardlineintegerWhere the kick ended, from the punting team's goal line (0) to the receiving team's (100).
end_yardlineintegerWhere the play ended, on the same scale as kick_end_yardline.
is_touchbacklogicalTRUE when the punt ended in a touchback.
is_fair_catchlogicalTRUE when the punt was fair caught.
is_out_of_boundslogicalTRUE when the punt went out of bounds.
is_downedlogicalTRUE when the punt was downed by the kicking team.
is_blockedlogicalTRUE when the punt was blocked.
is_muffedlogicalTRUE when the receiving team muffed the punt.
is_return_touchdownlogicalTRUE when the return went for a touchdown.
is_receiving_team_turnoverlogicalTRUE when the receiving team lost possession, such as on a muff or fumble.
has_penaltylogicalTRUE when a penalty was called on the play.
parse_statuscharacterHow completely CFBD parsed the play text - complete or partial.
clock_minutesintegerMinutes remaining on the game clock at the snap.
clock_secondsintegerSeconds remaining on the game clock at the snap.

Columns that are NA on every row of a response are typed logical by R: CFBD does not fill blocker_id or blocker, even when the play text names the blocker, so both are usually all NA and typed logical. Return yardage is NA, not 0, on a punt with no return.

Examples

# \donttest{
  try(cfbd_punting_plays(year = 2025, week = 1, team = "Texas"))
#> ── Punting plays data from CollegeFootballData.com ─────────── cfbfastR 3.1.0 ──
#> ℹ Data updated: 2026-11-01 20:29:18 UTC
#> # A tibble: 17 × 46
#>      game_id play_id           drive_id season  week season_type punting_team_id
#>        <int> <chr>             <chr>     <int> <int> <chr>                 <int>
#>  1 401752677 4017526771019365… 4017526…   2025     1 regular                 251
#>  2 401752677 4017526771019664… 4017526…   2025     1 regular                 194
#>  3 401752677 4017526771019841… 4017526…   2025     1 regular                 251
#>  4 401752677 4017526771029494… 4017526…   2025     1 regular                 251
#>  5 401752677 4017526771029845… 4017526…   2025     1 regular                 194
#>  6 401752677 4017526771029964… 4017526…   2025     1 regular                 251
#>  7 401752677 4017526771038665… 4017526…   2025     1 regular                 194
#>  8 401752677 4017526771039641… 4017526…   2025     1 regular                 194
#>  9 401752677 4017526771049589… 4017526…   2025     1 regular                 194
#> 10 401752677 4017526771049773… 4017526…   2025     1 regular                 194
#> 11 401778330 40177833079       4017783…   2025     1 postseason              130
#> 12 401778330 40177833097       4017783…   2025     1 postseason              251
#> 13 401778330 401778330339      4017783…   2025     1 postseason              130
#> 14 401778330 401778330371      4017783…   2025     1 postseason              251
#> 15 401778330 401778330388      4017783…   2025     1 postseason              130
#> 16 401778330 401778330423      4017783…   2025     1 postseason              251
#> 17 401778330 401778330658      4017783…   2025     1 postseason              251
#> # ℹ 39 more variables: punting_team <chr>, punting_conference <chr>,
#> #   receiving_team_id <int>, receiving_team <chr>, receiving_conference <chr>,
#> #   period <int>, down <int>, distance <int>, play_type <chr>, play_text <chr>,
#> #   punter_id <chr>, punter <chr>, receiver_id <chr>, receiver <chr>,
#> #   returner_id <chr>, returner <chr>, blocker_id <lgl>, blocker <lgl>,
#> #   counts_as_punt <lgl>, counts_as_return <lgl>, start_yards_to_goal <int>,
#> #   punt_yards <int>, return_yards <int>, returner_yards <int>, …
# }