Kalshi bulk data downloads

Buy recorded Kalshi yes/no order-book snapshots and level-change datasets in daily Parquet files. Keep market tickers, timestamps, and venue-native ladders in your research.

One-time file purchase · no API subscription · card or credits

ParquetColumnar files for your own stack
UTC daysChoose the dates you actually need
Exact quoteReview the price before paying
30 daysTo issue fresh download links

The archive catalogue

Kalshi book snapshots and level changes

Choose a dataset and date range. See the files and estimated price before creating an account.

Inventory snapshot ·
Sealed daily Parquet files

Kalshi · Book snapshots

.parquet

Full depth snapshots per market, sorted market first; 5,000-row groups.

195 available UTC days2026-01-08 — 2026-10-24

Latest 90 available daily files · dark blue = selected · light blue = available. One square per listed file.

Date range UTC
Available files in your selected UTC range
UTC dayFile sizeRowsVersion
2026-10-240.1 GiB102,939,883 bytes5,536,338v2
2026-10-230.15 GiB160,640,194 bytes8,515,182v1
2026-10-220.14 GiB148,497,844 bytes8,121,779v1
2026-10-210.15 GiB160,949,971 bytes8,083,641v1
2026-10-200.15 GiB161,655,747 bytes8,245,880v1
2026-10-190.15 GiB157,512,395 bytes7,774,189v1
2026-10-180.11 GiB113,032,009 bytes5,298,847v1

Dataset contents

File formats and fields

Recorded depth is different from a closing price. Book snapshots and level changes answer different research questions.

Observed market state

Kalshi · Book snapshots

Full depth snapshots per market, sorted market first; 5,000-row groups.

Rate
$80 / GiB
Available daily files
195
Sealed date bounds
2026-01-08 — 2026-10-24
Listed archive size
18.67 GiB
Choose book files
Observed updates

Kalshi · Level changes

Recorded price-level updates per market; 25,000-row groups.

Rate
$80 / GiB
Available daily files
79
Sealed date bounds
2026-08-07 — 2026-10-24
Listed archive size
208.54 GiB
Choose level-change files

Yes/no ladders, with Kalshi identity intact.

Kalshi book files retain ticker, series, receive timestamps, and the yes_prices / yes_sizes and no_prices / no_sizes arrays. These are venue-native yes/no ladders; do not silently treat them as a normalized bid/ask table.

Level-change files include seq, kind, side, price, delta, and size. Replay needs an appropriate seed and gap handling. Updates are not executed trades, and a file cannot recover observations made before recording began.

Schema and sample downloads

Synthetic samples

Explore clearly labelled synthetic rows, inspect the fields, and try a Python notebook. No account needed. Your quote lists the real daily files available for purchase.

Synthetic compatibility sample

Kalshi · Book snapshots

8 demo rows

Try the file format and your own code before buying. These values are fabricated, with demo identifiers and a 1 January 2000 UTC clock. They are not captured market history or evidence of archive coverage.

Eight synthetic rows showing selected fields. Download JSON to inspect every field.
Time (UTC)tickeryes_pricesno_pricesyes_sizes
00:00:00.025DEMO-MARKET-001[0.4, 0.39][0.56, 0.55][100, 50]
00:00:01.025DEMO-MARKET-001[0.41, 0.4][0.55, 0.54][105, 50]
00:00:02.025DEMO-MARKET-001[0.42, 0.41][0.54, 0.53][110, 50]
00:00:03.025DEMO-MARKET-001[0.41, 0.4][0.55, 0.54][115, 50]
00:00:04.025DEMO-MARKET-001[0.4, 0.39][0.56, 0.55][120, 50]
00:00:05.025DEMO-MARKET-001[0.42, 0.41][0.54, 0.53][125, 50]
00:00:06.025DEMO-MARKET-001[0.43, 0.42][0.53, 0.52][130, 50]
00:00:07.025DEMO-MARKET-001[0.42, 0.41][0.54, 0.53][135, 50]

Selected columns shown. Prices are fractions of $1; sizes use venue-native quantities. Kalshi YES and NO ladders are separate sides. Level-change files are updates, not a trade tape.

Understand all 9 fields
tickerString
Market or outcome identifier. Demo values here; retain source identifiers in purchased files.
seriesLowCardinality(String)
Venue-specific metadata; inspect the purchased file schema before processing.
base_assetLowCardinality(String)
Venue-specific metadata; inspect the purchased file schema before processing.
market_typeLowCardinality(String)
Venue-specific metadata; inspect the purchased file schema before processing.
recv_ts_msUInt64
Unix milliseconds; display in UTC.
yes_pricesArray(Float64)
Price as a fraction of a $1 contract. Ladders retain venue-native sides.
yes_sizesArray(Float64)
Venue-native quantity. Price and size arrays align by index.
no_pricesArray(Float64)
Price as a fraction of a $1 contract. Ladders retain venue-native sides.
no_sizesArray(Float64)
Venue-native quantity. Price and size arrays align by index.
Free sample

One fixed, synthetic example. Use it to test loading, column types and analysis code.

Your purchased files

Recorded observations for the products and UTC days in your quote. Review listed file sizes, row counts and coverage before paying. Archive versions can differ.

DuckDB example

Read a Parquet sample

Download a synthetic sample and inspect its fields locally. Use the same tools on purchased daily files, checking their schema first.

Read the download & format guide ↗
-- DuckDB: run beside the downloaded sample
DESCRIBE SELECT *
FROM read_parquet('kalshi-book.parquet');

SELECT *
FROM read_parquet('kalshi-book.parquet')
LIMIT 2;

Purchase steps

How downloads work

A one-time purchase for a defined set of files. No sales call required.

  1. 1

    Review your files

    Pick the dataset and UTC dates. Create a free account and accept the data licence to get the exact quote.

  2. 2

    Pay when you’re ready

    Use hosted card checkout or existing credits. Creating a quote or payment link does not charge your card.

  3. 3

    Keep the data locally

    Get your files from the paid-order dashboard and emailed links. Refresh signed URLs for 30 days.

Bulk purchase API

Create a quote and payment link

Create the quote in code, send the hosted payment URL to the buyer, then retrieve the paid order. Payment is confirmed by Stripe before download access is granted.

Read the bulk purchase API ↗
# After accepting the current data licence:
POST /v3/data/quotes
{ "items": [{
  "product": "kalshi-book",
  "from": "2026-10-24",
  "to": "2026-10-24"
}] }

POST /v3/data/orders/checkout
{ "quote_id": "<quote.id>" }

→ payment_url  # human completes checkout

GET /v3/data/orders
POST /v3/data/orders/<paid-order-id>/links

FAQ

Download questions

Do I need an API subscription to buy files?

No. Create a free DepthFeed account, accept the data licence, choose available files, and review the exact quote. Bulk file purchases are priced separately from API subscriptions. Pay by card or with existing credits.

What is inside a daily file?

A sealed Parquet file for one product and UTC day. Book products contain recorded full-depth observations. Level-change products contain observed price-level updates, not a trade tape. Availability and capture history vary by product and day.

Can I inspect a sample without signing up?

Yes. Each dataset has a free fixed synthetic Parquet sample, matching JSON and an example Python notebook. The eight fabricated rows let you inspect the schema and test your loader without accessing the historical archive. They do not demonstrate real market performance or coverage. Archive versions may differ.

How are files priced?

The estimate uses the sealed file bytes and the listed USD per GiB rate, with a $5 minimum per order. One GiB is 1,073,741,824 bytes. The signed-in quote confirms current availability and the exact subtotal; applicable tax is shown at checkout.

How do I receive my downloads?

After confirmed payment, your order appears in the bulk-data dashboard and download links are emailed to your account address. Signed links last one hour. You can issue fresh links from the dashboard or API for 30 days after the order. Save the files locally during that window.

Can my code request files and let a person pay?

Yes. Create a quote through the API, then request a hosted payment URL. Opening a quote or payment link does not charge a card. A person completes checkout, and you retrieve the paid order and signed download links through the API.

Are all calendar days and markets covered?

No. The catalogue lists the sealed days currently available for purchase. A first/last date does not guarantee an uninterrupted series, every market, or uniform intraday capture. Inspect the file list and samples before ordering; do not infer missing observations.

Can I redistribute files or request a refund?

The standard licence permits internal research and use; it does not permit redistributing the raw dataset. Review the data licence and terms for payment, delivery and refund conditions before buying. Contact DepthFeed about redistribution needs before placing an order.

Bulk data catalogue

Choose daily Parquet files

Review available UTC days, synthetic samples and estimated prices before creating a quote.

Choose your dataset