Three Datasets. One Source of Truth.
Each tier builds on the last — start free and upgrade as your needs grow.
Download the 2025 NFL season data. Test the format with your tools, no commitment.
- 2025 season (current year)
- Core 35 columns
- Point spreads & over/unders
- Weather & stadium fields
- Historical seasons 1966–2024
- Playoffs & Super Bowls
- Weekly updates
- Enhanced analytics dataset
The complete dataset. Trusted by 30,000+ analysts. Everything from Super Bowl I to last week.
- All seasons: 1966–2025
- 14,371+ NFL games
- All playoffs & Super Bowls
- Point spreads, O/U lines
- Weather, stadium, team data
- Historical team ID mapping
- Weekly updates during season
- 119-col enhanced analytics
Processed securely via Gumroad · Instant delivery
Pro + the 119-column enhanced dataset with pre-built features for ML, research, and serious modeling.
- Everything in Pro
- 119-column enhanced CSV
- ELO ratings pre & post game
- Pythagorean win expectations
- ATS records & rolling windows
- Rest advantage & bye flags
- Weather impact scores
- Priority email support
Limited spots · Custom onboarding included
Not satisfied? Email support@spreadspoke.com within 7 days of purchase for a full refund. No questions asked.
Column Reference
Every field in the Pro dataset, documented. Snake_case naming, consistent types.
▸ SCHEDULE & GAME INFO
| Column | Type | Description |
|---|---|---|
| schedule_date | String | Game date (MM-DD-YYYY) |
| schedule_season | Integer | NFL season year (e.g., 2024) |
| schedule_week | String | Week number or "Wildcard", "Division", "Conference", "Superbowl" |
| schedule_playoff | Boolean | TRUE if postseason playoff game |
| stadium | String | Stadium name |
| stadium_neutral | Boolean | TRUE if played at neutral venue |
▸ TEAMS & SCORES
| Column | Type | Description |
|---|---|---|
| team_home | String | Full home team name |
| home_team_id | String | 2-or-3-letter team ID (e.g., "KC", "SF"). Team ID represents the franchise and accounts for team name or city changes. |
| score_home | Integer | Home team final score |
| team_away | String | Full away team name |
| away_team_id | String | 2-or-3-letter team ID (e.g., "KC", "SF"). Team ID represents the franchise and accounts for team name or city changes. |
| score_away | Integer | Away team final score |
| team_winner_id | String | Winning team's 2-or-3-letter team ID (e.g., "KC", "SF"). |
| home_win | Boolean | TRUE if home team won |
| away_win | Boolean | TRUE if away team won |
| tie | Boolean | TRUE if game ended in tie |
| div_game | Boolean | TRUE if divisional matchup |
▸ BETTING LINES
| Column | Type | Description |
|---|---|---|
| team_favorite_id | String | Team ID of the betting favorite; "PICK" for pick'em games with no favorite |
| team_underdog_id | String | Team ID of the betting favorite; "PICK" for pick'em games with no favorite |
| spread_favorite | Float | Point spread for the favorite (negative = favored by that many). -7 would mean the favorite is a 7 point favorite. |
| favorite_spread_outcome | String | "Cover", "No Cover", or "Push" from favorite's perspective |
| spread_outcome | String | "Favorite" (i.e., favorite covers spread), "Underdog" (i.e., favorite does not cover spread), or "Push". |
| home_spread_outcome | String | "Cover", "No Cover", or "Push" from home team's perspective |
| away_spread_outcome | String | "Cover", "No Cover", or "Push" from away team's perspective |
| spread_home | Integer | Home team score minus away team score |
| spread_away | Integer | Away team score minus home team score |
| over_under_line | Float | Posted total points line (over/under) |
| score_total | Integer | Actual combined game score |
| ou_outcome | String | "Over", "Under", or "Push" |
▸ WEATHER
| Column | Type | Description |
|---|---|---|
| weather_temperature | Float | Game temperature in °F (72 for dome games) |
| weather_wind_mph | Float | Wind speed in mph (0 for dome games) |
| weather_humidity | Float | Humidity percentage (Note, several blanks due to missing humidity data) |
| weather_detail | String | Condition description: "indoor" (i.e., if dome game), "rain", "snow", "fog","snow | fog" (i.e., if snow and fog), etc. |
| temp_bucket | String | Classification by temperature band: "Hot","Warm","Comfortable","Mild","Cool","Chilly","Freezing" and unknown if no temperature data. |
| high_wind | Boolean | TRUE if wind speed is 15 mph or higher. |
| rain_flag | Boolean | TRUE if a rainy game. |
| snow_flag | Boolean | TRUE if a snowy game. |
| weather_impact | Integer | 0 if no impact. 1 or 2 which represents total number of extreme wind or extreme weather impacts. |
▸ ENHANCED COLUMNS (Analyst Tier — 119 total)
| Column | Type | Description |
|---|---|---|
| home_rest_days | Integer | Number of days since home team last played. Blank for week 1 games. |
| away_rest_days | Integer | Number of days since away team last played. Blank for week 1 games. |
| home_bye_flag | Boolean | TRUE if home team coming off a bye week (i.e., didn't play last week) |
| away_bye_flag | Integer | TRUE if away team coming off a bye week (i.e., didn't play last week |
| home_rest_adv | Float | Rest advantage (home_rest_days − away_rest_days) |
| elo_home_pre | Integer | Home team ELO rating entering the game. ELO is a numerical rating that rises with wins and drops with losses, where a higher rating indicates a higher likelihood of winning against lower-rated opponents. |
| elo_away_pre | Integer | Away team ELO rating entering the game |
| elo_home_post | Integer | Home team ELO rating after the game result |
| elo_away_post | Integer | Away team ELO rating after the game result |
| elo_home_pred_spread | Float | Predicted spread for the home team using the difference between home and away teams' ELO ratings |
| elo_away_pred_spread | Float | Predicted spread for the away team using the difference between home and away teams' ELO ratings |
| pyth_home_pre | Float | Home team Pythagorean win expectation. Estimates a team's expected winning percentage based on points scored vs. allowed in prior games. |
| pyth_away_pre | Float | Away team Pythagorean win expectation |
| pyth_fav_pre | Float | Favorite team Pythagorean win expectation. |
| pyth_fav_post | Float | Favorite team Pythagorean win expectation after game result. |
| pyth_home_post | Float | Home team Pythagorean win expectation after game result |
| pyth_away_post | Float | Away team Pythagorean win expectation after game result |
| win_pct | Float | Home team all-time win percentage |
| cover_pct | Float | Home team all-time against-the-spread win percentage |
| over_pct | Float | Home team all-time over win percentage |
| win_pct_roll | Float | Home team rolling 4-game win percentage |
| cover_pct_roll | Float | Home team rolling 4-game against-the-spread win percentage |
| over_pct_roll | Float | Home team rolling 4-game over win percentage |
| pts_for_roll | Float | Home team average points scored rolling 4-games |
| pts_against_roll | Float | Home team average points allowed rolling 4-games |
| mov_roll | Float | Home team average margin of victory rolling 4-games |
| opp_win_pct | Float | Opponent team all-time win percentage |
| opp_cover_pct | Float | Opponent team all-time against-the-spread win percentage |
| opp_over_pct | Float | Opponent team all-time over win percentage |
| opp_win_pct_roll | Float | Opponent team rolling 4-game win percentage |
| opp_cover_pct_roll | Float | Opponent team rolling 4-game against-the-spread win percentage |
| opp_over_pct_roll | Float | Opponent team rolling 4-game over win percentage |
| opp_pts_for_roll | Float | Opponent team average points scored rolling 4-games |
| opp_against_roll | Float | Opponent team average points allowed rolling 4-games |
| opp_mov_roll | Float | Opponent team average margin of victory rolling 4-games |
| home_ats_win_cum | Integer | Home team cumulative against the spread wins |
| home_ats_loss_cum | Integer | Home team cumulative against the spread losses |
| home_ats_push_cum | Integer | Home team cumulative against the spread pushes |
| home_ats_win_roll | Integer | Home team 4-game rolling against the spread wins |
| home_ats_loss_roll | Integer | Home team 4-game rolling against the spread losses |
| home_ats_push_roll | Integer | Home team 4-game rolling against the spread pushes |
| opp_ats_win_cum | Integer | Opponent team cumulative against the spread wins |
| opp_ats_loss_cum | Integer | Opponent team cumulative against the spread losses |
| opp_ats_push_cum | Integer | Opponent team cumulative against the spread pushes |
| opp_ats_win_roll | Integer | Opponent team 4-game rolling against the spread wins |
| opp_ats_loss_roll | Integer | Opponent team 4-game rolling against the spread losses |
| opp_ats_push_roll | Integer | Opponent team 4-game rolling against the spread pushes |
| + more columns — contact us for the full schema | ||
Historical Franchise IDs
Teams that have relocated keep consistent IDs for historical comparisons. Full mapping included in nfl_teams.csv.
| Current Name | Historical Name | ID |
|---|---|---|
| Arizona Cardinals | Phoenix Cardinals / St. Louis Cardinals | ARI |
| Atlanta Falcons | ATL | |
| Baltimore Ravens | BAL | |
| Buffalo Bills | BUF | |
| Carolina Panthers | CAR | |
| Chicago Bears | CHI | |
| Cincinnati Bengals | CIN | |
| Cleveland Browns | CLE | |
| Dallas Cowboys | DAL | |
| Denver Broncos | DEN | |
| Detroit Lions | DET | |
| Green Bay Packers | GB | |
| Houston Texans | HOU | |
| Indianapolis Colts | Baltimore Colts | IND |
| Jacksonville Jaguars | JAX | |
| Kansas City Chiefs | KC | |
| Los Angeles Chargers | San Diego Chargers | LAC |
| Los Angeles Rams | St. Louis Rams | LAR |
| Las Vegas Raiders | Oakland Raiders / Los Angeles Raiders | LVR |
| Miami Dolphins | MIA | |
| Minnesota Vikings | MIN | |
| New England Patriots | Boston Patriots | NE |
| New Orleans Saints | NO | |
| New York Giants | NYG | |
| New York Jets | NYJ | |
| Philadelphia Eagles | PHI | |
| Pittsburgh Steelers | PIT | |
| Seattle Seahawks | SEA | |
| San Francisco 49ers | SF | |
| Tampa Bay Buccaneers | TB | |
| Tennessee Titans | Houston Oilers / Tennesee Oilers | TEN |
| Washington Commanders | Washington Redskins / Washington Football Team | WAS |
On Kaggle
The core dataset is available free on Kaggle with 30,000+ downloads. Create a Kaggle account to download and explore in notebooks — no payment required.
View on Kaggle →| Feature | Kaggle | Pro |
|---|---|---|
| Full historical data | ✓ | ✓ |
| Weekly in-season updates | Delayed | ✓ Weekly |
| Direct CSV download | Login req'd | ✓ Instant |
| Enhanced 119-col dataset | ✗ | Analyst tier |
| Email support | ✗ | ✓ |
Start With the Data That Started It All
Free sample, no email required. Or go Pro for $24.99 and get 59 seasons instantly.
Research use only · Not for gambling · 7-day refund policy