The recorded market. In your hands.

Prediction market data downloads

Download recorded Polymarket and Kalshi order books and level changes as daily Parquet files. Inspect coverage, choose UTC dates, and pay for the files you need.

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

Full books. Daily files. Your research.

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

Inventory snapshot ·
Sealed daily Parquet files

Polymarket · Book snapshots

.parquet

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

289 available UTC days2026-01-01 — 2026-10-16

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-160.36 GiB384,840,889 bytes13,889,316v1
2026-10-150.35 GiB376,483,814 bytes12,514,114v1
2026-10-140.33 GiB358,012,452 bytes12,752,548v1
2026-10-130.33 GiB356,415,663 bytes11,659,958v1
2026-10-120.33 GiB356,054,740 bytes12,502,491v1
2026-10-110.29 GiB310,253,056 bytes12,906,376v1
2026-10-100.29 GiB314,480,804 bytes12,158,109v1

Know what you’re buying

Choose the observation
your model needs.

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

Observed market state

Polymarket · Book snapshots

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

Rate
$40 / GiB
Available daily files
289
Sealed date bounds
2026-01-01 — 2026-10-16
Listed archive size
109.94 GiB
Choose book files
Observed market state

Polymarket US · Book snapshots

Polymarket US full depth snapshots per market with last trade and OHLC fields, sorted market first; 5,000-row groups.

Rate
$40 / GiB
Available daily files
18
Sealed date bounds
2026-09-29 — 2026-10-16
Listed archive size
1.52 GiB
Choose book files
Observed updates

Polymarket · Level changes

Every price-level change (deltas) per market; 25,000-row groups.

Rate
$40 / GiB
Available daily files
120
Sealed date bounds
2026-06-06 — 2026-10-16
Listed archive size
218.26 GiB
Choose level-change files
Observed market state

Kalshi · Book snapshots

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

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

Kalshi · Level changes

Every price-level change (deltas) per market; 25,000-row groups.

Rate
$80 / GiB
Available daily files
71
Sealed date bounds
2026-08-07 — 2026-10-16
Listed archive size
181.03 GiB
Choose level-change files

A snapshot is a state. A level change is an update.

Use book snapshots to study displayed liquidity, spreads, and depth at observed times. Use level-change files when your workflow needs observed updates and can handle seeding and gaps. Neither product promises a complete record of every exchange event or every market.

Files are organized by product and UTC day. They can contain multiple markets; use the identifiers and timestamps to filter locally. For small API slices or ongoing streaming, explore the API delivery options.

Inspect before you commit

Know the format.
Test your workflow.

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

Polymarket · 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)asset_idbid_pricesask_pricesbid_sizes
00:00:00.0250[0.4, 0.39][0.44, 0.45][100, 50]
00:00:01.0250[0.41, 0.4][0.45, 0.46][105, 50]
00:00:02.0250[0.42, 0.41][0.46, 0.47][110, 50]
00:00:03.0250[0.41, 0.4][0.45, 0.46][115, 50]
00:00:04.0250[0.4, 0.39][0.44, 0.45][120, 50]
00:00:05.0250[0.42, 0.41][0.46, 0.47][125, 50]
00:00:06.0250[0.43, 0.42][0.47, 0.48][130, 50]
00:00:07.0250[0.42, 0.41][0.46, 0.47][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 12 fields
asset_idString
Market or outcome identifier. Demo values here; retain source identifiers in purchased files.
condition_idString
Market or outcome identifier. Demo values here; retain source identifiers in purchased files.
slugString
Market or outcome identifier. Demo values here; retain source identifiers in purchased files.
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.
exch_ts_msUInt64
Unix milliseconds; display in UTC.
recv_ts_msUInt64
Unix milliseconds; display in UTC.
hashString
Venue-specific metadata; inspect the purchased file schema before processing.
bid_pricesArray(Float64)
Price as a fraction of a $1 contract. Ladders retain venue-native sides.
bid_sizesArray(Float64)
Venue-native quantity. Price and size arrays align by index.
ask_pricesArray(Float64)
Price as a fraction of a $1 contract. Ladders retain venue-native sides.
ask_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.

A file, then a query

Bring your own research stack.

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('polymarket-book.parquet');

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

From archive to analysis

Choose. Pay. Download.

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.

For code-driven research

Request by API.
Let a person pay.

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": "polymarket-book",
  "from": "2026-10-16",
  "to": "2026-10-16"
}] }

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

Before you download

The practical details.

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. All orders are final and payments are non-refundable. Review the data licence and sample before buying. Contact DepthFeed about redistribution needs before placing an order.

Start with the files that fit

Less collecting.
More research.

Inspect a sample. Choose your dates. Know the price.

Choose your dataset