CoolFace
Datasetpublic

moose-code/polymarket-onchain-v1

Polymarket On-Chain: the complete v1 dataset Every trade, position, and payout on Polymarket, from the 2020 launch through April 2026. That is 1.17 billion trades, 2.74 billion records, $59.9B in volume, and 2.6 million traders. All of it free under CC-BY, and you can query the whole thing from your terminal without downloading a single file. Academics and researchers: the snapshot is free forever under CC-BY. If you need it live and continuously updated, Envio offers an… See the full description on the dataset page: https://huggingface.co/datasets/moose-code/polymarket-onchain-v1.

sourceHugging Facecc-by-4.0updated 3mo agoView on Hugging Face
1likes3.3kdownloads
Dataset Card

Polymarket On-Chain: the complete v1 dataset

Every trade, position, and payout on Polymarket, from the 2020 launch through April 2026. That is 1.17 billion trades, 2.74 billion records, $59.9B in volume, and 2.6 million traders. All of it free under CC-BY, and you can query the whole thing from your terminal without downloading a single file.

Academics and researchers: the snapshot is free forever under CC-BY. If you need it live and continuously updated, Envio offers an educational discount on hosted indexing. It is the exact pipeline that built this dataset, powered by HyperSync for fast historical sync and realtime updates. Get in touch at envio.dev.

It was indexed straight off the Polygon blockchain with Envio HyperIndex. The indexer code is open source, so every number here is reproducible from scratch (see Reproduce it yourself).

bash
# Count 1.17 billion on-chain trades over HTTPS in about a second. No download, no signup, no API key.
duckdb -c "SELECT count(*) FROM 'hf://datasets/moose-code/polymarket-onchain-v1/order_filled/**/*.parquet'"
# 1172658611

DuckDB pulls only the byte ranges it needs, so that query scans a billion rows without ever downloading the file.

What makes this one different

Most Polymarket datasets stop at trades. This one has the entire on-chain lifecycle: every CLOB fill, plus every conditional-token split, merge, redemption, and resolution, all the way back to the 2020 AMM era. That is what lets you reconstruct real positions, realized PnL, and exactly who got paid when a market resolved.

MetricValue
CLOB trades (fills)1,172,658,611
Total records2.74 billion across ~25 entities
Lifetime CLOB volume$59.9B
Unique trader wallets2,630,334
CoverageSep 2020 to Apr 2026 (FPMM and CLOB eras)
ChainPolygon (id 137), up to block 85,948,287
Format127 GB Zstd Parquet, Hive-partitioned
LicenseCC-BY-4.0, free with attribution to Envio

The biggest single bets ever placed

One fill, one market. Run it yourself:

bash
duckdb -c "
  SELECT CAST(makerAmountFilled AS HUGEINT)/1e6 AS usd, timestamp
  FROM 'hf://datasets/moose-code/polymarket-onchain-v1/order_filled/**/*.parquet'
  ORDER BY 1 DESC LIMIT 10"
USDMarket
$6.22MFed increases interest rates by 25+ bps after the Jan 2026 meeting?
$5.00MNetanyahu out by March 31?
$5.00MWill any other Republican win the 2024 US Presidential Election?
$3.83MUS forces enter Iran by March 31?
$3.59MWill Zelenskyy wear a suit before July?

Query it without downloading

DuckDB (brew install duckdb). The partitioned tables prune by time automatically, so scoping to a range costs a fraction of the bytes:

bash
# Monthly volume for 2025
duckdb -c "
  SELECT strftime(to_timestamp(CAST(timestamp AS BIGINT)),'%Y-%m') AS month,
         sum(CASE WHEN makerAssetId='0' THEN CAST(makerAmountFilled AS HUGEINT)
                  ELSE CAST(takerAmountFilled AS HUGEINT) END)/1e6 AS volume_usd
  FROM 'hf://datasets/moose-code/polymarket-onchain-v1/order_filled/year=2025/**/*.parquet'
  GROUP BY 1 ORDER BY 1"

Python, a single file over HTTPS or via the datasets library:

python
import polars as pl
df = pl.read_parquet("https://huggingface.co/datasets/moose-code/polymarket-onchain-v1/resolve/main/orderbook.parquet")

from datasets import load_dataset
ds = load_dataset("moose-code/polymarket-onchain-v1", "market_data")

Or use the SQL console at the top of this page. It runs DuckDB in your browser with nothing to install.

What's inside

EntityRowsWhat it is
order_filled/1,172,658,611Every individual CLOB fill
fee_refunded/620,731,449Neg-risk fee refunds
orders_matched/445,179,390CLOB match events
user_position303,955,230Per (user, token): amount, avg price, realized PnL
redemption/153,914,418Payouts claimed at resolution
merge/, split/11.8M, 9.6MConditionalTokens merges and splits
wallet7,362,437Safe and Polymarket proxy wallets with USDC balances
fpmm_transaction/2,023,553AMM buys and sells (2020 to 2022 era)
market_data1,854,758Outcome-token metadata: question, slug, outcomes
orderbook, condition, position1.6M, 1.1M, 2.2MPer-token aggregates, resolutions, positions

Also included: neg_risk_conversion, fixed_product_market_maker, fpmm_funding_*, game, market_open_interest, and global singletons.

Reproduce it yourself

This dataset is not a black box. The open-source Envio HyperIndex indexers that produced it are public, so you can verify every number, re-run the pipeline, or extend it to new contracts:

  • Polymarket v1 (CLOB and FPMM on Polygon): https://github.com/enviodev/polymarket-indexer
  • Polymarket v2: https://github.com/enviodev/polymarket-v2-indexer

Point either indexer at Polygon and it rebuilds this data directly from on-chain events. Both are built on Envio HyperIndex, which syncs historical contract data far faster than raw RPC. You can index your own contracts the same way at envio.dev.

Field conventions

  • Addresses are lowercase hex. bytes32 values such as orderHash and conditionId are 0x-prefixed hex.
  • tokenId is a decimal-string uint256. Amounts are BigInt in smallest units, so USDC (6 decimals) divides by 1e6 for dollars. The CLOB cash leg is assetId = '0'.
  • scaled* fields are already divided by 1e6 and ready to plot.

Provenance and scope

Independently indexed from public Polygon on-chain data with Envio HyperIndex. Not affiliated with or endorsed by Polymarket. Event-log tables are point-in-time (timestamp <= cutoff); state tables reflect the chain within about 36 minutes of the cutoff. Exact figures live in SNAPSHOT.json. Scope is Polymarket v1 (CLOB and FPMM), on-chain only, with no off-chain order-book depth or API prices beyond market_data.

Citation

bibtex
@misc{polymarket_onchain_v1,
  title = {Polymarket On-Chain: Complete v1 Dataset},
  note  = {Indexed with Envio HyperIndex (envio.dev)},
  year  = {2026},
  url   = {https://huggingface.co/datasets/moose-code/polymarket-onchain-v1}
}

License: CC-BY-4.0. Free for commercial and research use with attribution to Envio (envio.dev). Built from public on-chain data.