CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 1mo agoView on Hugging Face
0likes602downloads
Dataset Card

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

FileSnapshotsMarketsContract
updown_5m.parquet167,941471Five-minute
updown_15m.parquet239,310265Fifteen-minute
updown_4h.parquet489,94169Four-hour

Eight coins. Every market resolved, so each row carries its outcome. One continuous collector regime, so the three files are comparable with each other.

python
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.

5-minute15-minute4-hour
One-sided snapshots16.9%9.3%0.5%
Crossed snapshots3.24%3.08%1.50%
One-sided in the final 60s76.2%85.4%46.5%

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:

python
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 settlement

Publishing 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.

ColumnTypeNotes
market_slugstringe.g. btc-updown-5m-1787551200
outcomestringUp or Down
captured_attimestampUTC, 1-second resolution
seconds_to_closefloatTime remaining until settlement
bid_prices, bid_sizeslist[float]Full bid ladder, best first
ask_prices, ask_sizeslist[float]Full ask ladder, best first
best_bid, best_askfloatDerived top of book
crossedboolbest_bid >= best_ask
winning_outcomestringResolved result

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.

APIpolyorderbooks.com
Documentationdocs.polyorderbooks.com — endpoints, parameters, response shapes
Free tierpolyorderbooks.com/signup — 1-second resolution, no card
All open datasetspolyorderbooks.com/datasets
Python client`pip install polyorderbooks`
MCP server`@polyorderbooks/mcp-server` — for Claude, Cursor and other MCP clients

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.