NFL game_lines API
game_lines
nfl.game_linesNFL 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_linesList game_lines for NFL
Requires one of:
game_id or season_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
season_idquerybigintoptionalFilter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
operator_idquerybigintoptionalFilter by sportsbook / operator.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
from_idquerybigintoptionalReturn 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/jsonResponse Schema(19 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. 43450 | |
operator_id | bigint | Operator id of the line, 6 Consensus (the market consensus). Every id is listed at /api/v1/reference/operators. e.g. 6 | |
season_id | bigint | Denormalized 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}Get a single game_line by id
Parameters
idpathbigintrequiredPrimary 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 ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. 43450 | |
operator_id | bigint | Operator id of the line, 6 Consensus (the market consensus). Every id is listed at /api/v1/reference/operators. e.g. 6 | |
season_id | bigint | Denormalized 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 |