Comparison August 5, 2026

Real-time Polymarket data: official websockets vs. subgraphs vs. node streams

Polymarket's own websockets are real-time but partial. Subgraphs have the data but index late. Node streams are fast but costly. A comparison.

Polymarket gives you real-time access to some of its data — order book changes, your own fills, sports scores, new-market signals — but not to the thing flow traders want most: the platform-wide trade tape and money flows. For those, the usual answers are subgraphs (complete but late), raw node streams (fast but expensive and undecoded) — or a purpose-built feed. Here is an honest map of the four routes and what each one actually delivers.

What Polymarket itself streams in real time

The official CLOB websocket is genuinely real-time, and for running your own orders it is exactly the right tool. Subscribe to a market and you get the order book snapshot, then live price_change, tick_size_change, and last_trade_price events. An authenticated user channel pushes your own orders and fills as they happen. Beyond the CLOB there are real-time feeds for sports game state and platform events like new-market creation.

Now the gaps. last_trade_price tells you that a trade printed in a market you subscribed to — not who traded, with whom, or their history; and you must subscribe market by market. The user channel streams your trades only. And money flows — deposits, transfers, redemptions — appear in no official feed at all. The full attributed tape (every fill with both wallets) simply is not on offer, at any latency.

Subgraphs and indexers: complete, but after the fact

The indexing route — Goldsky, Dune, and similar — works from the other end: read confirmed blocks, decode the events, load them into a queryable store. The completeness is excellent; the timing is the problem. Your query result is always confirmation time plus indexing delay behind reality: minutes for a healthy low-latency pipeline, hours for batch-oriented platforms like Dune. For analytics, backtests, and dashboards that is perfectly fine. For reacting to a trade, it is disqualifying — by the time an indexer can show you the panic sell that cost one wallet $62K, the order book has already healed.

Two structural caveats came up in practice. Indexing pipelines degrade — lag spikes and gaps were a recurring pain in Polymarket’s own subgraph era. And that era is over: with the April 2026 v2 contract migration, Polymarket stopped using subgraphs, and the old public endpoints now return incomplete or incorrect data — Goldsky’s recommended replacement is its paid pipeline product. The free-public-subgraph option quietly ceased to exist.

Node streams: real-time and mempool, at a price

The third route skips indexing entirely: subscribe to a node provider’s websocket — Alchemy is the usual choice — for contract logs as blocks land, and for pending transactions from the mempool before they land. This is the only route of the three that reaches pre-confirmation data, and latency-wise it is the real thing.

The costs are real too:

  • You decode everything yourself. What arrives is raw logs and raw calldata. Turning that into “wallet X bought 500 NO shares at $0.95 from wallet Y” means reimplementing Polymarket’s contract layer — exchanges, proxies, the token registry — and keeping it current through migrations like April’s.
  • Per-event pricing. Provider websockets bill by compute credits, per event delivered. Polymarket’s full event flow is a firehose; subscribing to all of it turns the credit meter into a second trading loss.
  • Relay overhead. Your events route through the provider’s infrastructure — in practice up to ~100ms of added delay, plus best-effort mempool coverage.

The fourth route: a purpose-built stream

Polyflux is what you get when the node-stream route is done once, properly, and sold as a service: every trade, deposit, transfer, and resolution event on the platform, already decoded — wallets, amounts, prices, maker/taker roles — delivered from the mempool over one websocket, on a flat plan.

To keep the comparison honest, here is what it does not do: it does not stream order book depth (the official websocket is the right tool for that), it has no sports feeds, and it is a data feed, not a trading API — you still place orders through the CLOB. It covers exactly the two rows the other routes leave open: the attributed trade tape and money flows, in real time.

The comparison, in one table

Official websocketsSubgraphs / indexersNode streams (e.g. Alchemy)Polyflux
Order book changesreal-timenodecode yourselfno
Your own orders & fillsreal-timelatedecode yourselfreal-time (in the tape)
New-market / sports signalsreal-timelateno / decodeno
All trades, with walletsnocomplete, but latereal-time, undecodedreal-time, decoded
Money flows (deposits, transfers)nopartial, latereal-time, undecodedreal-time, decoded
Mempool (pre-confirmation)nonoyesyes (~3s head start)
Cost modelfreefree tier fading → paid pipelinescredits per eventflat plan

Which one to use

Match the tool to the job. Building dashboards or research? An indexer — the delay does not matter, and SQL over history is a gift. Running your own orders? The official websockets — nothing beats a free, native, real-time channel for your own account. Reacting to other people’s flow — copy-trading, whale alerts, flow-based strategies? Then you need the attributed tape at blockchain level, and the only question is whether you build it or buy it.

Building it means a node (or a node provider), the decoding layer, and the maintenance treadmill — a treadmill that is real: anyone running their own decoders had to ship a contract-era migration in April. Buying it is the fourth column. The 24-hour trial is the quickest way to feel the difference between querying what happened and watching it happen.

Frequently asked questions

Does Polymarket have a real-time API?
Yes, for some data. The official CLOB websocket streams order book snapshots and updates, price changes, and last-trade prices for markets you subscribe to, plus your own orders and fills on an authenticated channel. There are also feeds for sports scores and new-market events. What it does not stream is the platform-wide attributed trade tape or money flows.
Can I get all Polymarket trades from a subgraph?
Historically yes — but with two catches. Indexers deliver trades only after on-chain confirmation plus their indexing delay, so the data is for analysis, not reaction. And since Polymarket's April 2026 contract migration, the old public subgraphs return incomplete data; Goldsky now points users at its paid pipeline product instead.
Is Dune good for Polymarket data?
For analytics, yes — SQL over the full history is exactly what Dune is for. For anything real-time, no: data lands hours behind the chain, which is several eternities after the trade you wanted to react to.
Can I stream Polymarket trades through Alchemy?
Yes — subscribe to contract logs for confirmed events and to pending transactions for the mempool. The trade-offs: you decode Polymarket's contracts yourself, websocket events are billed in compute units (which adds up fast at Polymarket's volume), and the relay adds up to ~100ms of latency.
What does Polyflux not cover?
Order book depth (use the official CLOB websocket for that), sports feeds, and order placement — it is a data feed, not a trading API. What it covers is the part no other route delivers decoded and in real time: every trade with both wallets, plus money flows, from the mempool.
What is the fastest way to see a Polymarket trade?
From the mempool, before it confirms on-chain — roughly 3 seconds before any confirmed-data source can see it. That requires either a node-provider's pending-transaction stream plus your own decoding, or a purpose-built feed like Polyflux that delivers decoded trades from the mempool over one websocket.
← All articles