STAT-API

NFL game_lines API

game_linesnfl.game_lines
NFL game betting lines — point spreads, moneylines, and over/under totals, one row per capture. `source` says where a row came from — a live capture before kickoff (2026 on), or one closing line per Final game with `captured_at` equal to kickoff (2020-2025, and a post-game fallback). Regular-season games only.
GET/api/v1/nfl/game_lines
Requires one of: game_id or season_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
operator_idquerybigintoptional
Filter by sportsbook / operator.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_lines?game_id=1'
Responses
200game_lines rows matching the declared filter set, wrapped in { game_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(19 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 43450
operator_id
bigintOperator id of the line, 6 Consensus (the market consensus). Every id is listed at /api/v1/reference/operators.
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2026
captured_at
timestamptz—When this snapshot was captured
e.g. 2024-09-15T17:00:00.000Z
implied_away_score
decimalnullable—Calculated from spread + total
e.g. 22.0000
implied_away_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.4464
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 24.5000
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5968
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 124
moneyline_home
integernullable—American odds for home team win
e.g. -148
over_odds
integernullable—American odds for over
e.g. -110
source
string—Where the row came from: a live capture before kickoff, or the closing line of a Final game (`captured_at` is the kickoff).
Values:closingpregame
spread
decimalnullable—Home team spread (e.g., -3.5 means home favored by 3.5)
e.g. -3.0000
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
total
decimalnullable—Combined score total line (e.g., 47.5)
e.g. 43.5000
under_odds
integernullable—American odds for under
e.g. -110
GET/api/v1/nfl/game_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/game_lines/{pk_value}'
Responses
200Single game_line row.application/jsonshow example ▸
404Row not found.
Response Schema(19 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 43450
operator_id
bigintOperator id of the line, 6 Consensus (the market consensus). Every id is listed at /api/v1/reference/operators.
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2026
captured_at
timestamptz—When this snapshot was captured
e.g. 2024-09-15T17:00:00.000Z
implied_away_score
decimalnullable—Calculated from spread + total
e.g. 22.0000
implied_away_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.4464
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 24.5000
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5968
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 124
moneyline_home
integernullable—American odds for home team win
e.g. -148
over_odds
integernullable—American odds for over
e.g. -110
source
string—Where the row came from: a live capture before kickoff, or the closing line of a Final game (`captured_at` is the kickoff).
Values:closingpregame
spread
decimalnullable—Home team spread (e.g., -3.5 means home favored by 3.5)
e.g. -3.0000
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
total
decimalnullable—Combined score total line (e.g., 47.5)
e.g. 43.5000
under_odds
integernullable—American odds for under
e.g. -110