---
title: "Get Kalshi Orderbooks V2"
method: GET
path: "/v2/kalshi/orderbooks-subcent"
tags: ["kalshi"]
---

# Get Kalshi Orderbooks V2

`GET /v2/kalshi/orderbooks-subcent`

Fetch historical **sub-cent** orderbook snapshots for a Kalshi market.

Identical in shape to `/orderbooks`, but prices are decimal-cent strings
(e.g. "36.50") instead of integers, and each snapshot carries a `source`
field. All timestamps are in milliseconds.

The default (`sources=spine`) serves the standard capture streams; experimental
streams are excluded unless `sources=all` is passed.

## 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 — Maximum number of snapshots to return
- `pagination_key` string, nullable — Pagination key to get the next chunk of data
- `sources` string — 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 `200`

Successful Response

- KalshiOrderbooksV2Response — Sub-cent Kalshi orderbooks endpoint response.
  - `snapshots` KalshiOrderbookSnapshotV2[], required
    - `ticker` string, required — Market ticker
    - `timestamp` integer, required — Snapshot timestamp in milliseconds
    - `yes_bids` KalshiOrderbookLevelV2[], required — Yes bid levels, ordered by price descending
      - `price` string, required — Price in decimal cents as a string (e.g. "36.50")
      - `size` string, required — Quantity at this price level as an exact string; may be fractional (e.g. "196.52")
    - `yes_asks` KalshiOrderbookLevelV2[], required — Yes ask levels, ordered by price ascending
      - `price` string, required — Price in decimal cents as a string (e.g. "36.50")
      - `size` string, required — Quantity at this price level as an exact string; may be fractional (e.g. "196.52")
    - `best_bid` string, required — Best bid price in decimal cents, fixed 2 decimals as a string (e.g. "36.50")
    - `best_ask` string, required — Best ask price in decimal cents, fixed 2 decimals as a string (e.g. "37.00")
    - `bid_depth` integer, required — Total bid depth (number of contracts)
    - `ask_depth` integer, required — Total ask depth (number of contracts)
    - `sequence` integer, required — Sequence number for ordering within same timestamp
    - `source` string, required — Origin of this snapshot within the capture pipeline: "websocket"/"api" (the primary spine) or "live_early" (trade-triggered early capture of brand-new markets).
  - `pagination` CursorPagination, required — Cursor-based pagination for endpoints that don't support offset.
    - `limit` integer, required — Requested limit
    - `count` integer, required — Number of items in current response
    - `pagination_key` string, nullable — Base64-encoded cursor for next page
    - `has_more` boolean, required — Whether there are more items available

## Other responses

- `400` — Bad Request
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/predexon/apis/predexon-api.md) · [All operations](https://skmtc.net/predexon/apis/predexon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/predexon/predexon-api/revisions/80a306fbdb39/schema)
