Skip to main content
Use Polymarket’s real-time feeds to react as market conditions and related data change. They keep the public market data your application depends on current without repeated polling. For authenticated order and trade updates, see Real-Time Order Updates.

Market Stream

Use the market stream to keep your application in sync with changes to a market’s order book and trading state.
Given a PublicClient or SecureClient, subscribe to the market topic with one or more token IDs:

Order Book

Price Change

Last Trade Price

Tick Size Change

Enable customFeatureEnabled to include top-of-book and market lifecycle updates:

Best Bid and Ask

New Market

Market Resolved

Sports Stream

Use the sports stream to keep live game information current alongside sports markets. Updates arrive when a game goes live, its score or period changes, or it ends. NFL and CFB updates can also reflect possession changes.
Sports data is provided for informational purposes only. It may be delayed, contain errors, or omit recent events. Polymarket does not provide trading or investment advice, and this data should not be used as the basis for a trading decision.
Given a PublicClient or SecureClient, subscribe to the sports topic to receive every game update:
score is a combined "<home>-<away>" string, not separate home and away fields.

Period Values

The meaning and format of a period depend on the sport:

Game Status Values

Status values vary by sport and are case-sensitive:

Reference Prices

Stream crypto, equity, and time-weighted average reference prices through Polymarket. Authenticate, select the symbols you need, and process historical prices and live updates.
Reference price subscriptions require authentication. Existing RTDS integrations should follow the migration guide.
Use lowercase symbols. See the PolyBolt overview for crypto and TWAP lists, and the equity catalog below for equity symbols.

Historical Snapshot

Each new subscription provides a snapshot of the preceding two minutes of prices and live updates. Seed local state from the snapshot, then apply the latest price. Applications that only need live prices can ignore the snapshot.

Crypto Prices

Stream crypto reference prices in USD to keep prices current alongside related markets.
Call client.subscribe with an authenticated SecureClient from @polymarket/client 0.11.0 or later. See Wallet Integrations to create the client.
events: CryptoPriceEvent[]
For live prices only, skip events whose type is "subscribe".

Equity Prices

Stream reference prices for stocks, ETFs, forex pairs, precious metals, and commodities.
Call client.subscribe to subscribe to the prices.equity topic and your chosen symbols with an authenticated SecureClient.
events: EquityPriceEvent[]
For live prices only, skip events whose type is "subscribe".

Supported Equity Symbols

Market Hours

When the market for an asset is closed, the stream continues with its last known price and marks that value as carried forward. During market hours, prices can update up to five times per second for each feed.

TWAP Prices

A time-weighted average price (TWAP) represents an asset’s price across a lookback window. Stream Chainlink-computed crypto TWAPs with a fixed 60-second window through Polymarket.
Call client.subscribe to subscribe to the prices.crypto.twap topic and your chosen symbols with an authenticated SecureClient.
events: CryptoTwapPriceEvent[]
For live prices only, skip events whose type is "subscribe". payload.value is already an exact decimal string. No E18 conversion is needed.Use a canonical symbol such as btcusd. The returned windowSeconds: 60 describes the lookback period, not the update interval. Use payload.timestamp to check price freshness.

Comments

Live comment and reaction streaming is being retired without a replacement streaming channel. Check below for the corresponding fetch method.
Create a public client and call client.listComments() to list comments for an event. This method does not provide live comment or reaction events.
page.items contains Comment objects. Check page.hasMore for more results and continue with pages.from(page.nextCursor).
One comment from page.items, serialized as JSON with selected fields shown.