Schemas Get a free key
Polymarket · Historical data

Polymarket historical data: the full L2 order book archive

Every book snapshot, price change and trade the recorder received since 2026-07-25, plus top-of-book quotes: one Parquet file per stream per UTC day, and the same files cut by market family. CC BY 4.0 on a free key; the samples need no key.

Ask your AI · Claude, ChatGPT, CursorConnect in a minute →

“Give me the download link for the BTC 5-minute quotes of 2026-11-02”

polymarket_archive

“Which days of the Polymarket archive are the largest, and how big is a day of book_events?”

polymarket_archive
daily partitions, measured
coverage, UTC days
Parquet, the by-day layout
rows across the three streams
  1. Open a sample

    One complete market in all three streams, the same columns as the archive. No key.

  2. Find the day

    /archive/datasets lists every file with its size and, where recorded, its rows.

  3. Download it

    /archive/url with redirect=true hands you the file; downloads are not counted against your limit.

Download

A day of trades in one command

The same three steps in cURL, Python and the CLI.

bash
curl -O https://data.vike.io/archive/samples/trades.parquet        # sample, no key

curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/archive/datasets?stream=trades&from=2026-11-02&to=2026-11-02"

curl -L -o trades-2026-11-02.parquet -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/archive/url?date=2026-11-02&stream=trades&redirect=true"
  • Download whole files, then read them locally; do not point a Parquet reader at the remote URL.
  • Archive downloads do not count against the hourly limit. The samples and manifest.json need no key.
  • A link from /archive/url is valid 7 days and needs no key, so do not share it.
  • Licence CC BY 4.0: use it for anything, credit Vike.

Archive calendar · /archive/datasets

GET/v1/polymarket/archive/datasets?limit=1000
Open this side to see the captured response.

    
Three streams

Which file to take

l1_quotes if top of book is enough, trades for the tape, book_events for full depth: the other two derive from it and are far smaller.

FileA day’s file, average of the last 7 daysWhat is insideTake it for
l1_quotesbest bid and ask with sizes, one row per changeprices, spreads, a backtest on top of book
tradesthe taker printsvolume, the tape, buy and sell pressure
book_eventsfull L2: snapshots, deltas, trades, markersrebuilding the book at any moment, depth, slippage
Polymarket · Parquet archive · l1_quotes · top of book

Top-of-book quotes

Derived top of book — bid, ask and both sizes, one row per change.

Route
GET /v1/polymarket/archive/url
Cadence
One partition per UTC day
Coverage
Archive only: l1_quotes.parquet per UTC day from 2026-07-25 (CC BY 4.0), derived from book_events and published separately because it is far smaller. Resolve a file with /archive/url (redirect=1 for a 302); /archive/datasets lists every partition with its size and, where recorded, its row count.
Rows
Free APIArchiveStreamMCP↓ l1_quotes.parquet sample · no key

Fields

FieldTypeDescription
token_idStringThe outcome token
condition_idStringThe market, 0x-prefixed
tsInt64Quote time, epoch milliseconds
local_tsInt64Receive time, epoch milliseconds
bidDecimal(9, 4)Best bid
askDecimal(9, 4)Best ask
bid_sizeDecimal(18, 6)Shares at the best bid
ask_sizeDecimal(18, 6)Shares at the best ask

Real rows

Top-of-book quotes · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/archive/datasets?limit=1000"

# Full history is the Parquet archive. Pick a date from manifest.json (no key needed),
# download the whole file, then read it locally:
DAY=YYYY-MM-DD
curl -H "X-API-KEY: $VIKE_API_KEY" -O \
  "https://data.vike.io/archive/venue=polymarket/date=$DAY/l1_quotes.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/l1_quotes.parquet

Download whole files, then read them locally — do not point a Parquet reader at the remote URL. Archive downloads need a key but do not count against the hourly limit.

Full reference for /v1/polymarket/archive/url → · back to the catalog

Polymarket · API + Parquet archive · book_events · full L2

Order-book events

The full L2 tape — book snapshots, price_change deltas, trades, tick-size and status markers.

Route
GET /v1/polymarket/events
Cadence
Continuous; archive one partition per UTC day
Coverage
API: /events returns up to 24 hours per call and up to 50,000 events per page (next_cursor + has_more), from 2026-07-25; /orderbook returns the nearest book snapshot at or before any instant from then on, depth up to 25. Archive: book_events.parquet per UTC day from 2026-07-25 (CC BY 4.0), which also carries condition_id and tick_size.
Rows

Fields

FieldTypeDescription
token_idstringThe outcome token (ERC-1155 id)
tsintegerEvent time, epoch milliseconds
local_tsintegerReceive time, epoch milliseconds
seqintegerFeed sequence number
event_typestringbook | price_change | trade | tick_size_change | status
is_snapshotinteger1 on a full-book row, 0 otherwise
sidestringnone | buy | sell
pricenumberThe changed level (price_change) or the print (trade)
sizenumberShares at that level, or traded
best_bidnumberTop of book as recorded on the event; 0.0 when not set
best_asknumberTop of book as recorded on the event; 0.0 when not set
bidsstringJSON [[price, size], …] carried as a string; empty when absent
asksstringJSON [[price, size], …] carried as a string; empty when absent
statusstringMarker on status rows, e.g. gap_start; empty otherwise

Real rows

Order-book events · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/events?token_id={token_id}&from_ms={from_ms}&to_ms={to_ms}&event_type=price_change&limit=50"

# Full history is the Parquet archive. Pick a date from manifest.json (no key needed),
# download the whole file, then read it locally:
DAY=YYYY-MM-DD
curl -H "X-API-KEY: $VIKE_API_KEY" -O \
  "https://data.vike.io/archive/venue=polymarket/date=$DAY/book_events.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/book_events.parquet

Download whole files, then read them locally — do not point a Parquet reader at the remote URL. Archive downloads need a key but do not count against the hourly limit.

Full reference for /v1/polymarket/events → · back to the catalog

trades.parquet, the third stream, has its fields, real rows and loading code on the Trades page, beside the on-chain trades with wallets.
Two layouts

By day, or by market family

The same recording and the same columns, cut two ways.

LayoutBy dayBy market family
Pathvenue=polymarket/date=YYYY-MM-DD/{stream}.parquetvenue=polymarket/asset=<asset>/tenor=<tenor>/date=YYYY-MM-DD/{stream}.parquet
Foreverything that dayone family without downloading the whole day
Families—btc, eth, sol, xrp, doge, bnb, hype × 5m, 15m, 4h; other/other holds every other market and is the largest
From2026-07-252026-07-26
bash
curl -L -o btc-5m-l1.parquet -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/archive/url?date=2026-11-02&stream=l1_quotes&asset=btc&tenor=5m&redirect=true"
FAQ

Polymarket historical data FAQ

Where can I download Polymarket historical data?
Here: one Parquet file per stream per UTC day since 2026-07-25, on a free key. The samples and manifest.json need no key.
Is there a Polymarket order book history?
Yes. book_events holds every book snapshot and price change the recorder received, so the book can be rebuilt at any moment since 2026-07-25.
Can I get only the 5-minute BTC markets?
Yes: the family layout, asset=btc and tenor=5m, one file per stream per day from 2026-07-26.
What is the licence?
CC BY 4.0: use it for anything, credit Vike.