A free, downloadable dataset: the opening line and the current line, per sportsbook, for every NFL Week 1 game of the 2026 season, across moneyline, spread and total. One row per game, book, market and side. Built from our own archive, published as CSV and JSON, free to use with attribution.
As of 2026-09-01 14:37 UTC · 1701 rows · 16 games · 32 book feeds
An opening line in this dataset is the earliest price we have
stored for that combination of game, sportsbook, market and
side. It is not a claim about the first number the book ever hung on
the board. Our Week 1 series begins 2026-05-12 16:25 UTC, so the
deepest rows here reach back to look-ahead boards posted in May, but
most books started filing later than that and a large share of the
file was first seen on the as-of day itself. Read
opening_seen_utc as "first price we hold", not "market
open", and check it before you describe any row as an opener: the
column is on every row precisely so you do not have to take our word
for the depth.
The current line is the most recent price in the same stored series
for that same game, book, market and side, as of
2026-09-01 14:37 UTC, and
current_seen_utc on every row says when that price was
actually filed. A handful of rows carry a current price older than the
as-of stamp, because that book stopped quoting; the column tells you
which. Opening and current come from one store with one set of book
keys, and period markets and alternate-line ladders are stripped
before a series is formed, so a row compares a full-game main line to
a full-game main line from the same book. The live API is fresher than
this frozen extract; this file is a snapshot with a timestamp on it
precisely so that anyone who cites it can still check the number
later.
One thing worth saying plainly, because it is the reason this is a file and not a live page. The archive it came out of is pruned: it keeps a long thin history and discards most of the dense recent detail as it ages. Re-running the same extract today would read a small fraction of the rows this one read, and every number here would quietly change. So this file is not a view onto a database, it is the record. The as-of stamp is the contract, the file will not be edited in place, and if it is ever rebuilt it goes out under a new date rather than overwriting this one.
1113 of the 1701 rows hold exactly one stored snapshot. For
those, opening and current are the same price and
notes says
single_snapshot_opening_equals_current. They are included
because a book quoting a game is a fact worth having, but they carry
no movement, and the moves table below ignores them. The
588 rows with two or more snapshots are the ones with real
opener-to-now history. Nothing anywhere in this file is interpolated,
smoothed or back-filled: a gap is published as a gap.
Prices are American. opening_implied_prob_raw and
current_implied_prob_raw are converted straight from the
American price with the vig still in them; they are not devigged and
should not be read as fair probabilities. Spread rows carry the point
from that side's perspective, so a home row of -3.5 means
the home team is laying 3.5.
Consensus move per game and market: the median across every book with two or more stored snapshots, so one book rebalancing its own exposure cannot shape the ranking. A game and market needs at least three such books to appear at all. Spread is measured on the home side and total on the over, so a negative spread move means the home number came down (the home team got stronger) and a positive total move means the total went up.
| Game | Kickoff (UTC) | Market | Consensus move | Books measured |
|---|---|---|---|---|
| Green Bay Packers at Minnesota Vikings | 2026-09-13 20:25 UTC | Spread (home) | -3 points | 9 |
| Chicago Bears at Carolina Panthers | 2026-09-13 17:00 UTC | Total (over) | +2 points | 11 |
| Baltimore Ravens at Indianapolis Colts | 2026-09-13 17:00 UTC | Total (over) | -1.5 points | 9 |
| Washington Commanders at Philadelphia Eagles | 2026-09-13 20:25 UTC | Total (over) | -1.5 points | 11 |
| New England Patriots at Seattle Seahawks | 2026-09-10 00:15 UTC | Spread (home) | +1 point | 8 |
| San Francisco 49ers at Los Angeles Rams | 2026-09-11 00:35 UTC | Spread (home) | -1 point | 10 |
| Atlanta Falcons at Pittsburgh Steelers | 2026-09-13 17:00 UTC | Total (over) | +1 point | 10 |
| Baltimore Ravens at Indianapolis Colts | 2026-09-13 17:00 UTC | Spread (home) | -1 point | 5 |
| Cleveland Browns at Jacksonville Jaguars | 2026-09-13 17:00 UTC | Total (over) | +1 point | 7 |
| New Orleans Saints at Detroit Lions | 2026-09-13 17:00 UTC | Spread (home) | +1 point | 7 |
Per-book rows in the CSV are printed exactly as the archive holds
them. That includes cases where two books disagree about which side is
laying the points, which is either a genuine look-ahead disagreement
or a side swap somewhere upstream, and this file does not pretend to
know which. It is the reason the headline uses a median across books
rather than any single book's number, and it is why the
snapshots and history_days columns are there:
check them before you quote a single row.
game_id, kickoff_utc,
sport_key, away_team,
home_team: the game.book: our bookmaker key, the same key
GET /v1/bookmakers serves. The unibet_*
keys are separate regional feeds of one brand, not separate
brands.market: moneyline, spread
or total. side: home,
away, over or under.opening_point, opening_price_american,
opening_implied_prob_raw,
opening_seen_utc.current_point, current_price_american,
current_implied_prob_raw,
current_seen_utc.point_move: current point minus opening point, blank
for moneyline. implied_prob_move_pct_points: the
change in raw implied probability, in probability points.snapshots: how many stored prices back this row, each
one from a distinct timestamp. history_days: days
between the opening and the current snapshot, rounded to a tenth,
so a row refreshed twice inside a couple of hours reads 0 while
still holding two real timestamps. The two
_seen_utc columns are the authority on depth.notes: honest flags, space separated. Exactly two
values occur.
single_snapshot_opening_equals_current means we hold
one price for this row, so it carries no movement.
price_missing_on_one_end means the archive holds the
line but not the price at one end, so the line move is real and
the implied-probability move is left blank rather than filled
in.Readings we could not place on a side, a period or a line with certainty were dropped rather than guessed at, because guessing any of those three changes the number:
label_not_resolvable_to_a_side: 72 source rowsperiod_market_under_full_game_key: 43 source rowsspread_composite_label_side_ambiguous: 81 source rowsalternate_line_ladder_main_line_not_identifiable: 798 readingsTwo of those need a word. Some books file first-half and quarter markets under the full-game market key, distinguishable only by a suffix on the label, and a 1H total of 22.5 published as a full-game opener would be nonsense; those are removed. And some books do not quote a single current line, they post the whole alternate-line ladder in one instant, a dozen rungs from one side of the number to the other, each with its own price. A ladder is a menu, not a history, and which rung is the main line is not recoverable from the row, so the whole instant is dropped. That is why a book you would expect to see on a given game and market is sometimes absent from it: we would rather be missing a book than invent its opener.
Free to use, including commercially: republish it, chart it, load it into a model, ship it in a newsletter. The one condition is attribution with a working link back. Copy either line:
Data: ParlayAPI NFL Week 1 opening lines dataset, https://parlay-api.com/nfl/week-1-opening-lines (as of 2026-09-01 14:37 UTC)
Data: <a href="https://parlay-api.com/nfl/week-1-opening-lines">ParlayAPI NFL Week 1 opening lines</a> (as of 2026-09-01 14:37 UTC)
If you build something with it we would genuinely like to see it. No permission request needed, no sign-up needed to download, and no tracking pixel in the files.
This file is a snapshot. The same numbers come off the API in one
request, refreshed continuously across 30+ sportsbooks:
GET /v1/sports/americanfootball_nfl/odds. The free tier
is 1,000 credits per month with no card required. Paid tiers are
listed at /pricing.
curl -s 'https://parlay-api.com/v1/sports/americanfootball_nfl/odds?regions=us&markets=h2h,spreads,totals' \
-H "X-API-Key: $PARLAY_API_KEY"
Get a free API key
See the live Week 1 board
NFL Week 1 odds board · Biggest line moves (free feed) · Historical odds coverage · NFL odds API · All free datasets · No-vig calculator