polyorderbooks/polymarket-crypto-updown-orderbooks-l2
Polymarket Crypto Up/Down Order Books — 1-Second L2 Depth 897,192 order book snapshots across 805 resolved markets and three contract lengths. Full bid and ask ladders, captured once per second, with the winning outcome on every row. This is the DOI-carrying research release. Same data as 10.5281/zenodo.22084114, mirrored here for load_dataset. What is in it File Snapshots Markets Contract updown_5m.parquet 167,941 471 Five-minute updown_15m.parquet… See the full description on the dataset page: https://huggingface.co/datasets/polyorderbooks/polymarket-crypto-updown-orderbooks-l2.
Polymarket Crypto Up/Down Order Books — 1-Second L2 Depth
897,192 order book snapshots across 805 resolved markets and three contract lengths. Full bid and ask ladders, captured once per second, with the winning outcome on every row.
This is the DOI-carrying research release. Same data as 10.5281/zenodo.22084114, mirrored here for load_dataset.
What is in it
Eight coins. Every market resolved, so each row carries its outcome. One continuous collector regime, so the three files are comparable with each other.
from datasets import load_dataset
ds = load_dataset("polyorderbooks/polymarket-crypto-updown-orderbooks-l2")Why three contract lengths
Because conclusions do not transfer between them, and that is easy to miss with one.
A four-hour contract holds a two-sided market for almost all of its life. A five-minute contract does not. Anything measured on one length should be checked against another before it is described as a property of prediction markets.
Two things to expect
Books go one-sided as markets resolve. Nobody offers the losing outcome and nobody bids the winning one. This is real market behaviour, not missing data, and it will break code that indexes the first level of a ladder without guarding.
Some snapshots are crossed — best bid at or above best ask, which cannot persist in a matching engine. They are flagged rather than removed so the rate stays measurable:
import pandas as pd
df = pd.read_parquet("updown_5m.parquet")
(df.best_bid >= df.best_ask).mean() # crossed rate
(df.bid_prices.str.len() == 0).mean() # empty bid side
df[df.seconds_to_close <= 60].crossed.mean() # and near settlementPublishing the flag rather than filtering the affected rows is deliberate: you can measure our data quality instead of taking our word for it.
Schema
One row per outcome token per second. Ladders are typed list columns, so no parsing step.
Prices are probabilities in [0, 1]. Sizes are share counts.
How it was captured
Read from Polymarket's live order book once per second, with a full-book reconcile every 60 seconds. The reconcile interval is the design decision that matters: replaying an archived event stream instead diverges from the source at roughly two-thirds of checkpoints, because the feed carries no sequence numbers and a dropped removal leaves no gap to detect.
Polymarket archives no order book history itself — /book returns the current state and nothing stores it — so this data exists only because it was recorded while the markets traded.
Citation
PolyOrderbooks. (2026). Polymarket Crypto Up/Down Order Books: 1-Second L2 Depth Across Three Contract Lengths [Dataset]. Zenodo. https://doi.org/10.5281/zenodo.22084114
That is the concept DOI and always resolves to the newest version. Each version also has its own DOI for pinning exact data.
About PolyOrderbooks
We capture Polymarket order book depth at 1-second resolution and serve it over a REST API. Polymarket archives no order book history of its own — its /book endpoint returns the current state and nothing stores it — so this data exists only because it was recorded while the markets traded.
The citable release
For a paper, cite the DOI-carrying release rather than this repository — 897,192 snapshots across 805 resolved markets and three contract lengths, same schema, same licence:
PolyOrderbooks. (2026). Polymarket Crypto Up/Down Order Books: 1-Second L2 Depth Across Three Contract Lengths [Dataset]. Zenodo. https://doi.org/10.5281/zenodo.22084114
Questions
Open a discussion on this dataset for anything about the data itself.
For the API — a window these files do not reach, a coverage question, a plan — email contact@polyorderbooks.com. Corrections to the data are welcome and taken seriously; if you find something wrong here we would rather know.
Not affiliated with, endorsed by, or connected to Polymarket.
