An order book is a live list, not a completed trade
Polymarket uses a Central Limit Order Book, or CLOB, in which prices emerge from orders submitted by market participants rather than being set by the platform. Each outcome has a tradable outcome asset and its own book of resting interest. The book groups open buy and sell orders into price levels, so a reader can see what is currently offered on both sides. This distinction is foundational: an entry in the book records an order that remains available for matching. It does not, by itself, prove that a trade occurred, that the whole quoted size remains available a moment later, or that another order will receive the same execution.
The public order-book response identifies the market and outcome asset, then returns arrays of bids and asks. Each level contains a price and a size. The same response can include a timestamp, a state hash, the minimum order size, the permitted price increment, the negative-risk flag, and the last trade price. Those fields describe the snapshot and the trading constraints around it; they do not turn the snapshot into a transaction record. The state hash is especially useful when comparing reads because a changed hash indicates that the book state changed. A careful reading therefore anchors every observation to the correct outcome identifier and to a particular book state rather than treating a detached price as complete evidence.
Bids and asks describe opposite sides of available interest
A bid is an open buy order: it states the price a participant is willing to pay for the outcome asset and the size available at that level. An ask is an open sell order: it states the price a participant is willing to accept and the corresponding size. The highest bid is the most competitive resting buy price, while the lowest ask is the most competitive resting sell price. These are called the best bid and best ask. In the documented order-book representation, bids are ordered by ascending price and asks by descending price, which places both best prices at the end of their respective arrays. Readers should follow that documented ordering instead of assuming that the first array item is always the best quote.
The side of an incoming order determines which resting quotes matter. An immediate buy meets available asks, beginning with the lowest ask; an immediate sell meets available bids, beginning with the highest bid. That is why a central displayed price should not be confused with an executable quote. A buyer does not automatically purchase at the midpoint, and a seller does not automatically receive it. The relevant starting point is the opposite side of the book. Even then, the best quote describes only the first available level. If the incoming size is larger than that level, execution can continue through additional levels, each with its own price and available size. Reading the top quote without its size gives only part of the picture.
Spread and displayed price answer different questions
The spread is the difference between the best ask and the best bid for a specific outcome asset. Polymarket exposes a public spread endpoint that returns this difference for a token identifier, while the full order-book endpoint provides the underlying price levels. The spread summarizes the distance between the two most competitive resting sides; it does not show how much size exists at either side or farther into the book. A narrow spread means those top prices are close together, while a wider spread means they are farther apart. This is a description of the visible book state, not a forecast and not a guarantee that a particular amount can be executed without reaching another level.
Polymarket's conceptual documentation distinguishes the displayed market price from the prices available to a buyer or seller. Ordinarily, the displayed price is the midpoint between the best bid and best ask. When the spread is wider than ten cents, the interface shows the last traded price instead. Neither convention means that a new order will fill at the displayed number. The midpoint is a calculation between two quotes, while the last traded price records an earlier match. The current ask remains the relevant top quote for an incoming buy, and the current bid remains the relevant top quote for an incoming sell. Careful readers label each number by function: midpoint, last trade, best bid, best ask, or confirmed execution price.
Depth connects price levels to executable size
Depth is read from the sequence of price-and-size levels, not from the best quote alone. On the ask side, it shows how much resting sell size is available at the lowest ask and at progressively higher prices. On the bid side, it shows how much resting buy size is available at the highest bid and at progressively lower prices. To examine a contemplated size, a reader can accumulate level sizes from the best price outward until reaching that amount. The resulting set of levels describes the visible liquidity that would need to be matched. This is an interpretation of the published levels, and it remains tied to the snapshot because open orders may be matched or cancelled as the book changes.
Depth also explains why the requested limit and the final mix of execution prices are separate facts. An order that can match more than one level may receive fills at several prices, provided those prices satisfy its limit and execution rules. The book's minimum order size and price increment are additional constraints exposed with the snapshot and should be kept distinct from depth itself. Minimum size governs whether an order amount is acceptable; the price increment governs valid price steps; depth describes the resting size across those steps. A disciplined record therefore preserves the outcome identifier, side, requested size, limit, book timestamp or hash, and later fill evidence as different fields. Combining them into a single label such as market price erases information needed to explain execution.
A submitted order is not the same as a confirmed fill
Polymarket documents all orders as limit orders at the protocol level. What is commonly called a market order is a limit order priced to trade immediately against resting liquidity. A conventional limit order can instead remain on the book until another order matches it, subject to its lifetime and other instructions. A Good Till Cancelled order can remain active until it fills or is cancelled, while a Good Till Date order uses a specified expiration. For immediate behavior, Fill and Kill matches the liquidity currently available and cancels any remainder; Fill or Kill requires the complete requested amount to execute immediately or the order is cancelled. These instructions determine how unmatched size is handled, but submission still is not proof of a fill.
The order response provides the evidence needed to keep those states apart. An accepted order can be reported as live when it is resting, matched when it immediately meets resting liquidity, or delayed when it is marketable but subject to a matching delay. When an order fills fully or partially, the documented response associates resulting trade identifiers with it and may also include transaction hashes. Those records are stronger evidence of execution than the request, a successful submission message, or a prior book snapshot. A careful review therefore follows a sequence: identify the correct outcome, read both sides and their depth, note the spread and constraints, record the submitted instructions, and then verify the response and resulting trades. That sequence explains what happened without converting available quotes into fills that were never confirmed.
This article was prepared with AI assistance and completed with automated review for structure, source use, claim safety, and bilingual consistency.
Sources and further reading
- Prices & Orderbook - Polymarket Documentation
- Prices and Order Books - Polymarket Documentation
- Get order book - Polymarket Documentation
- Get spread - Polymarket Documentation
- Place Orders - Polymarket Documentation
See the workflow in context.
The walkthrough connects these concepts to the PolyRust interface.
Read the walkthrough