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 90 seconds 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, and 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, Kalshi and ProphetX; 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: Use your API key

WebSocket connections authenticate with the same signed API key you use for the REST API. There is no separate stream credential. You sign the handshake with your private key during the upgrade; see Authentication. ParlayX issues API keys. 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 or the venue’s List Markets:
Polymarket, ProphetX and Limitless each address one outcome per entry, so you reach the other outcome by subscribing to its own id as a second entry. On Limitless the two are views of one shared orderbook, the NO book being the exact complement of the YES book, and both stream accurately. Kalshi is not like this: one ticker is one YES-priced book, and only the YES side is subscribable.

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 end to end. 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.