Schemas Get a free key
Polymarket · Trades

Polymarket trades and volume

Every Polymarket trade with the wallet behind it, read from the chain since 2026-01-01, and the taker tape recorded from the order-book feed since 2026-07-25. Query them, get them live over WebSocket, or download a day as Parquet.

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

“Show the biggest trades in this market today, with the wallet behind each (paste a link)”

polymarket_market_trades

“Who bought the most Yes in this market in the last hour, and do they usually win?”

polymarket_market_trades polymarket_wallet
on-chain trades with wallets, since 2026-01-01
recorded taker prints, since 2026-07-25
≈5 min
after the trade, live over WebSocket (measured)
1 file a day
of trades in the Parquet archive
Which one

Two sets of trades

The chain’s view and the order-book feed’s view of the same market.

CompareOn-chain tradesRecorded tape
What it isevery fill settled on Polygonthe taker prints the order-book feed sent
Walletyes, with maker or taker roleno
From2026-01-012026-07-25
API/markets/{condition_id}/trades/events?event_type=trade
LiveWebSocket pm.trades—
Download—trades.parquet, one file a day
CLIvike-data pm market-tradesvike-data pm tape --event-type trade
AIpolymarket_market_tradespolymarket_tape
With wallets

Who traded, how much, at what price

Every fill settled on Polygon, with the wallet and whether it was the maker or the taker.

Polymarket · API dataset · with wallets

Market trades

One market's on-chain trades with the wallet behind each, newest first.

Route
GET /v1/polymarket/markets/{condition_id}/trades
Cadence
Continuous; the newest trades are a few minutes behind the chain
Coverage
API: one market's trades, newest first, keyset-paged — pass next_cursor back as cursor, limit up to 10,000 (the MCP tool too; its default page is 100); from_ms and to_ms bound the window. From 2026-01-01 to a few minutes ago. A row is one order's fill, so a match is several rows (role maker | taker): never add both roles' volume. A few percent of fills are merged away. The recorded order book, which has no wallets, is the Order-book events dataset.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
tsintegerThe block's time, epoch milliseconds (whole seconds)
tx_hashstringTransaction hash, 0x-prefixed
log_indexintegerPosition of the fill in the block; orders the fills of one transaction
block_numberintegerPolygon block
proxy_walletstringThe Polymarket proxy wallet that placed the order, 0x-prefixed
namestringPolymarket display name; empty when unset
pseudonymstringPolymarket-generated pseudonym; empty when unset
sidestringBUY | SELL of the outcome token
rolestringmaker (a resting order that was hit) | taker (the order that hit it)
outcomestringThe outcome this token is, e.g. Up
outcome_indexintegerPosition of the outcome in the market's outcome list
token_idstringThe outcome token traded
sizenumberShares traded
pricenumberOutcome price, 0–1

Real rows

Market trades · 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/markets/{condition_id}/trades?limit=50"

Full reference for /v1/polymarket/markets/{condition_id}/trades → · back to the catalog

The tape

The taker tape, as the order-book feed sent it

Trade prints in time order, recorded alongside the book. No wallet; one file a day in the archive.

Polymarket · API + Parquet archive · trades · taker tape

Trades

The taker tape alone — trade prints without the book.

Route
GET /v1/polymarket/events
Cadence
Continuous; archive one partition per UTC day
Coverage
API: /events?event_type=trade, up to 24 hours per call, from 2026-07-25. Archive: trades.parquet per UTC day from 2026-07-25 (CC BY 4.0) — the same prints, with condition_id, and price/size as Float64.
Rows
Free APIArchiveStreamMCP↓ trades.parquet sample · no key

Fields

FieldTypeDescription
token_idstringThe outcome token
tsintegerTrade time, epoch milliseconds
local_tsintegerReceive time, epoch milliseconds
seqintegerFeed sequence number; order trades on ts
event_typestringtrade
sidestringbuy | sell
pricenumberOutcome price, 0–1
sizenumberShares traded

Real rows

Trades · 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=trade&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/trades.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/trades.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

Live

Every big trade the moment it lands

Subscribe once; filter by market, wallet, size, side, role or the wallet’s P&L tier.

python
import json, os
from websockets.sync.client import connect

with connect("wss://stream.vike.io/v1/stream/polymarket",
             additional_headers={"X-API-KEY": os.environ["VIKE_API_KEY"]}) as ws:
    ws.send(json.dumps({"action": "subscribe", "id": "s1", "channel": "pm.trades",
                        "filter": {"min_usd": 1000}}))
    for message in ws:
        frame = json.loads(message)
        if frame["type"] == "ping":
            ws.send(json.dumps({"action": "pong"}))
        elif frame["type"] == "event":
            e = frame["event"]
            print(e["subject"]["title"], e["subject"]["outcome"], e["data"]["side"], e["data"]["usd"])
  • Filters: market, min_usd, pnl_tier, role, side, volume_tier, wallet.
  • pnl_tier top1 / top5 follows the best wallets; volume_tier whale the biggest.
  • Every event carries the market, the outcome, the wallet, the side, the size, the price and its dollar value.
  • Every channel, its fields and a subscription builder: WebSocket. Volume and buy and sell pressure as studies: Strategies.
FAQ

Polymarket trades FAQ

Where can I see all Polymarket trades?
Every on-chain trade since 2026-01-01 is in GET /v1/polymarket/markets/{condition_id}/trades, with the wallet behind it, and live on the pm.trades WebSocket channel. Your AI gets the same rows from polymarket_market_trades.
Can I see who made a Polymarket trade?
Yes. On-chain trades carry the proxy wallet, its Polymarket name or pseudonym where set, and whether it was the maker or the taker. The recorded order-book tape has no wallets.
How do I download Polymarket trade history?
The archive has trades.parquet for every UTC day since 2026-07-25: the taker prints of the order-book feed, one file a day, CC BY 4.0. The trades with wallets are paged from the API, newest first.