Every Polymarket trade.
In your database.

Indexing Polygon

Every trade, position, and payout since 2022 as Parquet files, updated every day. Query with DuckDB or pandas, or load into any database.

Get started — $49/mo
Month-to-month · cancel anytime
865M+
Trades indexed
150M+
Positions with PnL
Daily
New files every day
Parquet
DuckDB-ready
See what people build with this data — @predmktdata ↗

From sign-up to querying in minutes

1 · SUBSCRIBE
Sign in with Google and subscribe to Lite through Stripe. Your API key works as soon as checkout completes.
2 · GET THE DATA
Download daily Parquet files with curl, or grab a presigned URL and query them remotely.
3 · QUERY IT
DuckDB, pandas, Postgres, ClickHouse — Parquet loads anywhere. One SQL query and you're analyzing.
shell download a day of trades
# List available files
curl -H "x-api-key: YOUR_KEY" \
  https://api.predmktdata.com/dumps

# Download one day of trades (Parquet)
curl -L -H "x-api-key: YOUR_KEY" -o fills.parquet \
  https://api.predmktdata.com/dumps/order_filled_events_v2/20261008.parquet
python top traders by realized PnL
import duckdb, requests

# Presigned URL — query remotely, nothing to download
url = requests.get(
    "https://api.predmktdata.com/dumps/positions/positions_current.parquet",
    headers={"x-api-key": "YOUR_KEY"}, allow_redirects=False,
).headers["location"]

duckdb.sql(f"""
  SELECT user_address, round(sum(realized_pnl)/1e6) AS pnl_usd
  FROM read_parquet('{url}')
  GROUP BY 1 ORDER BY 2 DESC LIMIT 10
""").show()  # top 10 traders, one query

Full sync patterns, schemas and query examples in the docs — or feed llms.txt to your AI agent.

Who uses this

Quant traders
Backtest strategies on 865M+ trades. Build signals from fills, track whale wallets and their PnL, or feed position data into your models.
Researchers & analysts
Study prediction market behavior across 3+ years of data. Analyze market accuracy, trader performance, and liquidity patterns.
Dashboard & tool builders
Power PnL dashboards, trader leaderboards, and market analytics from daily Parquet files. Backfill once, then add each new day's file.
Journalists & media
Get the raw data behind Polymarket stories. See who's betting, how much, and on what — without trusting someone else's summary.

Why not just use the free Polymarket API?

Polymarket has a public API, but it's designed for their app — not for data analysis. You can look up one wallet or one market at a time, but you can't search across the full dataset.

I want to... Polymarket API Build my own indexer predmktdata
Get all trades from a specific month Can't filter by date Weeks of engineering ✓ One file per day
Find all whales (wallets holding >$10K) Only one wallet at a time Build from scratch ✓ Filter any column
See who made the most money No P&L data Replay millions of events ✓ Pre-computed P&L
Backtest a trading strategy No historical data Months of work ✓ Full history since 2022
Compare activity across markets One market at a time Index 4 contracts, decode 10 event types ✓ All markets in one file
Time to get started Minutes 2–4 weeks + maintenance Minutes
Cost Free Server + node + database $49/mo

Download the Parquet, open it in Python, DuckDB, or any database — and query whatever you need. Full guide with code examples ↗

Polymarket Data — Prediction Market Data Tables

You get on-chain tables covering every type of activity on Polymarket — trades, positions, markets, payouts, parlays, and market resolution — plus a live off-chain Perps feed (leveraged perpetual futures). All on-chain amounts are in USDC. Using AI? Feed our llms.txt to Claude or GPT and it will build the integration for you.

click any card to see example rows with real column names

Core
order_filled_events
Every buy and sell trade matched on Polymarket — who traded, how much, and at what price
865M+ rows
tx_hashblocktimestampmakertakermaker_amttaker_amtfeeside
0x63ee...e3800000002025-03-15 14:32:010x3884...d510xc904...8d27.153.210sell
0xa21f...17800000122025-03-15 14:32:250x72ab...f030x19de...a4125.0012.500.05buy
0xd8c2...9a800000312025-03-15 14:33:030xb901...e880x5c44...7120.500.850buy
positions
Current state of every wallet — token holdings, avg price, realized PnL and lifetime buys per position. Mark open positions with daily_token_prices for unrealized PnL
150M+ rows · Computed
user_addresstoken_idamountavg_pricerealized_pnltotal_boughtlast_block
0xc23b...f921742633...64551,872.130.553,210.409,420.0064012334
0x5a01...c298301442...1187500.000.72-120.001,250.0080001200
On-chain activity
position_splits
When a user converts USDC into Yes/No outcome tokens to enter a market
ConditionalTokens
tx_hashblocktimestampstakeholdercondition_idamount
0x369e...91790000032025-03-10 08:12:440xe18a...100xdb27...05133.00
0x7b01...c4790000182025-03-10 08:13:140x4a92...b70x91f3...e250.00
position_merges
When a user converts Yes/No tokens back into USDC to exit a market
ConditionalTokens
tx_hashblocktimestampstakeholdercondition_idamount
0x87e0...5c790000082025-03-10 08:12:540xa3ad...660x58f4...9e801.00
0x2cf1...ab790000442025-03-10 08:13:460xd610...230x7e82...f125.50
payout_redemptions
Payouts after a market resolves — how much each winning position received
ConditionalTokens
tx_hashblocktimestampredeemercondition_idpayout
0x9cac...96790000002025-03-10 08:12:280x84b4...a60x3567...1d52.27
0xf320...d8790000552025-03-10 08:14:080x1bc9...e40xaa01...73150.00
position_conversions
Conversions between outcomes in multi-option markets (e.g. elections with 3+ candidates)
NegRisk Adapter
tx_hashblocktimestampstakeholdercondition_idindex_setamount
0xf81e...ed790000052025-03-10 08:12:380x63d4...f10xc04b...001023100.00
0x44b8...3c790000922025-03-10 08:15:220x8f21...a90xe571...b851175.00
Parlays (multi-leg bets, new in 2026)
combinatorial_redemptions
Parlay cash-outs — several markets combined into one position that pays out only if every leg wins. Each payout is attributed to the real winner, even when Polymarket auto-redeems it for them. Parlay entries appear as regular trades in order_filled_events_v2 (same position_id), and the parlay_legs lookup maps every parlay to its underlying markets — one SQL join to name each leg
CombinatorialModule · since Jun 2026 · 350K+ rows
tx_hashblocktimestamprecipientposition_idamountpayout
0x922f...e3890697982026-06-19 09:41:220x7fff...4f14147252...93444.564.56
0xc6a1...08898288362026-07-07 18:17:290xc616...2114562015...32969.299.29
Market resolution (UMA Oracle)
resolution_proposals
Who proposed the outcome of each market — address, proposed result (Yes/No), and challenge window
UMA Oracle · 41K+ rows
tx_hashblockproposerproposed_priceancillary_data
0x7b2e...a1652100320x5369...7c1e18 (Yes)Will Bitcoin hit $100k?
0xd91c...f8728300110xcf12...020 (No)Will ETH flip BTC by 2025?
resolution_disputes
When someone challenges a proposed outcome — who disputed, what was disputed, and the original proposer
UMA Oracle · 800+ rows
tx_hashblockdisputerproposerproposed_priceancillary_data
0x3f8c...e2489600550xdcfe...da0x015f...641e18 (Yes)Israeli troops on the ground in Gaza?
0xa42d...b7652150030x0db5...930x8d04...bd0 (No)Will there be flooding in LA?
resolution_settlements
Final resolved outcome and bond payouts — who won the dispute, what the market resolved to
UMA Oracle · 41K+ rows
tx_hashblockproposerdisputersettled_pricepayout
0xe91a...c4652200180x5369...7c0x0000...001e18 (Yes)750.00
0x1bc4...d1728400990xcf12...020xdcfe...da0 (No)1500.00
Perps — off-chain perpetual futures (new)
Polymarket Perps are leveraged perpetual futures on crypto, stocks, equity indices, and commodities. They trade on an off-chain order book, so the individual trades never touch any blockchain — every trade's hash is an empty 0x. Unlike everything above, there is no public ledger to reconstruct them from later: either you capture the exchange's live feed as it happens, or the data is gone. We run our own capture daemon on that feed and record every message. 89 instruments as of Sep 2026 (40 crypto, 40 stocks, 5 indices, 4 commodities — S&P 500, Nasdaq 100, gold, silver, oil, BTC, ETH, SOL, and more) across 7 daily Parquet streams — same download flow as the rest of the data. The example rows below are all SP500-USD (iid 1).
perps_trades
Every individual trade on the perps exchange — one row per fill. side is long or short, not buy/sell. Because matching is off-chain, hash is always 0x: there is no on-chain transaction behind any single trade
Off-chain firehose · event-driven · trades back to Jun 9, 2026
timestamp_receivedtsiidsidepricequantityhash
2026-07-09 15:41:352026-07-09 15:41:351short75260.021360x
perps_book
Level-2 order book depth — the full top-of-book image (20 price levels per side), emitted on a timer about 10 times a second. bids and asks are JSON arrays of [price, quantity]
Off-chain firehose · ~10 Hz snapshot · since Jul 9, 2026
tsiidbidsasks
2026-07-09 15:47:131[["7527.4","0.19928"],["7527.2","0.10014"], ...][["7527.5","36.26498"],["7527.6","35.2784"], ...]
perps_bbo
Best bid and offer — one row each time the top of the book changes (event-driven), so how often it updates tracks how actively the instrument trades
Off-chain firehose · event-driven · since Jul 9, 2026
tsiidbpbqapaq
2026-07-09 15:47:0817527.40.199287527.536.26498
perps_tickers
Live market summary — index, mark, last and mid price, open interest, the current (live) funding rate, and the next funding time. Snapshot about 10 times a second
Off-chain firehose · ~10 Hz snapshot · since Jul 9, 2026
tsiididxmarklastmidoifrnxf
2026-07-09 16:09:3517531.475307528.37530795.705430.000006252026-07-09 17:00
perps_statistics
Rolling market statistics — rolling volume and the rolling-period open price. Snapshot about once a second
Off-chain firehose · ~1 Hz snapshot · since Jul 9, 2026
tsiidvolopen
2026-07-09 15:47:1313181937.767431.3
perps_klines
1-minute OHLCV candles. History reaches back to each instrument's launch (the first ones on May 6, 2026). A candle updates live as it fills — the closed candle is the latest row for each (instrument, minute)
Firehose + REST backfill · 1-minute · klines back to May 6, 2026
candle_tsiidintervalopenhighlowclosevolumetrades
2026-07-09 16:01:0011m7524.47528.17524.47528.10.386863
perps_funding
Settled hourly funding rate, deduplicated. If the exchange restates a rate, both observations are kept — take the latest fetched_at per (instrument, settlement) for the final value
REST poll · hourly · since Jul 8, 2026
iidfunding_ratetsfetched_at
10.00001312026-07-08 06:002026-07-08 07:04

Pricing

One plan, everything included. Month-to-month via Stripe, cancel anytime.

What you get
LITE
$49/mo
single user
Data
Full history of trades since 2022 — 865M+ events, 20 GB+ Parquet✓
Daily position snapshot with PnL (updated 05:00 UTC)✓
Markets lookup table✓
UMA resolution — proposals, disputes, settlements✓
Parlays — multi-leg bet cash-outs, attributed to the real winner✓
Perps — off-chain perpetual futures (crypto, stocks, indices & commodities)✓
Updated daily (end-of-day)✓
Parquet format✓
Get Lite
Lite · $49/mo
End-of-day data with full history since 2022 — trades, positions with PnL, markets, UMA resolution, parlays and Polymarket Perps, all included. Download fresh Parquet files every morning, query remotely with DuckDB, or load into any database. Backfill once, then pick up each new day's file to keep your own copy in sync.
Single user, self-serve. Firm-wide use → Enterprise.
Enterprise
For funds & trading firms
The $49 Lite plan is a single-user, self-serve subscription. For firm-wide use — across multiple people or entities — we put a custom agreement in place.
  • Firm-wide / multi-seat license
  • Internal redistribution rights
  • Formal SLA & priority support
  • Direct R2 bucket access (S3-compatible)
  • Order-book history (L2 depth) on request
  • Additional venues & custom data on request
  • Direct line to the engineer behind the indexer
Contact us →
Get Lite — $49/mo
Sign in with Google · pay with Stripe

FAQ

Why not run my own indexer?
You can — the data is public on Polygon. But a full reindex from 2022 means processing 50M+ blocks across 4 smart contracts, decoding 865M+ raw events, and tracking 150M+ positions. That's days of RPC calls, hundreds of dollars in archive node costs, and a custom pipeline you have to build and maintain. We already did that work. You download the Parquet files and skip straight to analysis.
What data is included?
Every on-chain event from Polymarket's contracts on Polygon: exchange fills (CTF + NegRisk), position splits, merges, payout redemptions, NegRisk conversions, and parlay (combinatorial market) redemptions — Polymarket's new multi-leg bets, live since June 2026. Plus current positions per user per token, UMA Oracle resolution data — who proposed market outcomes, who disputed them, and final settlements. Separately from the on-chain data, we also capture Polymarket Perps — leveraged perpetual futures traded on an off-chain order book — live from the exchange feed as 7 daily Parquet streams (trades, book, best bid/ask, tickers, stats, 1-minute candles, funding). All of it, Perps included, comes with the Lite plan.
How fresh is the data?
Updated daily. Each UTC day of events lands as its own Parquet file at end of day, and the positions snapshot is regenerated every morning (05:00 UTC). Behind the files, the indexer runs at the chain tip with automatic reorg detection and recovery.
How do I get access?
Sign in with Google, subscribe to Lite ($49/mo), and pay with Stripe. You get your API key instantly. You can also reach out to contact@predmktdata.com.
Do you have a team or enterprise plan?
Yes. Lite is a single-user, self-serve subscription — one named user. For firm-wide use across multiple people or entities, internal redistribution, a formal SLA, or direct bucket access, we set up a custom enterprise agreement. Email contact@predmktdata.com and we'll scope it with you.
How fast is the full backfill?
Download all Parquet files in parallel — full history (865M+ fills) loads in under an hour. Lite includes full history since 2022. After the backfill, download each new day's file to stay in sync.
What database should I use?
All dumps are Parquet format. Query files remotely with DuckDB (no download needed), load into any database, or read directly with Python (pandas, polars). Parquet is columnar, compressed, and type-safe — much faster and smaller than CSV.
What does llms.txt do?
It's a machine-readable description of the API — endpoints, parameters, schemas, sync pattern. Feed it to a coding agent (Claude, GPT, Cursor) and it can generate a working integration script without you reading any docs.
Can I cancel anytime?
Yes. Subscriptions are month-to-month through Stripe — cancel at any time from your dashboard (Manage subscription opens the Stripe billing portal). Your access continues until the end of the billing period, and you keep any data you've already downloaded.
Is there a free trial?
No — there is no free tier or trial. Lite is $49/mo, month-to-month: cancel from your dashboard any time and keep everything you've already downloaded. Every table's schema and example rows are public in the docs, so you can check the data model before subscribing.
Do you offer an SLA?
No formal SLA. The service is provided as-is. In practice, the indexer runs 24/7 at the chain tip with automatic reorg recovery. If something breaks, email contact@predmktdata.com and we'll fix it.
How long are data dumps retained?
The full history since 2022 is kept — there is no expiry, and files for completed days never change. The positions snapshot, markets lookup and UMA tables are single files overwritten daily with the latest version.

Your data. Your database. Parquet.

Full history since 2022 for $49/mo. Month-to-month, cancel anytime.

Get started
Read the docs ↗ | llms.txt ↗
Need help? contact@predmktdata.com
Get started — $49/mo