Every Polymarket trade.
In your database.

Indexing Polygon

Every trade, position, and payout since 2022 as Parquet files — plus a real-time API with sub-second freshness. Query with DuckDB or pandas, or load into any database.

Try it free — 7 days
No credit card needed
865M+
Trades indexed
150M+
Positions with PnL
<1s
Data freshness
Parquet
DuckDB-ready
See what people build with this data — @predmktdata ↗

Real-time feed

connecting...

Every trade and position change on Polymarket, the moment it happens on-chain.

$ / last block
Trades / min
last ~5 min
Buy / sell pressure
buy   sell
Biggest · 5 min
single trade
TIME TAKER SIDE AMT PRICE
ADDRESS SHARES AVG PNL

From sign-up to querying in minutes

1 · SIGN IN
Sign in with Google. You get your API key instantly — no credit card for the trial.
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/20260630.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/20260630.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 real-time 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 with live 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.
Bot & tool builders
Build copy-trading bots, PnL dashboards, or alert systems with the real-time API and WebSocket feed. Sub-second latency at the chain tip.
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 From $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 12 on-chain tables covering every type of activity on Polymarket — trades, positions, markets, payouts, parlays, market resolution, and order book depth — 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 sample data 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 & unrealized PnL per position
150M+ rows · Computed
user_addresstoken_idamountavg_pricerealized_pnlunrealized_pnltotal_pnllast_block
0xc23b...f921742633...64551,872.130.553,210.40842.174,052.5764012334
0x5a01...c298301442...1187500.000.72-120.0040.00-80.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
Order book depth (L2 snapshots)
polymarket_orderbook
Level-2 order book snapshots — best bid/ask, full bid & ask depth, mid price and spread per market. Enriched with the market question and Yes/No outcome, consolidated into 6-hour windows
pmxt L2 snapshots (CC BY 4.0) · since Apr 2026
timestampquestionoutcomebest_bidbest_askspreadmid
2026-04-20 18:00:03Will Bitcoin hit $100k?YES0.620.630.010.625
2026-04-20 18:00:05Fed rate cut in May?NO0.780.800.020.790
Perps — off-chain perpetual futures (new)
Polymarket Perps are leveraged perpetual futures on equity indices, commodities, and crypto. 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. 10 instruments (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

Start with 7 days of data for free — no credit card. Month-to-month via Stripe, cancel anytime.

What you get
TRIAL
Free / 7 days
LITE
$49/mo
PRO
$149/mo
single user
Data
Full history of trades since 2022 — 865M+ events, 20 GB+ ParquetLast 7 days
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 winnerLast 7 days
Order book L2 depth — best bid/ask, depth, mid & spreadLast 7 days
Perps — off-chain perpetual futures (indices, commodities & crypto)Last 7 days
Updated daily (end-of-day)
Parquet format
Real-time
Live API — real-time, at the chain tip
Track any wallet — positions, avg price, realized & unrealized PnL
Push feed — instant alerts on trades and position changes
Firehose stream — catchup & live sync, replace your pipeline
Try freeGet LiteGet Pro
Lite
End-of-day data with full history since 2022. Download fresh Parquet files every morning, query remotely with DuckDB, or load into any database.
Pro
Real-time, at the chain tip. Stream every on-chain event through one WebSocket — automatic catchup from where you left off, then seamless live sync. Keep your own database in perfect sync, track whale wallets, or build copy-trading bots. Zero polling, zero gaps.
Single user, self-serve. Firm-wide use → Enterprise.
Enterprise
For funds & trading firms
The $49 and $149 plans are single-user, self-serve subscriptions. 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)
  • Additional venues & custom data on request
  • Direct line to the engineer behind the indexer
Contact us →
Start free trial
7 days of data · No credit card

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 — and Level-2 order book depth (best bid/ask, mid, and spread) for every market. 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).
How far behind the chain are you?
Under 1 second. The indexer runs at the chain tip with automatic reorg detection and recovery — no finality buffer needed.
How do I get access?
Sign in with Google, pick Lite ($49/mo) or Pro ($149/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 and Pro are single-user, self-serve subscriptions — one named user each. 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. Both Lite and Pro include full history since 2022. Pro users can also connect to /events for near real-time 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. The real-time API returns newline-delimited JSON with gzip or zstd compression.
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 from your dashboard at any time. Your access continues until the end of the billing period, and you keep any data you've already downloaded.
Is there a free trial?
Yes. Sign up and start a 7-day free trial — you get the last 7 days of trades, markets, and UMA data as Parquet files. Enough to test your pipeline and see the data quality. Position snapshots and full history require a paid plan. No credit card needed.
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?
Daily event files are retained for 31 days. The positions snapshot is regenerated daily (2 copies kept). The markets lookup is overwritten daily.

Your data. Your database. Parquet.

Try it free for 7 days — no credit card. Then full history from $49/mo, real-time API from $149/mo.

Start free trial
Read the docs ↗ | llms.txt ↗
Need help? contact@predmktdata.com
Try it free — 7 days, no card