Skip to main content
Prefer Streaming for Production UseThis polling API is subject to rate limits. For production applications that need continuous market data, use the gRPC Market Data Stream instead. The streaming API provides real-time updates with lower latency and no rate limit concerns.

Endpoints

MethodEndpointDescription
GET/v1/orderbook/{symbol}Get L2 order book snapshot
GET/v1/orderbook/{symbol}/bboGet best bid/offer
No Participant ID RequiredThese endpoints only require Auth0 JWT authentication with read:marketdata scope. You do not need to provide the x-participant-id header or complete KYC onboarding to access order book data.

L2 Order Book

The L2 (Level 2) order book provides aggregated price levels showing the total quantity available at each price point. This is useful for:
  • Understanding market depth at different price levels
  • Analyzing liquidity distribution
  • Building trading strategies based on order book imbalance

Request Parameters

ParameterTypeRequiredDescription
symbolstringYesInstrument symbol (e.g., “tec-nfl-sbw-2026-02-08-kc”)
depthintegerNoNumber of price levels to return (default: 3, max: 10)

Response Fields

FieldTypeDescription
symbolstringInstrument symbol
bidsarrayBid side of order book (sorted by price descending)
offersarrayOffer/ask side of order book (sorted by price ascending)
statestringCurrent trading state of the instrument (optional)
statsobjectMarket statistics (last trade, OHLC, etc.)
transactTimedatetimeServer timestamp of the data

Book Entry Structure

Each entry in the bids and offers arrays contains:
FieldTypeDescription
pxstringPrice level
qtystringTotal quantity at this price

Best Bid/Offer (BBO)

The BBO endpoint returns only the top of book - the best (highest) bid and best (lowest) offer. This is the most efficient way to get current market prices.

Response Fields

FieldTypeDescription
symbolstringInstrument symbol
bestBidobjectBest bid (highest buy price)
bestOfferobjectBest offer (lowest sell price)
spreadstringSpread in price units (best_offer.px - best_bid.px)
midPricestringMid price ((best_bid.px + best_offer.px) / 2)
statestringCurrent trading state (optional)
transactTimedatetimeServer timestamp
Instrument State Tracking: The state field in order book and BBO responses is optional. The preferred approach is to use ListInstruments to get and cache the initial state, then subscribe to the instrument state change subscription for real-time state updates.

Instrument States

Instruments follow the primary lifecycle: PENDING → OPEN → CLOSED → EXPIRED → TERMINATED. Instruments may also be SUSPENDED or HALTED during their lifecycle.

Primary State Flow

State                                              Description
PENDINGInitial state for a newly created instrument which has not yet begun trading. Clients will receive a PENDING → OPEN state change notification but will not see PENDING in the order book.
OPENIn this state, the instrument is open for continuous order entry and matching.
CLOSEDIn this state, orders can not be entered, modified, or canceled, and no matching occurs. Any existing Day orders will be expired.
EXPIREDAn instrument moves to this state when its Expiration Date/Time is reached. In this state, any resting orders are expired and no new orders can be entered.
TERMINATEDWhen an instrument’s Termination Date is reached, the order book is removed from the matching engine, orders are canceled, and positions are closed. Historical data will still remain in Polymarket US ledgers.

Exception States

State                                              Description
SUSPENDEDOrders can be canceled but no matching occurs, and no order entry or modification is allowed.
HALTEDThis state is similar to SUSPENDED, with the exception that orders cannot be canceled.

Other Possible States

State                                              Description
PREOPENOrders can be entered and modified, but no matching occurs. When the instrument transitions to an OPEN state, the orders entered during PREOPEN will match at a single opening price that is automatically determined by an algorithm that is designed to maximize the volume traded at the open.
MATCH_AND_CLOSE_AUCTIONThis state is similar to PREOPEN, with the exception that matching will occur upon the transition of this state to any other state. This state is useful if you want matching to occur at the end of the state, but you don’t want the instrument to be open after.

Example Usage

Get L2 Order Book

curl -X GET "https://api.preprod.polymarketexchange.com/v1/orderbook/tec-nfl-sbw-2026-02-08-kc?depth=5" \
  -H "Authorization: Bearer YOUR_TOKEN"

Get BBO

curl -X GET "https://api.preprod.polymarketexchange.com/v1/orderbook/tec-nfl-sbw-2026-02-08-kc/bbo" \
  -H "Authorization: Bearer YOUR_TOKEN"

When to Use

Use CaseRecommended API
Continuous market data feedgRPC Market Data Stream
One-time snapshot for displayREST Order Book (this API)
Building a trading UIgRPC Market Data Stream
Quick price checkREST BBO endpoint
Streaming First ArchitectureFor any use case requiring more than occasional snapshots, use the streaming API. It provides:
  • Real-time updates as they happen
  • No rate limiting concerns
  • Lower latency than polling
  • Reduced API calls and infrastructure load