MLB Line Movements — Pinnacle (2023-2025)
65,350 timestamped Pinnacle odds snapshots across 3 markets. Track every line move from open to close.
What's Inside
Every column, every row — here's exactly what you get.
3 Markets
Full-game totals, First 5 Innings totals, and spreads. All Pinnacle. Each snapshot has market, side, line, and decimal price.
UTC Timestamps
Every snapshot has a precise UTC timestamp plus pre-calculated hours_before_game. Filter by time window instantly.
Opening Lines Flagged
is_opening=1 marks the first snapshot. Calculate CLV by comparing your entry to the closing line.
Data Preview
5 sample rows| # | game_pk | game_date | home | away | market | side | line | price | snapshot_utc | is_opening | hrs_before |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 744932 | 2024-06-01 | TOR | PIT | TOTALS_FT | OVER | 7.5 | 1.890 | 2024-06-01 12:09 | 1 | 7.0 |
| 2 | 744932 | 2024-06-01 | TOR | PIT | TOTALS_FT | OVER | 7.5 | 1.870 | 2024-06-01 17:10 | 0 | 2.0 |
| 3 | 744932 | 2024-06-01 | TOR | PIT | TOTALS_FT | UNDER | 7.5 | 1.990 | 2024-06-01 12:09 | 1 | 7.0 |
| 4 | 744932 | 2024-06-01 | TOR | PIT | TOTALS_F5 | OVER | 4.0 | 1.860 | 2024-06-01 19:00 | 0 | 0.1 |
| 5 | 744932 | 2024-06-01 | TOR | PIT | TOTALS_F5 | UNDER | 4.0 | 2.010 | 2024-06-01 19:00 | 0 | 0.1 |
Games Included
| Season | Snapshots | Avg/Game |
|---|---|---|
| 2023 | ~17,800 | ~8/game |
| 2024 | ~19,200 | ~8/game |
| 2025 | ~28,400 | ~12/game |
| Total | 65,350 | ~9/game |
Schema (Key Columns)
| Column | Description |
|---|---|
| game_pk | MLB StatsAPI game ID |
| game_date | Date (YYYY-MM-DD) |
| home_team / away_team | Standard MLB abbreviations |
| market | TOTALS_FT / TOTALS_F5 / SPREADS_FT |
| side | OVER / UNDER / HOME / AWAY |
| line | Total or spread line value |
| price | Decimal odds at snapshot |
| snapshot_utc | Precise UTC timestamp |
| is_opening | 1 = opening line, 0 = move |
| hours_before_game | Hours until first pitch |
Save 40+ hours of data engineering. Building this dataset from scratch means writing API integrations, handling rate limits, cleaning edge cases, filling gaps, and joining multiple sources. We've done all of that. You get the clean result — ready to load into pandas in one line.
Built For
CLV Analysis
Compare your entry price to the closing line. Measure Closing Line Value — the most reliable indicator of long-term edge.
Steam Move Detection
Identify sharp action by analyzing the timing and magnitude of line moves in the hours before first pitch.
Market Microstructure
Study how Pinnacle prices evolve. Research price discovery patterns in betting markets with real timestamped data.
Included Files
Each dataset in CSV and Parquet — per-season splits + combined bundle.
Frequently Asked Questions
What file formats are included?
How do I download the files?
What does "Zero NULLs" mean?
Where do the odds come from?
Can I use this data commercially?
How many snapshots per game on average?
Can I reconstruct the closing line?
hours_before_game ascending and take the last snapshot before game time. The is_opening flag lets you compare opening vs closing lines directly.Ready to build?
One file. One purchase. Infinite backtests.