Point-in-time NFL data. Serving contract, agent representation.
Upstream feeds rewrite their own history. nflverse recomputes EPA, WPA, CPOE
and xYAC on every model refit and republishes all seasons back to 1999
(play_by_play_1999.parquet, mtime 2025-04-30). Reading the current
file to backtest a past date trains on values the feed did not carry on that date.
Pin as_of to eliminate this. Omitting it returns
latest and sets x-fbdata-point-in-time: false.
| rows_current | 5,390,919 | versions_total | 5,979,895 |
| datasets | depth_charts, depth_charts_legacy, ftn_charting, futures_quotes, injuries, market_quotes, odds_events, participation, pbp, pfr_def, pfr_pass, pfr_rec, pfr_rush, player_stats, players, prediction_quotes, prop_quotes, schedules, snap_counts, weekly_rosters | partitions | 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 |
| columns_observed | 315 | columns_derived | 57 / 372 |
| snapshots | 16190 | last_ingest | 2026-08-10T15:43:58.470767Z |
| first_ingest | 2026-08-03T20:45:37.669938Z | as_of_before_first_ingest | empty result |
| corrections | 588,212 | remodels | 0 |
_known_to IS NULL means
current. Real-world time lives in the payload (game_date).fbdata provides prediction inputs, not picks. Use it for fantasy projections,
spreads, totals, props and market-making agents. Start at
GET /predictions?mode=agent for the workflow map.
as_of; latest is labelled unsafe./v1/leaders/{board}; columns include type and direction.Precomputed efficiency tables — usually what you want instead of raw
play-by-play. All honour as_of.
# latest
GET /v1/query?dataset=pbp&partition=2024&columns=game_id,play_id,epa&limit=1
# same row as believed on 2026-02-01
GET /v1/query?dataset=pbp&partition=2024&columns=game_id,play_id,epa&limit=1&as_of=2026-02-01T00:00:00Z
# verified divergence on one play:
# epa -0.200602 → -0.207623 (refit, class=remodel)
# yards_gained 3 → 6 (league correction, class=correction)
$0.0004 per 1,000 rows returned. Settlement is x402 on Radius via radius-tollgate. Not enforced in-process; the gateway settles before a request reaches this service.