knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
nflreadr
provides a wide range of NFL related data. This is powered by an extensive, automated data infrastructure. This article provides information on update and availability schedules, as this is a pressing question for many nflverse users, especially right before the start of a season.
The following table reports on the status and last update times of nflverse data pipelines.
# # ONLY RUN IF WE NEED TO UPDATE THE LIST OF RELEASES!!! # l <- piggyback::pb_list(repo = "nflverse/nflverse-data") data_releases <- l |> dplyr::filter(file_name %in% c("timestamp.json","")) |> dplyr::distinct(tag,file_name) |> dplyr::mutate( url = glue::glue("https://github.com/nflverse/nflverse-data/releases/download/{tag}/timestamp.json"), badge = glue::glue("[}&query=last_updated&style=flat-square&url={URLencode(url)})](https://github.com/nflverse/nflverse-data/releases/tag/{tag})")) |> dplyr::select( Data = tag, `Last Updated` = badge ) |> dplyr::bind_rows( list(Data = "pbp_raw", `Last Updated` = "[]()") ) nflversedata::nflverse_save(data_releases, "data_releases", "nflverse Data Releases", "misc", file_types = "rds")
update_times <- nflreadr::rds_from_url("https://github.com/nflverse/nflverse-data/releases/download/misc/data_releases.rds") status <- tibble::tribble( ~Data, ~ Status, "pbp_raw", "", "pbp", "", "player_stats", "", "rosters", "", "players", "", "snap_counts", "", "draft_picks", "", "pfr_advstats", "", "nextgen_stats", "", "injuries", "", "depth_charts", "", "combine", "", "nfl4th", "", "ffverse player IDs", "", "ffverse rankings", "", "contracts", "" ) |> dplyr::left_join(update_times, by = "Data") |> dplyr::mutate_all(tidyr::replace_na,"") |> dplyr::mutate(Status = glue::glue("[{Status}]()"))
knitr::kable(status)
There are three ways to obtain nflverse pbp data.
nflreadr::load_pbp()
or nflfastR::load_pbp()
as the primary method of retrieving pbp data. This uses our automated data infrastructure to download clean data, and we update this on a nightly basis after each game day (and additionally at specific points on game days) during the season.nflfastR::build_nflfastR_pbp()
parses raw pbp json files we save, usually available within 15 minutes after a game has ended.nflfastR::update_db()
helps maintain a pbp database. It uses nflfastR::build_nflfastR_pbp()
so can be run on the same schedule (i.e. within 15 minutes after a game has ended).In all cases, it is recommended to update the data again during the night from Wednesday to Thursday in order to also receive the stat corrections that the NFL will incorporate from Monday to Wednesday at the latest. -> Thursday's load_pbp()
is the cleanest data we have.
Weekly player stats (offense, defense, kicking) are computed using
nflfastR::calculate_player_stats()
, nflfastR::calculate_player_stats_def()
, andnflfastR::calculate_player_stats_kicking()
with up to date nflverse pbp data. All player stats update every night (in the range of 3 am - 5 am ET) during the season.
ftn charting data updates every day at 0, 6, 12, 18 UTC during the season. The actual availability of new data depends on the update schedule of FTN.
Participation data is computed using unpublished code. The data source is gone and there won't be updates anymore.
Game/Schedule data updates very 5 minutes during the season.
Roster data updates every day at 7AM UTC.
Player level weekly stats provided by NFL Next Gen Stats update every night (in the range of 3 am - 5 am ET) during the season. The actual availability of new data depends on the update schedule of NGS.
Snap Count data updates every day at 0, 6, 12, 18 UTC during the season. The actual availability of new data depends on the update schedule of PFR.
PFR Advanced Stats updates every day at 7AM UTC during the season. The actual availability of new data depends on the update schedule of PFR.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.