Updated Sep 7, 2026 · Week 1 board.
Where players.csv and games.csv actually live
Both files ship as GitHub Releases inside the nflverse-data project, not as a hidden download or a paid feed. Open github.com/nflverse/nflverse-data/releases and look for the release tagged players for the player list, and the release tagged schedules for the game-by-game file most people mean when they search games.csv. Each release page links a plain CSV. No sign-in, no scraping, no key required.
The schedules file is not a Week 1 snapshot. The copy we opened starts at the 1999 season and adds one line for every game since, so a single season is a small slice of a much longer file.
The columns a bettor actually opens
players.csv is a name-and-team lookup, one line per player, not a stat file. The column that matters most is the player's GSIS id, the league's own id number and the shared key every other nflverse file, tracking data included, uses to tie a stat line back to a name.
| Column | What a bettor uses it for |
|---|---|
| GSIS player id | The shared key that joins this file to tracking data and weekly stats |
| Display name | The readable player name |
| Position and position group | Confirms role before you trust a prop or a target-share number |
| Latest team and status | Current team and roster status, so a trade or a cut does not wreck a join |
| Height, weight, college | Context for a size or draft-profile argument |
| Draft year, round, and pick | Draft capital, useful for a rookie-role argument |
The schedules file, games.csv, answers a different question: what the market priced a matchup at, and what happened once it was played. Its columns are the closest thing to a public price history the sport has.
| Column | What a bettor uses it for |
|---|---|
| Game id, season, week, date, kickoff time | Locates the exact matchup |
| Home team, away team, final score | The matchup and the final margin |
| Spread and total, both moneylines | The market price captured for that game |
| Division-game flag, roof, surface, temperature, wind | Context: rivalry game, indoor or outdoor, weather |
| Referee | Officiating crew, if you track penalty tendencies by crew |
Neither file carries a bye-week column, and neither carries this week's live price. The schedules file already carries a spread and total for games that have not kicked off yet, not only settled ones. What it will not do is update in real time the way a live odds board does. For a current number, you still want a live board like /odds, not this file.
How we actually use the two files
Our Week 1 board carries 16 games this week, and every one of them ties to a matchup the same way games.csv does. When our house model looks for a real baseline before trusting a new tracking feature, it checks that feature against the closing spread and total for past seasons in games.csv, not against a hunch. That comparison is what earns a feature a place on our current /picks/nfl board.
players.csv does quieter but constant work. Big Data Bowl tracking data identifies a player by GSIS id, not by a readable name. Before any tracking-based feature reaches our board, we check that id against players.csv to confirm the position and current team are still correct. A printed name can go stale between releases; the id and the lookup do not.
What the Big Data Bowl still can't tell you
Tracking releases change shape year to year. One edition's coverage column or route label can be missing or defined differently in the next, so code built on last year's columns can quietly break on this year's file. Check the column list for the edition in front of you before trusting a join, and read our full workflow for turning that data into a feature at /blog/presnap-formation-feature-tutorial.
Tracking data also explains how a play developed after the fact. It does not prove a market missed anything, and a feature only earns a place on our board if it beats a real baseline on games the model never saw, not just on the games it trained on. Our own build tool for testing that at /build works the same way.
The Receipts Drawer
Two files, two jobs. players.csv answers who. games.csv answers what happened and at what price.
The id inside players.csv is the quiet workhorse; it's how a tracking-data play, a weekly stat line and a name on our board all agree on the same person. Miss that join and every number downstream is wrong even when it looks clean. I've shipped one of those.
It looked clean for a week.
Watch the release page, not just the file. nflverse-data updates both releases through the season as rosters and results change, so the columns above stay put while the players and lines inside them move.




