Free NFL historical data: nflverse raw vs a preprocessed pack
For free NFL historical data, start with nflverse. The project publishes every game since 1999 as CSV under CC BY 4.0, and it costs nothing to download or use with attribution. The pack on this site is built from those same rows, so the games, scores, and lines are identical. What you pay for is the work between download and analysis: spread and moneyline columns documented and normalized, two derived tables (861 team-season records, 27 season summaries), a data dictionary, and MCP query access against the full file.
If you already run an R or Python pipeline against nflverse releases, you likely need none of that. Writing the Python side with requests? The NFL data API examples show the exact calls against the releases and ESPN, then the trade-off against a pinned snapshot. The honest comparison is below, including a section on when raw nflverse is enough.
What nflverse gives you
nflverse-data is the automated data repository behind the nflverse R and Python ecosystem. Game schedules and results live in the releases as CSV, refreshed by GitHub Actions. The games file carries 46 columns per row: schedule and scores, closing spread and total (from 1999), American-odds moneylines and spread/total odds (from 2006), rest days, quarterbacks, coaches, stadium, roof, surface, and kickoff weather. Coverage and licensing:
| Fact | Detail |
|---|---|
| Source | github.com/nflverse/nflverse-data, automated releases |
| License | CC BY 4.0, free including commercial use with attribution |
| Game coverage | 1999 through the current season, one row per game |
| Access | Direct CSV download, or the nflreadr R package |
| Cost | Free |
Data Vault's games.csv is that file, downloaded 2026-09-06 with the SHA-256 recorded in the pack. The row count, columns, and values match the source.
The work between download and analysis
Raw nflverse rows answer "what happened in each game." Most projects then rebuild the same few layers first. These are the ones that eat the afternoon:
- Spread sign convention. spread_line is stored relative to the home team: -4 means the away team is favored by 4. Cover calculations need the negation logic and the push rules (integer lines can push, half-point lines cannot).
- Moneyline normalization. American odds arrive as signed integers from 2006 only. Converting to win probability, or joining against the spread columns, means deciding how to treat the 1999-2005 gap rather than filling it with placeholders.
- Team codes across eras. OAK, SD, and STL keep franchises at their old homes; Washington is WAS through 2021 and WSH from 2022. Any per-team aggregation across decades maps these first.
- Derived aggregates. Per-team-per-season records (wins, losses, ties, points for and against, against-the-spread record with pushes broken out, over/under record) and per-season scoring summaries are standard first queries. Both require correct playoff handling.
- Schema documentation. 46 columns, several with era-dependent availability, means the dictionary is part of the dataset, not an afterthought.
What the paid pack adds to the same rows
The NFL Games & Betting Lines 1999-2026 pack ships 3 CSVs, 7,548 + 861 + 27 rows, from the 1999 season through the full 2026 schedule:
| File | Rows | What it saves you |
|---|---|---|
| games.csv | 7,548 | The nflverse file plus a written data dictionary: every column defined, spread sign convention and push rules documented, era availability stated per field group |
| team-records-by-season.csv | 861 | The per-team-per-season aggregate above, computed by a documented script included in the pack, so it is auditable and rebuildable |
| season-summaries.csv | 27 | One row per season 1999-2025: average home and away scoring, home win rate, favorite cover share, over/under split, push counts |
| checksums | SHA-256 | Provenance back to the exact nflverse download |
Query access works differently too. Instead of loading the full file into pandas or R to filter it, the dataset-mcp server queries the released files directly, 100 rows per call, filters on any column, no API key:
npx -y github:jayjex/dataset-mcp
Example query, every 2025-season game, first page:
query_dataset("nfl-games", {where: [{column: "season", op: "=", value: "2025"}], limit: 10})
total_matched: 285 | next_offset: 10
2025_01_DAL_PHI 2025-09-04 DAL@PHI 20-24 spread=8.5 total=47.5
...
Filter operators are =, contains, gt, and lt, with offset for paging. This layer is free and runs against the full 7,548-row file, so you can evaluate the schema before paying for anything.
Checkout and download run through Getly. The 22-row sample and the full season-summaries.csv are free downloads here and on the games.csv column guide.
Side by side
| nflverse raw | Data Vault pack | |
|---|---|---|
| Cost | Free | Free sample and MCP queries; full pack priced on its Getly product page |
| License | CC BY 4.0 | CC BY 4.0 (source rows and derived tables) |
| Game rows | 1999-2026, one per game | Same 7,548 rows, checksummed copy |
| Lines | spread and total from 1999, odds from 2006 | Same values, sign convention and push rules documented |
| Derived tables | none, build your own | 861 team-season records + 27 season summaries, rebuild script included |
| Dictionary | README and package docs | Data dictionary covering all 46 columns |
| Query access | Download then load in R/Python | MCP server, 100 rows/call, free |
| Updates | Automated weekly releases | Snapshot-based releases (this one 2026-09-06) |
| Best for | Pipelines already in R/Python, weekly freshness | One-CSV analysis, spreadsheet users, agents without an R toolchain |
When raw nflverse is enough
Skip the pack and use nflverse directly when any of these describes you:
- You work in R with nflreadr already.
load_schedules()returns the same rows as a tidy tibble, and weekly releases keep you current. A snapshot pack cannot compete on freshness. - Your project needs play-by-play, player stats, or fantasy-relevant weekly data. The pack contains games only; nflverse publishes separate releases for those datasets.
- You are building a pipeline that refreshes itself. Point it at the nflverse releases and let GitHub Actions do the updating.
- You need to redistribute the data inside your own product. CC BY 4.0 covers that with attribution either way, but taking rows straight from the source keeps the provenance chain shortest.
The pack fits the other case: you want the 27 seasons in one CSV with the aggregates already computed and documented, and you would rather pay once than write and maintain the derivation scripts.
Source and license
All game rows come from the nflverse-data project, file schedules/games.csv, downloaded 2026-09-06 with the SHA-256 recorded in the pack. nflverse-data is released under CC BY 4.0. The derived tables were computed from that file by Data Vault and carry the same license terms.
If you publish work built on this data, credit it like this: "Data from nflverse, CC BY 4.0". Samples on this site are also CC BY 4.0. No logos or league marks appear anywhere in the pack; team names are factual data.
What this data is for
Everything on this page is historical record: results, lines, and conditions as they stood at each game. Common uses are research and analysis, such as home win rates by decade, scoring trends across eras, weather effects on totals, or training and testing models on a 27-season split. The pack and this page describe the data only and offer no betting advice, picks, or predictions.
FAQ
Is NFL historical game data free?
Yes. nflverse publishes game results, schedules, and betting lines under CC BY 4.0 at no cost. The Data Vault pack adds preprocessing on top of those same rows; its 22-row sample CSV and the full 27-row season-summaries.csv are also free downloads, and MCP queries against the full file cost nothing. The complete pack is a one-time purchase.
What license applies to NFL data from nflverse and this pack?
CC BY 4.0. nflverse-data is released under Creative Commons Attribution 4.0, and the derived tables in the pack carry the same terms. If you publish work built on the data, credit it as: "Data from nflverse, CC BY 4.0".
Can I see a sample of the data before buying?
Yes. A 22-row games sample with 14 of the 46 columns and the complete season-summaries.csv (27 rows, one per season 1999-2025) download free with no signup. The dataset-mcp server also queries the full 7,548-row file for free, 100 rows per call.