PMData LogoPMDataDocs
Data sets

L2

L2 data is collected from the Polymarket websocket feed for up/down markets. Available since 2026-02-01.

Data type: poly_l2

Format: Daily ZIP of Parquet files, or single-market Parquet by slug.

import requests

api_key = "<YOUR_API_KEY>"
series = "btc-5m"
data_type = "poly_l2"
data_date = "2026-06-22"

file_name = f"{series}_{data_type}_{data_date}.zip"
url = f"https://api.pmdata.dev/polymarket/{series}/{data_type}/{file_name}"

response = requests.get(
    url,
    headers={"api_key": api_key},
    timeout=300,
)

Schema

FieldTypeDescription
market_slugstringPolymarket market slug.
timestamptimestampExchange event timestamp in UTC.
local_timestamptimestampPMData receive timestamp in UTC.
event_typestringRow type: book, price_change, or last_trade_price.
ask_priceslist<float> | nullAsk price levels for book rows.
ask_sizeslist<float> | nullAsk size at each price level for book rows.
bid_priceslist<float> | nullBid price levels for book rows.
bid_sizeslist<float> | nullBid size at each price level for book rows.
best_askfloat | nullBest ask after a price change.
best_bidfloat | nullBest bid after a price change.
pc_pricefloat | nullChanged price level.
pc_sizefloat | nullUpdated size at the changed price level.
pc_sidestring | nullBook side for the changed level, BUY or SELL.
trade_pricefloat | nullMost recent trade price.
trade_sizefloat | nullMost recent trade size.
trade_sidestring | nullAggressor side, BUY or SELL.

On this page