Polymarket CLOB API
Order books, prices and order placement on Polymarket's matching engine.
by Polymarket
Last updated
What it is
The trading half of Polymarket, and the only place its prices actually come from. The CLOB API at clob.polymarket.com serves the order book for an outcome token, the best bid and ask, the midpoint, the spread and the last traded price, in single and batch form — and then, behind authentication, takes orders, cancels them and reports your open ones.
The split from the Gamma API is not cosmetic. Reading a book here takes nothing at all; placing an order takes a wallet, a signed message, derived credentials, a per-request HMAC signature and collateral on Polygon. Those are two different products with two different sets of preconditions, which is why they are two cards.
Real-time comes as two WebSocket channels: a public market channel carrying book snapshots, price changes, last trade prices and tick-size changes, and an authenticated user channel carrying your own orders and fills.
Availability
Trading is blocked in the United States on this platform. Polymarket's international site says so in its own words and offers a US visitor view-only mode, directing them to Polymarket US — a separate entity operating as a CFTC-designated contract market, with its own app and its own API. The footer states plainly that the international platform is not regulated by the CFTC.
Nor is it only the United States: the jurisdictions above are the venue's reach as set out on the Polymarket card, which blocks the United Kingdom and most of western Europe as well. Where the venue does serve you, availability is a wallet question rather than a signup question. There is no KYC step in the documented flow: control of a Polygon address, a signature, and collateral are the whole of it. That also means there is no account to be refused, and no support desk that reviewed your case — the geoblock is applied to the order itself. Polymarket's Geographic Restrictions page, read on 4 October 2026, says orders submitted from blocked regions are rejected, lists which jurisdictions are blocked or close-only on the API as well as on the web app (the United States among them; Ireland is close-only on the web app alone), and documents GET polymarket.com/api/geoblock, which returns a blocked flag for the caller's location — the check to run before an order is signed, not after it fails.
For a developer this is the sharp edge worth knowing before you build: the read endpoints will answer you from anywhere, so a successful read proves nothing about whether you may trade what you just read.
Pricing
The API is free. The trades are not.
Polymarket charges takers only, and the fee is a curve rather than a rate: fee = shares × feeRate × price × (1 − price). The rate depends on the market's category — 0.07 for crypto, 0.05 for sports, economics, culture, weather and the general bucket, 0.04 for finance, politics, mentions and tech, and zero on geopolitical and world-event markets. Because of the price × (1 − price) term, the fee in dollars peaks at 50 cents and falls symmetrically toward both ends: on a 100-share crypto trade Polymarket's own table shows $1.75 at 50 cents and 33 cents at 5 cents or 95 cents. Makers pay nothing and are rebated a share of taker fees daily.
This card's figure is that general 0.05 rate expressed at its worst point — 1.25% of a dollar of payout on a fill at 50 cents. Read the category table before budgeting, because the spread between crypto and a geopolitical market is the whole fee.
Deposits and withdrawals carry no Polymarket fee, though the docs note that intermediaries may charge their own.
Markets & resolution
Resolution is the UMA optimistic oracle, not Polymarket's judgement. An outcome is proposed against a bond of roughly 750 pUSD — since September 2025 only by whitelisted addresses on markets where Polymarket applies UMA's proposer whitelist; there is a two-hour challenge window in which anyone may dispute; a dispute triggers a second proposal round, and a second dispute escalates to a UMA token-holder vote after a debate period of 24 to 48 hours. Polymarket's published timeline is about two hours undisputed and four to six days disputed.
Three consequences for code:
- A market that stops trading has not paid. Redemption happens after resolution, through the collateral adapter, and returns pUSD.
- A UMA vote can return "Unknown", in which case the market resolves 50/50 and both tokens redeem at 50 cents.
- Rules can be clarified after trading starts, through an on-chain bulletin board entry that voters are expected to weigh. The clarification cannot change the intent of the question, but it can change which real-world result counts.
Integrations
REST plus two WebSocket channels, with unified TypeScript and Python SDKs published by Polymarket and an OpenAPI description linked from the docs. Authentication is two layers: an EIP-712 ClobAuth message signed by the wallet (L1) to create or derive API credentials, then HMAC-SHA256 request signing with a key, secret and passphrase (L2). The signed payload is timestamp plus method plus path plus the exact body bytes, which is the usual place an implementation goes wrong.
Price history is still here, and on its way out. GET /prices-history, keyed by token ID, and a batch form for up to 20 tokens are in the CLOB OpenAPI description and the rate-limit table — 1,000 requests per 10 seconds, read on 1 October 2026. Polymarket's changelog of 4 September 2026 names GET /v2/prices-history on the Data API as the replacement, with explicit window forms and second-based buckets, and gives the CLOB route no retirement date. New code belongs on the v2 route.
Limitations
- No US trading on this platform, whatever the endpoint will answer.
- Rate limits are per IP, and over them a request waits rather than fails. The published table is enforced by Cloudflare per IP address and per endpoint —
POST /orderat 5,000 per 10 seconds burst and 120,000 per 10 minutes sustained, read on 27 September 2026 — and excess requests are delayed or queued, so the first symptom is latency, not an error. The builder tiers add only "Standard" and "Highest", with no figure. Why your bot gets throttled has the rest of the table. - No test environment. There is no sandbox or testnet for the production CLOB; rehearsal means small live orders.
- Fees are a formula with a per-category coefficient, so a single number on any comparison page — including this one — is an approximation.
- The matching engine restarts. Polymarket documents maintenance windows and a post-restart post-only mode, which a naive bot will read as rejected orders.
- No historical order book. You can reconstruct prices from the history endpoint, but the depth that produced them is not retained.
Alternatives
For discovery and market metadata against the same venue, use the Polymarket Gamma API — it is the other half of the same integration and needs none of the signing above. If the trading side has to be a US-regulated exchange with identity verification, that is the Kalshi API. For an on-chain book with maker rebates and a much shorter market lifespan, see the Limitless API.
Trades by wallet, positions, holders and leaderboards are on the Polymarket Data API, which needs no key either.
Specs
- Interfaces
- API, websocket, Python
- Export
- JSON
- Available in
- Asia, Latam
- KYC required
- No
- Market subjects
- Politics, Sports, Crypto, Macro, Culture, Business
- Resolved by
- Each market carries its own rules and named source; the outcome is proposed to the UMA optimistic oracle and, if contested, decided by a UMA token-holder vote.
- Maker fee
- None
- Platforms
- Library
- AI features
- None
- Capabilities
- Order book, Automation, Live trading, Portfolio tracking
- Pricing verified
- Availability verified
- Economics verified
- Markets verified
Also from Polymarket
Background
How this part of the sector works, rather than which product to pick.
- What each of Polymarket's APIs holds, and which one you need — Gamma, the CLOB, the Data API, four sockets and three hosts that move money, each keyed by a different ID. What lives where, and what Polymarket US shares.
- Why your bot gets throttled, and what the limit is counted against — Kalshi meters tokens per account tier; Polymarket's order book meters requests per IP and queues the excess. What each counts, and what the libraries assume.
- What a trade actually costs on a prediction market — Venues publish trading fees in four incompatible units, so 3.00% on one can be cheaper than 1.75% on another. How to convert them, and what else takes a cut.
Also worth comparing
- Futuur API — One question, two order books — play money and real money, selected per request.
- Limitless API — REST and WebSocket for markets, books, candles and trading on Base.
- PredictWidget — A free two-line script that drops Polymarket's most active markets into an article.
- Kalshi API — REST, WebSocket and FIX access to a CFTC-regulated event exchange.
- Manifold API — Every read is keyless, the server is MIT-licensed, and the currency is play money.
- Goldsky Polymarket Datasets — Polymarket's on-chain fills and positions, backfilled and streamed into your own database.
Named as a replacement for
FAQ
Can I read Polymarket order books without an account?
Yes. The book, price, midpoint, spread and last-trade endpoints answer unauthenticated requests, and a call to the sampling-markets endpoint returned live book data on 19 September 2026 with no credentials. Authentication starts at order placement and at anything account-scoped.
What does it take to place an order through the CLOB API?
A Polygon wallet, an EIP-712 signature that proves you control it, API credentials derived from that signature, an HMAC-SHA256 signature on every request, and a pUSD balance. There is no identity check anywhere in that chain, and no US trading.
What is pUSD?
Polymarket's collateral token — an ERC-20 on Polygon, six decimals, backed by USDC and wrapped and unwrapped through onramp and offramp contracts. Every trade settles in it, and winning outcome tokens redeem into it at one dollar each.
How much does a fill cost on Polymarket?
Takers pay a fee computed as shares times a per-category rate times price times one minus price. The rate is 0.04 for politics, 0.05 for sports and most other categories, 0.07 for crypto and zero on geopolitical markets. At 50 cents that is 1.25¢ a share on most categories and 1.75¢ on crypto. Makers are never charged.