Overview
Full order book event stream with individual price-level updates and periodic snapshots. Each row is either a price-level update or a full snapshot, distinguished by themessage_type column. Available as both CSV (gzip-compressed) and Parquet (zstd-compressed).
Columns
Column | CSV type | Parquet type | Description |
|---|---|---|---|
exchange | string | string | Always kalshi |
ticker | string | string | Market ticker |
local_timestamp | integer | int64 | Capture timestamp (nanoseconds since epoch) |
exchange_timestamp | string | timestamp_micros (nullable) | Exchange timestamp |
message_type | string | string | price_level_update or snapshot |
price_level_update_price | decimal | float64 (nullable) | Price level (update rows only) |
price_level_update_quantity | decimal | float64 (nullable) | New quantity at this level (update rows only) |
price_level_update_side | string | string (nullable) | bid or ask (update rows only) |
snapshot_bid_prices | string | string (nullable) | Comma-separated bid prices (snapshot rows only) |
snapshot_bid_sizes | string | string (nullable) | Comma-separated bid sizes (snapshot rows only) |
snapshot_ask_prices | string | string (nullable) | Comma-separated ask prices (snapshot rows only) |
snapshot_ask_sizes | string | string (nullable) | Comma-separated ask sizes (snapshot rows only) |
Fetching Data
Use thepath from the list response. The download endpoint returns a 302 redirect to a signed URL; follow it with curl -L or equivalent.
Notes
- Each row is either a
price_level_update(one level changed) or asnapshot(full book state). Columns for the other type will be null. - The orderbook is the YES orderbook. Bids are the raw YES bids from Kalshi. Asks are calculated by taking
1 - priceof the NO bids. If you need the raw, unconverted data, contact calder@predictiondata.dev. - Prices and quantities are rounded to 4 decimal places.
local_timestampis nanoseconds since Unix epoch (when our servers captured the message).exchange_timestampis when the event occurred on Kalshi. It is null for orderbook snapshots. In CSV it is an RFC 3339 string; in Parquet it is stored asTimestampMicros.- Each export covers one UTC day (00:00:00 to 23:59:59).