API · Referenz
Der CLOB (Central Limit Order Book) unter clob.polymarket.com ist der Ort, an dem Orders
ruhen und matchen. Du liest das Buch, Preise und Tick-Size ohne Auth und handelst
(Orders platzieren/stornieren, deine Balance lesen) mit API-Zugangsdaten und Signierung.
Das ist die CLOB-V2-Referenz – das Collateral ist pUSD, Gebühren sind on-chain, und
Maker zahlen null.
Das Orderbuch lesen (keine Auth)
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
client = ClobClient(host="https://clob.polymarket.com", chain_id=137) # read-only: no key
book = client.get_order_book(token_id)
mid = client.get_midpoint(token_id)
print(book.bids[0].price, book.asks[0].price, mid)
// polymarket_client_sdk_v2 (official, repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::request::OrderBookSummaryRequest;
let client = Client::new("https://clob.polymarket.com", Config::default())?;
let book = client.order_book(&OrderBookSummaryRequest::builder().token_id(token_id).build()).await?;
curl -s "https://clob.polymarket.com/book?token_id=$TOKEN_ID"
Beispiel-Antwort
{
"market": "0x...",
"bids": [ { "price": "0.62", "size": "1400" }, { "price": "0.61", "size": "900" } ],
"asks": [ { "price": "0.64", "size": "1100" }, { "price": "0.65", "size": "2000" } ]
}
Read-Endpunkte
| Endpunkt | Gibt zurück |
|---|---|
GET /book?token_id= | Vollständiges Orderbuch (Bids / Asks). |
GET /price?token_id=&side= | Bester Bid oder Ask. |
GET /midpoint?token_id= | Mid = (bester Bid + bester Ask) / 2. |
GET /spread?token_id= | Bester Ask − bester Bid. |
GET /tick-size?token_id= | Minimaler Preisschritt (runde deinen Preis darauf). |
Die Limits sind hoch: CLOB ~9.000 Requests / 10 s, /book und /price 1.500 / 10 s,
und Über-Limit-Requests werden gedrosselt, nicht abgelehnt. Mehr zu 429s.
Eine Order platzieren & stornieren (Auth)
Ein Aufruf baut, signiert (das V2-Order-Struct) und postet deine Order. Du wählst einen Order-Typ:
| Typ | Verhalten |
|---|---|
GTC | Good-Till-Cancelled – ruht auf dem Buch, bis ausgeführt oder storniert. |
GTD | Good-Till-Date – ruht bis zu einem Ablaufzeitstempel. |
FOK | Fill-Or-Kill – die ganze Order sofort ausführen oder stornieren. |
FAK | Fill-And-Kill – sofort ausführen, was geht, den Rest stornieren. |
from py_clob_client_v2 import (ClobClient, OrderArgs, OrderType,
PartialCreateOrderOptions, Side, OrderPayload)
# authenticated client (creds from create_or_derive_api_key - see Authentication)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PK, creds=creds)
resp = client.create_and_post_order(
order_args=OrderArgs(token_id=token_id, price=0.62, side=Side.BUY, size=10),
options=PartialCreateOrderOptions(tick_size="0.01", neg_risk=False), # read both off the market
order_type=OrderType.GTC, # GTC, GTD, FOK or FAK
)
# resp -> {"success": true, "orderID": "0x...", "status": "live"}
client.cancel_order(OrderPayload(orderID=resp["orderID"])) # cancel
tick_size des Marktes ("0.01" oder "0.001") und setze neg_risk=True für
Multi-Outcome-„Negative-Risk“-Märkte – lies beides von Gamma ab (orderPriceMinTickSize,
negRisk), bevor du signierst. Außerdem: Die Mindest-Order-Größe ist 5 Anteile, und dein Preis
muss bereits auf die Tick gerundet sein, sonst wird die Order abgelehnt.nonce,
feeRateBps, taker und expiration fallen und fügte timestamp,
metadata und builder hinzu; die Exchange-EIP-712-Domain-Version ist "2".
Gebühren werden on-chain beim Match erhoben – Maker zahlen 0, nur Taker zahlen.
Vor dem Handeln musst du pUSD + Conditional Tokens für die drei V2-Contracts genehmigen
(siehe den Allowance-Fix).Gebühren: nur Taker zahlen, und der Satz krümmt sich
Maker werden nie belastet. Taker zahlen eine Gebühr, die nicht flach ist – sie skaliert mit der Unsicherheit des Marktes und variiert je Kategorie. Die Formel:
fee = shares × feeRate × p × (1 - p) # p = share price, 0..1
Der p·(1-p)-Term bedeutet, dass die Gebühr bei 50/50 ihr Maximum erreicht und zu den 1-¢- und
99-¢-Rändern hin schrumpft – ein nahezu sicheres Ergebnis ist also günstig zu nehmen, ein Münzwurf teuer. Taker-
feeRate je Kategorie:
| Kategorie | Taker-feeRate |
|---|---|
| Krypto | 0,07 (7 bps) – der höchste |
| Wirtschaft / Kultur / Wetter | 0,05 |
| Finanzen / Politik / Tech / Mentions | 0,04 |
| Sport | 0,03 |
| Geopolitik & Weltgeschehen | 0 – gebührenfrei |
Lies den Live-Satz je Token mit GET /fee-rate-bps?token_id=, statt ihn zu hardkodieren; Gebühren
runden auf 5 Dezimalstellen (min. 0,00001 pUSD). Dass Maker null zahlen, ist der Grund, warum die meisten vorteilslosen Bots quoten statt nehmen.
Negative-Risk-Märkte (Multi-Outcome)
Multi-Kandidaten-Events („Wer gewinnt die Wahl?“) sind Neg-Risk-Märkte: Ihre Outcomes sind
verknüpft, ein No-Anteil in einem Outcome wandelt sich also über den Neg Risk Adapter in einen Yes-Anteil in jedem anderen um
– kapitaleffizient, aber mechanisch anders. Sie laufen auf anderen Contracts
als Binärmärkte, du musst also neg_risk=True in den Order-Optionen übergeben (lies
das negRisk-Flag des Marktes von Gamma ab). Lässt du es weg, wird die Order gegen die falsche Börse
signiert und abgelehnt.
Conditional Tokens: Split, Merge, Redeem (jenseits des Buchs)
Unter jedem Markt liegt das Conditional Token Framework (CTF). Outcome-Tokens sind ERC-1155- Tokens, und jedes Yes/No-Paar ist durch genau 1,00 $ pUSD gedeckt, das im CTF-Contract gesperrt ist. Das gibt dir drei Primitive, die das Orderbuch allein nicht bietet:
| Operation | Was sie tut | Warum ein Bot sie nutzt |
|---|---|---|
| Split | 1 $ pUSD sperren → 1 Yes + 1 No minten | Bestand schaffen, ohne den Spread zu kreuzen; beide Seiten quoten. |
| Merge | 1 Yes + 1 No burnen → 1 $ pUSD zurückgewinnen | Ein gehedgtes Paar sofort verlassen – kein Warten auf Auflösung, keine Taker-Gebühr. |
| Redeem | Nach der Auflösung, gewinnender Token → 1,00 $ pUSD | Eine aufgelöste Position auszahlen (redeemPositions). |
Split und Merge sind die Basis der CTF-Arbitrage: Handeln Yes + No unter
1,00 $ auf dem Buch, kaufe beide und merge zurück auf 1,00 $; handeln sie über 1,00 $,
split 1 $ in ein frisches Paar und verkaufe beide. Die Einlösung rechnet über den
ConditionalTokens-Contract ab, sobald das Oracle das Ergebnis on-chain postet – eine Position zeigt
redeemable: true auf der Data API, wenn sie einlösbar ist.
Position-IDs leiten sich über getConditionId → getCollectionId → getPositionId ab.
Fortgeschritten: RFQ & Combo-Märkte (für ernsthafte Maker)
Jenseits des Orderbuchs betreibt Polymarket ein Request-for-Quote (RFQ)-System, besonders genutzt für Combo-Märkte – bestehende Märkte, die zu mehrteiligen zusammengesetzten Positionen gebündelt werden. Der Ablauf hat drei Phasen: Ein Taker fordert ein Quote an, Maker konkurrieren mit Quotes, und der gewählte Maker erhält einen Last Look, um vor der Ausführung zu bestätigen oder abzulehnen.
- Combos entdecken:
GET /v1/rfq/combo-markets(öffentlich;limit1–100,cursor,exclude). Jedes Combo exponiert zwei Position-IDs (Yes = Index 0, No = Index 1). - Als Maker quoten:
POST combos-rfq-api.polymarket.com/v1/maker/quotes(L2-Auth). Du erzeugst diequote_idselbst und sendestrfq_id,maker_address,signature_type, eine signierte Exchange-Order undprice_e6/size_e6als Sechs-Dezimal-Festkomma-Strings (die*_e6-Konvention vermeidet Float-Präzisionsverlust). - Last Look: Während das RFQ
AWAITING_MAKER_CONFIRMATIONist, antworteCONFIRM,DECLINEoder lass esTIMED_OUTlaufen.
RFQ-Zustandsmaschine: CREATED → COLLECTING_QUOTES → AWAITING_REQUESTER_ACCEPTANCE →
AWAITING_MAKER_CONFIRMATION → EXECUTING → FILLED (sonst FAILED / EXPIRED / CANCELED / REJECTED). Abonniere
das RFQ-WebSocket-Gateway für den Live-Status. Das ist eine Nische – die meisten Bots brauchen nur das CLOB-Buch oben –, aber so wird
mehrteilige und Combo-Liquidität bepreist.
Balance & Allowance prüfen
client.get_balance_allowance(...) # collateral (pUSD) and conditional-token allowances
Zeigt dies null Allowance, genehmige pUSD/CTF für die V2-Exchange-Contracts, bevor du orderst.
outcomes-Array (Gamma gibt es zurück, und
clobTokenIds, als JSON-kodierte Strings, die du dekodieren musst) und mappe nach Namen.Weiter: Authentifizierung & Wallets · WebSocket: das Buch streamen · Einen CLOB-Fehler beheben.



