API · Dokumentacja
Gamma API pod adresem gamma-api.polymarket.com to „katalog" - to nim
odkrywasz rynki i wydarzenia oraz pobierasz identyfikatory tokenów, których CLOB potrzebuje do handlu. Jest publiczne,
bez uwierzytelniania, więc każdy endpoint zbadasz z przeglądarki lub curla już teraz, podobnie jak
żywe narzędzia na tej stronie.
- Bazowy URL:
https://gamma-api.polymarket.com· bez uwierzytelniania, tylko do odczytu. - Limit: ~4000 żądań / 10 s łącznie (
/events~500,/markets~300). - Krok 1 niemal każdego bota: zamień rynek w jego identyfikatory tokenów, a potem handluj nimi na CLOB.
- Wszystko jest w JSON. Trzy ważne pola wracają jako łańcuchy JSON, które trzeba sparsować ponownie (patrz niżej).
Endpointy, których faktycznie użyjesz
| Endpoint | Zwraca | Użyj do |
|---|---|---|
GET /markets | Rynki z metadanymi, cenami na żywo i identyfikatorami tokenów. | Zamień slug na identyfikatory tokenów; skanuj handlowalne rynki. |
GET /events | Wydarzenia (grupa powiązanych rynków) z ich rynkami podrzędnymi. | Przeglądaj po temacie; renderuj karty wielowynikowe. |
GET /public-search?q= | Wyszukiwanie pełnotekstowe po wydarzeniach i rynkach. | Znajdź rynek, gdy znasz tylko nazwę. |
GET /tags | Tagi kategorii (polityka, krypto, sport...). | Odkryj poprawne filtry tag_slug. |
Częste parametry zapytania w /markets i /events:
active=true, closed=false, slug=, tag_slug=,
order=volume24hr, ascending=false, limit= i offset= do stronicowania.
GET /markets - żądanie i odpowiedź
Poproś o jeden rynek po slugu. Dostajesz tablicę (nawet dla pojedynczego rynku), więc weź 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]
Skrócona, opisana odpowiedź (pola, którymi bot się przejmuje):
{
"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"
}
Dwa identyfikatory tokenów wyników leżą wewnątrz clobTokenIds. To na nich handluje
CLOB - odczytaj je, a możesz złożyć zlecenie.
Pułapka nr 1: pola będące łańcuchami zakodowanymi w JSON
Gamma zwraca clobTokenIds, outcomes i outcomePrices jako
łańcuchy zakodowane w JSON wewnątrz JSON, więc musisz je zdekodować drugi raz. I nigdy
nie zapisuj na sztywno, który token to „Tak": odczytaj sparsowaną tablicę outcomes i mapuj po nazwie, bo
kolejność nie jest gwarantowana.
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]'
Wypróbuj na prawdziwym rynku - wklej slug i pobierz jego identyfikatory tokenów na żywo:
Skanuj w poszukiwaniu handlowalnych rynków
Typowe zapytanie odkrywcze bota prosi o aktywne, otwarte rynki, od najbardziej ruchliwych, w jednej kategorii:
GET https://gamma-api.polymarket.com/markets
?active=true&closed=false&order=volume24hr&ascending=false&limit=20&tag_slug=politics
Przefiltruj wynik po stronie klienta do rynków faktycznie handlowalnych, zanim na nich zadziałasz:
# 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")]
Wyszukaj na żywo (to wywołuje /public-search, a potem ładuje identyfikatory tokenów per rynek):
Stronicowanie i świeżość
- Stronicowanie: dodaj
limitioffseti przechodź, aż dostaniesz krótką stronę. Trzymajlimit≤ 500 na/events, ≤ 300 na/markets. - Świeżość: ceny (
bestBid,bestAsk,lastTradePrice) ruszają się nieustannie. Gamma nadaje się do odkrywania i przybliżonej ceny, ale kwotuj i handluj na żywej księdze CLOB, a nie na cache'owanej cenie Gamma. - Cache: cache'uj mapowanie slug -> token_id (jest stabilne), a nie ceny.
GET /events - grupy wielowynikowe
Wydarzenie łączy powiązane rynki (np. „Wybory na burmistrza NYC" zawierają po jednym rynku na kandydata). Użyj go do renderowania kart wielowynikowych lub znalezienia każdego rynku na dany temat:
curl -s "https://gamma-api.polymarket.com/events?slug=nyc-mayor-2025" | jq '.[0].markets | length'
Każde wydarzenie ma tablicę markets; każdy wpis ma te same pola-łańcuchy clobTokenIds /
outcomes co rynek najwyższego poziomu, więc obowiązuje to samo parsowanie.
conditionId rynku
i jego clobTokenIds (po jednym na wynik). CLOB handluje na token_id, nigdy na
conditionId - ich mylenie to najczęstszy błąd pierwszego bota.Opis pól (te, które gryzą)
| Pole | Znaczenie |
|---|---|
conditionId | Identyfikator rynku. Używany do rozstrzygania i wyszukiwań on-chain, nie do składania zleceń. |
clobTokenIds | Tablica-łańcuch JSON z identyfikatorami tokenów wyników. Sparsuj ją; handluj nimi na CLOB. |
outcomes / outcomePrices | Tablice-łańcuchy JSON, wyrównane indeksami z clobTokenIds. |
active / closed | Wystawiony-i-żywy / rozstrzygnięty. Rynek handlowalny to active && !closed. |
acceptingOrders | Czy CLOB przyjmie teraz zlecenia. Sprawdź to przed kwotowaniem. |
bestBid / bestAsk / lastTradePrice | Ceny orientacyjne. Wiążąca cena pochodzi z księgi CLOB. |
Dalej: API CLOB (handel na token_id) · Data API (historia i PnL) · Napraw błąd.



