See Polymarket
before everyone else.

Every trade below is real. Watch how fast you see it with mempool access, how long it takes to be mined on-chainValidators verify the transaction and add it to the Polygon blockchain. Displayed below as "Confirmed"., and when it finally appears on the official Polymarket APIFetched directly in your browser every 1 second from data-api.polymarket.com with a cache-busting parameter to ensure fresh data..

Realtime Polymarket trades
Connecting...
Waiting for trade...
Waiting for trade...
Waiting for trade...
Why the mempool

The chain is old news.

The mempool is where every trade appears after CLOBCentral Limit Order Book — Polymarket's off-chain matching engine that pairs buy and sell orders before submitting them to the blockchain. matched orders together. By the time it reaches the public API, you're already seconds behind.

Millisecond delivery

Trades arrive the instant they enter the Polygon mempool — typically 1.5s before on-chain confirmation and 6–10s before appearing on the Polymarket API.

📊

Full trade data

Wallet, counterparty, size, price, side, role, market, timestamps. Everything you need in a single event.

🔥

Spot trends across all markets

See every market at once in a single stream. Detect volume surges, whale entries, and coordinated moves as they happen — not after the fact.

📑

Observe real trading flow

See individual trades as they're submitted — not batched after they're mined. Perfect for researching wallet behavior, spotting patterns, and understanding how other traders really operate.

🏃

Good for copy trading

Follow any wallet in real time and react before the price moves. With some price aggression, you may even frontrun leader's maker orders.

💬

Looking for more?

Let us know what you'd like to see in the data and we'll consider adding it to your stream. Don't hesitate to reach out — our support team is extremely friendly and always happy to help. Get in touch.

Integrate in minutes

Connect once. Stream forever.

One WebSocket URL with your API key. JSON events flow in real-time. That's it — no SDK, no auth dance, no polling loop.

Get an API key
polyflux_client.py
import asyncio, json, websockets

URL = "wss://stream.polyflux.io/polymarket/<your_key>"

async def main():
    async with websockets.connect(URL) as ws:
        async for raw in ws:
            msg = json.loads(raw)
            if msg.get("type") != "events":
                continue
            for t in msg["events"]:
                if t.get("event_type") != "trade":
                    continue  # skip redeems / splits / merges
                # t.wallet_address, t.size, t.price,
                # t.operation_type, t.timestamp, ...
                print(t["wallet_address"],
                      t["operation_type"],
                      t["size"] * t["price"])

asyncio.run(main())
Message format

Every field. No surprises.

Each event is a single JSON object. Here's exactly what you'll see — and what every field means.

event.json
{
  "wallet_address":  "0xe5ce1a65c210e08d3ffbd94e28a61911700c7f3f",
  "asset_id":        "8110092957755367409636...34004408",
  "operation_type":  "buy",
  "size":            34.29,
  "price":           0.923,
  "counterparty":    "0x81ff15a2bc16e8bd9e9be99697eff32c94b9eaca",
  "wallet_role":     "maker",
  "tx_hash":         "0x0a80f632b59bfb131b8c6820...",
  "timestamp":       "2026-04-10T14:06:41.068529+00:00",
  "source":          "pending",
  "event_type":      "trade",
  "block_number":    0,
  "block_timestamp": null,
  "order_hash":      "0xb656965aaaf099364d2128...",
  "order_hashes":    ["0xb656...", "0x38d6..."],
  "fee":             0.0,
  "intent_adjusted": false,
  "log_index":       null,
  "exchange":        "NegRiskExchange"
}
wallet_addressstr
Wallet executing this side of the trade. Track behavior, build leaderboards, or follow specific actors.
asset_idstr
Decimal ERC-1155 token ID (same as the CLOB token ID). Maps to a market outcome.
operation_typestr
"buy" or "sell". The action this wallet is taking.
sizefloat
Number of shares (token units, NOT USDC).
pricefloat | null
USDC per share. null for split / merge / redeem / convert events.
counterpartystr | null
Wallet on the other side. Trades are emitted twice (once per participant). null for CTF position events.
wallet_rolestr | null
"maker" (resting order) or "taker" (crossing order). null for CTF position events.
tx_hashstr
Polygon transaction hash (0x-prefixed). Same hash for both legs — use to deduplicate or correlate.
timestampISO 8601
UTC timestamp when the event was processed.
sourcestr
"pending" (from mempool) or "confirmed" (from on-chain logs). Both are streamed.
event_typestr
"trade" (OrderFilled), "split", "merge", "redeem", or "convert".
block_numberint
Polygon block number. 0 for pending events, populated once confirmed.
block_timestampstr | null
ISO-8601 UTC of the containing block. null for pending events.
order_hashstr | null
EIP-712 order hash from the OrderFilled log (maker only, confirmed events).
order_hasheslist | null
Both candidate order hashes (CTF + NegRiskCTF). Present on pending trades only.
feefloat
Taker fee: in shares for buys, in USDC for sells. 0.0 for makers.
intent_adjustedbool
true when the taker's asset/op was flipped to reflect their original order intent.
log_indexint | null
Log index within the block. null for pending events.
exchangestr | null
"Exchange" or "NegRiskExchange". null if unknown.
Pricing

Simple plans. Same low latency.

Pay monthly. Cancel anytime.

Institutional
Custom
Funds, market makers, infra teams.
  • Multiple dedicated streams
  • Higher connection limits
  • SLA & dedicated nodes
  • Co-located endpoint options
  • Direct engineering channel
Contact sales

The market doesn't wait. Neither should you.

Get a key, paste a URL, see Polymarket move in real time.