The CLOB hands you 1,000 markets and 1.82MB in a single response
Polymarket's CLOB returns 1,000 markets and 1.82MB per call. Minimum order is $15 on 962 of them, maker_base_fee 0 on all 1,000.
Polymarket's CLOB is the order book API, and it does not page politely. One call to clob.polymarket.com/markets on 20 August 2026 returned 1,000 markets and 1,823,355 bytes in 94ms, with a count field of exactly 1000 and a cursor pointing at the next slice.
Three things in that payload change how you would build against it, and none of them appear in Polymarket's marketing:
- Minimum order size is 15 on 962 of the 1,000 markets. Not 1, not a cent.
maker_base_feewas 0 on all 1,000. Every single one.- Minimum tick size is 0.01 on 968 of them, with 31 at 0.001 and one at 0.04.
What you get per call
| Measured 20 Aug 2026 | Value |
|---|---|
| Rows per response | 1,000 |
| Bytes per response | 1,823,355 |
| Response time | 94ms to 144ms across calls |
Cache-Control | public, max-age=30 |
| Active markets in that page | 936 of 1,000 |
| Paging | cursor, in next_cursor |
The cursor is base64. The value we received, aWQ6MjQ5Mzk2, decodes to id:249396. That is worth knowing because it tells you the cursor is an identifier position rather than a page number, so you cannot skip ahead by arithmetic. You follow it or you start again.
You also get 64 inactive markets in a page of 1,000. Filter on active yourself, because the endpoint will hand them to you.
Minimum order size is the field that kills small strategies
962 of the 1,000 markets carried minimum_order_size of 15. Another 34 carried 5. One carried 0, and two carried oddities at 14.96 and 14.97.
This is the number that quietly ends a lot of ideas. If you have modelled a strategy that takes a 2 cent edge on a 3 cent contract, you are not placing a $0.50 order to test it. The floor on most markets is $15 of notional, and your position sizing has to start there.
It also interacts badly with thin books. A market can show an attractive price and have less than $15 of depth behind it, in which case the minimum order size and the available liquidity are on opposite sides of the trade you wanted.
Tick size decides whether your edge is expressible
minimum_tick_size was 0.01 on 968 markets, 0.001 on 31, and 0.04 on one.
A one cent tick means prices move in whole cents. If your model finds an edge of half a cent, that edge cannot be expressed as an order on 968 of these markets. It is not a small edge, it is not an edge at all: you cannot bid it.
The 31 markets at 0.001 are the ones where fine pricing is possible, and the single market at 0.04 is a reminder to read the field rather than assume a constant. Any scanner that hardcodes a penny tick will be wrong on 32 of every 1,000 markets it touches.
maker_base_fee was zero on every market in the sample
All 1,000 markets in the page returned maker_base_fee: 0.
This matters because it is first-hand confirmation of something usually taken on trust from documentation. Polymarket charges makers nothing. Not a reduced rate, not a rebate that nets to nothing: the field itself is zero, on every market we looked at.
Set that against Kalshi, where the maker rate is contradicted by their own two documents, and the difference for anyone writing a market-making bot is enormous. On Polymarket you can compute a maker strategy's cost with certainty. On Kalshi you cannot, because no primary source establishes the number.
We are describing a 1,000-market sample from one page taken on one day. We have not audited every market on the venue and do not claim the field is zero everywhere forever.
The CLOB against Gamma, for the same job
They answer different questions and the shapes differ enough to break code.
| CLOB | Gamma | |
|---|---|---|
| Answers | what is on the book | what markets exist and their prices |
| Response shape | object wrapping data | bare JSON array |
| Paging | base64 cursor | numeric offset |
| Rows per call | 1,000 | your limit |
| Cache window | 30s | 300s |
| Tick size exposed | minimum_tick_size | orderPriceMinTickSize |
| Order minimum exposed | minimum_order_size | orderMinSize |
| Maker fee exposed | maker_base_fee | not present |
Both expose tick size and order minimum under different names, which is a common cause of a scanner reading one and assuming the other.
The price on the screen is not the price you pay
A market we pulled from Gamma on 20 August carried outcomePrices of ["0.1", "0.9"] and a bestAsk of 0.2, with spread reported as 0.2 and liquidity at 157.29.
Read that again. The outcome is displayed at 10 cents. The best ask is 20 cents. You would pay double the number on the screen, because the book is that wide and the displayed price is a midpoint or last, not an offer.
That is not an exotic case, it was the first market returned when we sorted by volume. Anyone computing edges from outcomePrices rather than bestAsk is computing a fantasy, and on a thin book the two can differ by 100%.
What we could not verify
- The
/bookendpoint. We calledclob.polymarket.com/bookwith a
token_id taken from a live market on 20 August and received HTTP 404. We do not know whether the path, the parameter name or the token we chose was wrong. Rather than describe depth-by-level from documentation we have not exercised, we are recording that we could not retrieve it.
- Whether
maker_base_feeis ever non-zero. Zero across 1,000 markets on
one day is evidence, not proof. The field exists, which implies it can vary.
- Rate limits. Never hit one. Never went looking. No figure to give.
- Order placement. Everything here is read-only. We have never signed or
submitted an order and will not describe that flow as though we had.
Questions people actually ask
What is the Polymarket CLOB? The central limit order book, and the API that exposes it. It is where the actual resting bids and asks live, as opposed to Gamma, which is a catalogue of what markets exist. One call returned 1,000 markets and 1.82MB on 20 Aug 2026.
What is the minimum order size on Polymarket? 15 on 962 of the 1,000 markets we sampled on 20 August 2026, and 5 on another
- Read
minimum_order_sizeper market rather than assuming, because the
value does vary and one market in the sample carried 0.
Does the Polymarket CLOB charge maker fees? maker_base_fee was 0 on all 1,000 markets we sampled on 20 Aug 2026, matching Polymarket's published position that makers are never charged. Takers pay by category, from 0.00 on geopolitical to 0.07 on crypto.
Why does the CLOB return so much data at once? Because it pages at 1,000 rows rather than a smaller default, which produced a 1,823,355 byte response in our test. Budget for that in memory and in your timeout: it arrived in 94ms on a good connection, but it is not a small object.
How do I page the CLOB? Take next_cursor from the response and pass it back as next_cursor on the following request. The value is base64 and decodes to an id position, so you cannot compute the next one yourself. Follow it until it stops advancing.
Should I use the CLOB or Gamma? Gamma to find out what exists and roughly what it costs, since it is smaller and simpler. The CLOB when you need tick size, order minimums or the maker fee field, and before you size any trade, because those three decide whether the edge you found is tradeable at all.
Sources
Field distributions on this page come from one 1,000-market page of the CLOB collected on 20 Aug 2026. That is a real sample, not the whole venue, and the proportions may differ on other pages.
- https://clob.polymarket.com/markets Polymarket CLOB markets endpoint. Called direct 20 Aug 2026 11:45 UTC. HTTP 200, 94ms, 1,823,355 bytes, count 1000, next_cursor aWQ6MjQ5Mzk2, Cache-Control public max-age=30.
- https://clob.polymarket.com/book Polymarket CLOB book endpoint. Called 20 Aug 2026 with a token_id query parameter taken from a live market. Returned HTTP 404. Recorded as not verified rather than described.
- https://gamma-api.polymarket.com/markets Polymarket Gamma API, used for the comparison figures. Called direct 20 Aug 2026 11:45 UTC.
- https://docs.polymarket.com/ Polymarket developer documentation, CLOB concepts and the published category fee schedule.