Skip to main content
GET
Get Kalshi Orderbooks V2
Fetch historical orderbook snapshots for a Kalshi market with full sub-cent price precision. Data starts from January 8th, 2026. Kalshi prices markets in sub-cent increments. This endpoint reflects those prices exactly: a level at 57.5 cents is reported as "57.5", spreads are as tight as they really are, and sizes include fractional contracts. The legacy orderbook endpoint rounds everything to whole cents, which widens spreads and merges neighboring price levels into one. For example, in a live market where this endpoint reported a best bid/ask of 57.50 / 57.60 (a 0.1-cent spread), the legacy endpoint reported 57 / 58 for the same moment, and folded the 57.5, 57.1, and 57.0 bid levels into a single 57 bucket.
The legacy endpoint will be deprecated soon. Use this endpoint for all integrations. The deprecation date will be announced in the changelog.
Free & Unlimited. This endpoint does not count toward your monthly usage limits on any plan.
Timestamps are in milliseconds. Prices and sizes are exact decimal strings ("36.50", "196.52"). Parse them as decimals, not floats, if exactness matters. Sizes may be fractional (Kalshi fractional contracts).

Differences from the legacy endpoint

The source field and sources parameter

Snapshots are assembled from several capture streams, reported per snapshot in source:
  • websocket: the primary capture spine (bulk of the data)
  • api: REST resyncs
  • live_early: trade-triggered early capture of brand-new markets
The default sources=spine serves the standard capture streams. sources=websocket (or any comma-separated list) narrows to specific streams. sources=all returns the raw table including experimental capture streams, and is intended for debugging rather than analytics.

Migrating from the legacy endpoint

  • Prices arrive as strings with decimal scale. legacy_price == round(float(subcent_price)) does not hold in general, because sub-cent levels have no integer-cent equivalent.
  • Pagination works identically (pagination_key cursor over timestamp, sequence).
  • Most consumers can ignore source.

Authorizations

x-api-key
string
header
required

Query Parameters

ticker
string
required

The Kalshi market ticker

start_time
integer
required

Start time in Unix timestamp (milliseconds)

end_time
integer
required

End time in Unix timestamp (milliseconds)

limit
integer
default:100

Maximum number of snapshots to return

Required range: 1 <= x <= 2000
pagination_key
string | null

Pagination key to get the next chunk of data

sources
string
default:spine

Which capture sources to include: 'spine' (default, the standard capture streams), 'all' (raw table, may include experimental duplicate streams), or a comma-separated list of exact source names.

Response

Successful Response

Sub-cent Kalshi orderbooks endpoint response.

snapshots
KalshiOrderbookSnapshotV2 · object[]
required
pagination
CursorPagination · object
required

Cursor-based pagination for endpoints that don't support offset.