---
title: "Historical odds snapshots for a match (CLV)"
method: GET
path: "/v1/odds/historical"
tags: ["odds"]
---

# Historical odds snapshots for a match (CLV)

`GET /v1/odds/historical`

## Request

- Base URL: `https://api.bigballsdata.com`
- URL: `https://api.bigballsdata.com/v1/odds/historical`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Every historical odds snapshot (opening / t24h / closing, never the live
`current` series) for one match, newest snapshot first, with sportsbook
names resolved. Powers closing-line value (CLV) and line-movement analysis.
Requires an Edge plan or higher (Free / Solo / Trio receive 403).
Each row carries an EVIDENCE-BASED `verification` field from two-source
cross-checking: a "verified" status is only ever returned when we
actually compared two providers, never inferred from the absence of a
check: `two_source_agreed` (both providers priced this book/market/side
and agreed; a positive comparison is on record), `two_source_diverged`
(both priced it and disagreed; `divergence_categories` then lists the
categories, e.g. `["PRICE_DIFF","STALE"]`), `single_source` (only one
provider carries this book/side, or the book has no cross-provider match;
NOT verified), or `unverified` (we have not compared this line; NOT
verified). The default when we lack evidence is `single_source` or
`unverified`, never a badge. `verified_at` dates the comparison the status
came from (null when nothing was compared); a verification you cannot
date is a claim you cannot check. A comparison only describes the snapshot
whose line it actually compared and only within 48h of it, so a snapshot
whose price has since moved reads `unverified` rather than inheriting an
older badge. Response: `{ data: [{ match_id, snapshot_type,
snapshot_at, market, book: { id, name, logo_url }, line, source,
fetched_at, verification, verified_at, divergence_categories? }], meta: {
total, limit, offset, snapshot_types_present, generated_at } }`.

## Query parameters

- `match_id` string, uuid, required
- `snapshot_type` 'opening' | 't24h' | 'closing'
- `sportsbook` string
- `market` string
- `limit` integer
- `offset` integer

## Response `200`

ok

- object

## Other responses

- `400`: invalid query (suggested_fix lists valid snapshot_type values)
- `403`: plan_required (Pro or higher)

---

[API](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api.md) · [All operations](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/revisions/31fb54ac414e?raw)
