Polymarket & Kalshi historical data

Prediction Market Historical Data: Polymarket and Kalshi Sources

A last-price series does not show the spread or displayed size a strategy faced. DepthFeed stores the full bid/ask ladder at each stored observation (up to 100 levels per side on Kalshi) for the markets and date ranges listed in its coverage documentation.

Browse bulk data files

Polymarket & Kalshi historical order-book data is a sequence of recorded full-book observations over time. DepthFeed uses event-driven websocket capture on Polymarket and Limitless, and continuous full-depth polling on Kalshi and serves the stored observations through REST; it does not claim observations for markets, timestamps, or gaps outside the documented archive.

Read snapshot docs

Choose a venue

Each venue has its own page with coverage by category, a comparison of every source, and a free sample of real recorded books.

DepthFeed archive, October 2026. Counts grow daily.
VenueWhat DepthFeed holdsBooks fromFree sample
Polymarket historical data2.2 billion recorded books across 2.1 million markets; 3.45 million markets with results2025-12-303 settled markets, 11,951 books
Kalshi historical data10.8 million markets with results in every category; 134 million candles; 1.9 billion recorded books2026-01-084 settled markets, 1,020 books

Polymarket & Kalshi historical data at a glance

Venues
Polymarket · Kalshi · Limitless
Capture
Event-driven WS (Poly) · full-depth poll (Kalshi)
Cadence
Venue-specific; documented by source
Depth
Full ladder, both sides (≤100 levels Kalshi)
Assets
7 — BTC · ETH · SOL · XRP · DOGE · BNB · HYPE
Timestamps
Millisecond observation time; venue-specific source stamps
Underlying price
Nearest preceding Binance reference when available
History
7/30/90-day windows + full archive (Desk)
Delivery
REST history + normalized live WebSocket frames
Resolution
Raw stored observations or ?interval= 1s–1d

Discover Polymarket and Kalshi markets before requesting history

Use the identifiers returned by each venue's discovery route. Replace the placeholders below with real identifiers from the response; do not construct Kalshi tickers from timestamps.

Copyable requestshell
# Polymarket: discover a market, then request its recorded snapshots.
curl -s "https://api.depthfeed.com/v3/btc/markets?limit=5" \
  -H "Authorization: Bearer df_your_key"
curl -s "https://api.depthfeed.com/v3/btc/markets/<market_id>/snapshots?include_orderbook=true&interval=1m" \
  -H "Authorization: Bearer df_your_key"

# Kalshi: use an exact market ticker returned by discovery.
curl -s "https://api.depthfeed.com/v3/kalshi/markets?series=KXBTC15M&limit=5" \
  -H "Authorization: Bearer df_your_key"
curl -s "https://api.depthfeed.com/v3/kalshi/<exact_market_ticker>/snapshots?include_orderbook=true" \
  -H "Authorization: Bearer df_your_key"
  • Replace df_your_key with your own API key. These requests are examples, not a claim that a particular market or day is available on every plan.
  • REST history uses the documented plan and coverage limits. Daily Parquet purchases use the separate catalogue's available dates and schemas.

Polymarket & Kalshi historical data

What's in the archive

  1. Kalshi: start from the exact market ticker

    Kalshi series codes identify a family; a historical request needs the exact market ticker returned by discovery. DepthFeed records the Yes/No order book through paced REST polling and normalizes prices to 0–1 dollars. Coverage by category, the source comparison and the free sample are on the Kalshi historical data page.

  2. Polymarket: keep the market identifier

    Discover the Polymarket market before requesting its recorded snapshots. Keep its identifier, asset, market window and outcome metadata with the full bid/ask ladder. Coverage by category, the source comparison and the free sample are on the Polymarket historical data page.

  3. Daily Parquet downloads or historical REST requests

    Use a listed daily file when a research job repeatedly scans a fixed archive, and REST when market filters, bounded time windows or pagination suit the workflow. The public bulk catalogue shows actual available dates, native schemas and pricing. Inspect those entries before buying; a synthetic sample demonstrates the file format and is not proof of captured coverage.

  4. The full book, not a last price

    A historical last price does not expose the spread or displayed size. DepthFeed's archive holds the full bid/ask ladder at each stored observation (up to 100 levels per side on Kalshi) for supported polymarket & kalshi markets, so you can inspect the recorded ladder and model an order against the liquidity visible at that observation.

  5. Resolution that survives short-dated markets

    Short-dated crypto markets can settle within minutes, so an hourly archive may capture only a small part of their path. DepthFeed uses event-driven source capture on Polymarket and paced full-depth REST polling on Kalshi; stored cadence is venue-specific; use the returned timestamps and documented series floors to determine whether a particular study has sufficient resolution.

  6. REST history and live updates: separate contracts

    Pull stored depth through the REST API and subscribe to normalized current-book frames over WebSocket. The two surfaces share documented book concepts but can have different envelopes and venue-specific fields. Plans serve rolling 7-, 30-, and 90-day windows; Desk is bounded by the archive actually held.

Choose daily files or the historical API

Inspect available dates, native schemas and prices in the public file catalogue, or use the snapshot API for bounded requests. Choose the delivery path that fits the research job.

Browse bulk data files · Read snapshot docs

More on Polymarket & Kalshi dataMore on Polymarket & Kalshi data

Questions, answered.

Start backtesting on real depth.