Skip to main content
The streaming API pushes live, normalized orderbooks to you over a single WebSocket connection. Subscribe to any market we support, and receive an initial snapshot followed by a continuous, gap-free stream of price-level changes — all in one message shape, regardless of which venue the market lives on. An optional trade channel streams the market’s public trade tape alongside the book.

How it works

  • One connection, many markets. Open a single WebSocket and subscribe to as many markets as you need (up to a per-connection cap, see limits). Open more connections to scale past the cap — an account can hold up to 20 simultaneous connections (200 subscriptions each). Close connections you no longer need to stay under the limit; dropped or unresponsive connections are cleaned up automatically within about a minute and stop counting against it.
  • One subscription per (market, channel). Each subscription you create gets a server-assigned subscriptionId. Every frame for that subscription carries the id — you route incoming frames to your local book by it.
  • Snapshot, then deltas. The first frame for a book subscription is a full snapshot. After that you receive delta frames carrying only the levels that changed. Apply them in order; the sequencing contract guarantees you never have to reconcile a gap yourself.
  • Optional trade tape. Subscribe with channels: ["trade"] (or ["book", "trade"]) to also receive one trade frame per fill on the market, from the moment you subscribe. Available on Polymarket; Limitless has no public trade feed, so trade subscribes there are rejected with UNSUPPORTED_CHANNEL.

Prices and sizes

Every market is normalized to one scale: A Level is { price, size }. You receive separate bids and asks arrays on a snapshot, and a flat list of changes on a delta where each change is { side, price, size } and size: 0 means that price level is now gone.

Step 1 — Get a stream key

WebSocket connections authenticate with a stream API key, distinct from your REST API key. Stream keys look like:
Stream keys are currently issued by ParlayX in a closed release. If you don’t have one yet and are interested in using this service, reach out to us.

Step 2 — Identify the markets you want

Each market you stream is described by a MarketStream — a small object keyed on venue. You build it from venue-native identifiers you already have, or that you get from the Markets API:
Limitless YES and NO are two views of one shared orderbook — the NO book is the exact complement of the YES book. You can subscribe to either or both; both stream accurately.

Step 3 — Connect and subscribe

Open the WebSocket, wait for the welcome frame, then send a subscribe. The Quickstart walks through a complete, runnable example for both venues. The full wire contract — every frame, the sequencing guarantees, limits, errors, and disconnects — lives in the WebSocket API reference, starting with authentication.
Using TypeScript? The official SDK ships a typed streaming client that handles the handshake, keepalive, and reconnect-with-resubscribe for you — see @parlayx/sdk/stream.