FOUNDER PRICINGSee what it covers →

Polymarket historical data,
every change of the book.

Millisecond resolution on every market Polymarket runs, both clocks kept, trades back to 2020 — and a published ledger of exactly what we captured. One flat price, no row meter.

Polymarketorder books and tradesrecording
--
markets
--
tokens
--
since
--
capture
Order book, tick by ticksample
waiting for ticks...
resting bidsresting asksprints
A free hour of every market, no cardthen $29/mo flat, no meter

Tick by tick — the lowest granularity that exists.

We store the event the venue emits, not a snapshot of how the book looked 100 ms later. There is nothing finer than this, because nothing finer leaves the exchange.

One row, as it is stored
12hour:05minute:00second.754millisecond
ts_exchange
the venue's own clock, untouched
ts_recv
the moment the frame landed on our recorder

Which Polymarket markets are covered? All of them.

No volume gate, no series whitelist, no minimum. The categories and markets below are Polymarket’s own, read live — so the claim is checked against something we do not control.

Browse all markets →

Polymarket, live

read from the venue

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

——————————

0 live markets— / 24h

One price, and you can check us before you pay.

The two things that stop a purchase in this field. A flat price on data nobody can audit is a flat price on a promise, so you get both or neither.

One price, whatever you pull

No row meter, no credits, no per-instrument-day arithmetic. The bill at a terabyte is the bill at a gigabyte.

$29/ moflat, at every volume, no meter
  • Every marketno volume gate
  • Full book depthevery level, every change
  • Tradesback to 2020
  • Both clocksvenue and recorder
  • Coverage ledgerevery market-hour
  • lp2 and parquetsigned URLs

Check what we captured before you pay

Recorded milliseconds, gaps and uptime for every market-hour. Free, keyless, and the one number nobody else in this field publishes.

1hfreeof every market
  • An hour of every marketthe full tape, free, no card
  • The coverage ledgerrecorded ms, gaps and uptime per market-hour
  • No key to read itpublic and citable, before you sign up

Four lines to access the data lake.

Signed URLs straight onto object storage, an open reader for the wire format, one schema across every market. Nothing proprietary sits between you and the files.

Clients

HTTP
curl
Python
CLI
Rust
C++

Formats

lp2
parquet
csv

Dimmed clients are on the way and said so here rather than in a changelog. How a row gets here, and what is in it →

first_book.py
1import pmd
2
3book = pmd.books("btc-updown-5m-1762598700-up",
4 start="2026-11-08T12:05:00Z",
5 end="2026-11-08T12:10:00Z")
6print(book.head(3))
Output

The parts you only notice later.

None of these sells the product on its own. Every one of them is a thing you would have found out in month two, and would rather have known in week one.

Every level, not just the top of the book

Both sides of the ladder at every price the venue publishes - not a best bid and a best ask with the queue behind them thrown away. Depth is where a fill of any size is decided.

■ bids 0.50mid 0.565asks 0.63 ■

The whole archive, the day you join

Not a rolling window that shortens the moment you stop paying.

20202122232425now

Dashed: the shape of a rolling window. Ours has no left edge.

Lossless, and about 7x smaller

lp2 is our encoding, with an open reader, so nothing is locked behind our tooling. Parquet is an export from the same bytes.

parquet 1.00 GB

lp2 0.14 GB

Area to scale. Same rows back out.

Both clocks on every row

When the venue stamped it, and when it landed on our recorder. Latency is a column you read, not something we averaged away.

ts_exchangets_recv
12:05:00.75412:05:00.761

One schema, everywhere

The columns in a historical file are the columns a replay emits and the columns a live tail will carry.

batch
replay
live tail

schema v1

ts_recvts_exchangepxsz

Rights, not bytes

Personal, then commercial, then redistribution by contract. What you may do with the tape is the thing that costs - the bytes are the same bytes.

PersonalCommercialRedistribution
Research and backtests✓✓✓
Use at a desk or fund✓✓
Pass the data on✓

Invoiced, not charged

No card is collected anywhere on this site, and nothing renews because you forgot about it. An invoice, then access.

No card collected

invoice, then access

Start with a free hour of every market.

No card is collected anywhere on this site. The catalog and the coverage ledger carry no key at all, so you can check what we captured before you decide anything.

Or order a dataset and we invoice it. Nothing renews because you forgot.