API · Referenz
Die Gamma API unter gamma-api.polymarket.com ist der „Katalog“ – so
entdeckst du Märkte und Events und erhältst die Token-IDs, die der CLOB zum Handeln braucht. Sie ist öffentlich,
keine Auth, du kannst also jeden Endpunkt jetzt sofort aus einem Browser oder per curl erkunden, ebenso wie die
Live-Tools auf dieser Seite.
- Basis-URL:
https://gamma-api.polymarket.com· keine Authentifizierung, read-only. - Rate-Limit: ~4.000 Requests / 10 s insgesamt (
/events~500,/markets~300). - Schritt 1 fast jedes Bots: einen Markt in seine Token-IDs verwandeln, dann auf dem CLOB handeln.
- Alles ist JSON. Drei wichtige Felder kommen als JSON-Strings zurück, die du erneut parsen musst (siehe unten).
Die Endpunkte, die du tatsächlich nutzt
| Endpunkt | Gibt zurück | Verwende ihn, um |
|---|---|---|
GET /markets | Märkte mit Metadaten, Live-Preisen und Token-IDs. | einen Slug zu Token-IDs auflösen; handelbare Märkte scannen. |
GET /events | Events (eine Gruppe verwandter Märkte) mit ihren Child-Märkten. | nach Thema browsen; Multi-Outcome-Karten rendern. |
GET /public-search?q= | Volltextsuche über Events und Märkte. | einen Markt finden, wenn du nur einen Namen kennst. |
GET /tags | Die Kategorie-Tags (Politik, Krypto, Sport …). | gültige tag_slug-Filter entdecken. |
Häufige Query-Parameter bei /markets und /events:
active=true, closed=false, slug=, tag_slug=,
order=volume24hr, ascending=false, limit= und offset= für die Paginierung.
GET /markets – Request und Response
Frag einen Markt per Slug ab. Du erhältst ein Array zurück (auch für einen einzelnen Markt), nimm also Element [0]:
curl -s "https://gamma-api.polymarket.com/markets?slug=will-it-rain-in-nyc-today" | jq '.[0]'
import requests, json
m = requests.get("https://gamma-api.polymarket.com/markets",
params={"slug": "will-it-rain-in-nyc-today"}).json()[0]
Eine gekürzte, annotierte Antwort (die Felder, die einen Bot interessieren):
{
"id": "519284",
"question": "Will it rain in NYC today?",
"slug": "will-it-rain-in-nyc-today",
"conditionId": "0x1f2e...c0", // the market id (NOT what you trade on)
"active": true, // listed and live
"closed": false, // not yet resolved
"acceptingOrders": true, // the CLOB is currently taking orders
"outcomes": "[\"Yes\", \"No\"]", // JSON string -> parse it
"clobTokenIds": "[\"7142...\", \"1098...\"]", // JSON string, aligned with outcomes
"outcomePrices": "[\"0.62\", \"0.38\"]", // JSON string, last prices
"bestBid": 0.61,
"bestAsk": 0.63,
"lastTradePrice": 0.62,
"volume24hr": 48213.5,
"endDate": "2026-06-16T00:00:00Z"
}
Die zwei Outcome-Token-IDs liegen in clobTokenIds. Sie sind das, worauf der
CLOB handelt – lies sie, und du kannst eine Order platzieren.
Der Fallstrick Nr. 1: JSON-kodierte String-Felder
Gamma gibt clobTokenIds, outcomes und outcomePrices als
JSON-kodierte Strings im JSON zurück, du musst sie also ein zweites Mal dekodieren. Und hardkodiere nie,
welcher Token „Yes“ ist: Lies das geparste outcomes-Array und mappe nach Namen, denn die Reihenfolge
ist nicht garantiert.
import requests, json
m = requests.get("https://gamma-api.polymarket.com/markets",
params={"slug": SLUG}).json()[0]
outcomes = json.loads(m["outcomes"]) # e.g. ["Yes", "No"]
token_ids = json.loads(m["clobTokenIds"]) # aligned with outcomes
prices = json.loads(m["outcomePrices"]) # aligned with outcomes
yes_token = token_ids[outcomes.index("Yes")]
print(yes_token, prices[outcomes.index("Yes")])
const r = await fetch(`https://gamma-api.polymarket.com/markets?slug=${SLUG}`);
const m = (await r.json())[0];
const outcomes = JSON.parse(m.outcomes);
const tokenIds = JSON.parse(m.clobTokenIds);
const yesToken = tokenIds[outcomes.indexOf("Yes")];
curl -s "https://gamma-api.polymarket.com/markets?slug=$SLUG" | jq -r '.[0].clobTokenIds | fromjson | .[0]'
Probiere es an einem echten Markt – füge einen Slug ein und zieh seine Token-IDs live:
Nach handelbaren Märkten scannen
Die typische Discovery-Query eines Bots fragt nach aktiven, offenen Märkten, meistbeschäftigt zuerst, in einer Kategorie:
GET https://gamma-api.polymarket.com/markets
?active=true&closed=false&order=volume24hr&ascending=false&limit=20&tag_slug=politics
Filtere das Ergebnis clientseitig auf Märkte, die wirklich handelbar sind, bevor du handelst:
# keep only markets the CLOB will accept orders on right now
tradeable = [m for m in markets
if m.get("active") and not m.get("closed") and m.get("acceptingOrders")]
Suche live (das ruft /public-search auf und lädt dann die Token-IDs je Markt):
Paginierung und Aktualität
- Paginierung: Füge
limitundoffsethinzu und laufe, bis du eine kurze Seite erhältst. Haltelimit≤ 500 bei/events, ≤ 300 bei/markets. - Aktualität: Preise (
bestBid,bestAsk,lastTradePrice) bewegen sich ständig. Gamma ist gut für Discovery und einen groben Preis, aber quote und handle am Live-CLOB-Buch, nicht an einem gecachten Gamma-Preis. - Caching: Cache das slug->token_id-Mapping (es ist stabil), nicht die Preise.
GET /events – Multi-Outcome-Gruppen
Ein Event bündelt verwandte Märkte (z. B. „NYC Mayoral Election“ hält einen Markt je Kandidat). Nutze es, um Multi-Outcome-Karten zu rendern oder jeden Markt zu einem Thema zu finden:
curl -s "https://gamma-api.polymarket.com/events?slug=nyc-mayor-2025" | jq '.[0].markets | length'
Jedes Event hat ein markets-Array; jeder Eintrag hat dieselben clobTokenIds- /
outcomes-String-Felder wie ein Top-Level-Markt, dasselbe Parsing gilt also.
conditionId eines Marktes und seine clobTokenIds (eine je Outcome). Der CLOB handelt auf
token_id, nie auf conditionId – sie zu verwechseln ist der häufigste Erste-Bot-Bug.Feldreferenz (die, die beißen)
| Feld | Bedeutung |
|---|---|
conditionId | Die Markt-Kennung. Für Auflösung und On-Chain-Lookups genutzt, nicht zum Platzieren von Orders. |
clobTokenIds | JSON-String-Array der Outcome-Token-IDs. Parse es; handle diese auf dem CLOB. |
outcomes / outcomePrices | JSON-String-Arrays, index-ausgerichtet mit clobTokenIds. |
active / closed | Gelistet-und-live / aufgelöst. Ein handelbarer Markt ist active && !closed. |
acceptingOrders | Ob der CLOB gerade Orders annimmt. Prüfe das vor dem Quoten. |
bestBid / bestAsk / lastTradePrice | Indikative Preise. Der maßgebliche Preis kommt vom CLOB-Buch. |
Weiter: CLOB API (auf einer token_id handeln) · Data API (Historie & PnL) · Einen Fehler beheben.



