API · עיון

ה-Gamma API בכתובת gamma-api.polymarket.com הוא ה"קטלוג" - כך אתם מגלים שווקים ואירועים ומשיגים את מזהי הטוקן שה-CLOB צריך כדי לסחור. הוא ציבורי, ללא אימות, כך שאפשר לחקור כל endpoint מדפדפן או מ-curl ממש עכשיו, וכך גם הכלים החיים בעמוד הזה.

במבט חטוף
  • כתובת בסיס: https://gamma-api.polymarket.com · ללא אימות, קריאה-בלבד.
  • מגבלת קצב: כ-4,000 בקשות / 10 שניות בסך הכול (/events כ-500, /markets כ-300).
  • שלב 1 של כמעט כל בוט: להפוך שוק ל-מזהי הטוקן שלו, ואז לסחור בהם ב-CLOB.
  • הכול JSON. שלושה שדות חשובים חוזרים כמחרוזות של JSON שיש לפענח שוב (ראו למטה).

ה-endpoints שבאמת תשתמשו בהם

Endpointמחזירהשתמשו בו כדי
GET /marketsשווקים עם מטא-דאטה, מחירים חיים ומזהי טוקן.לפענח slug למזהי טוקן; לסרוק שווקים סחירים.
GET /eventsאירועים (קבוצת שווקים קשורים) עם שווקי הבן שלהם.לעיין לפי נושא; לרנדר כרטיסים רב-תוצאתיים.
GET /public-search?q=חיפוש טקסט מלא על אירועים ושווקים.למצוא שוק כשאתם יודעים רק שם.
GET /tagsתגיות הקטגוריה (פוליטיקה, קריפטו, ספורט...).לגלות מסנני tag_slug תקפים.

פרמטרי שאילתה נפוצים ב-/markets וב-/events: active=true, closed=false, slug=, tag_slug=, order=volume24hr, ascending=false, limit= ו-offset= לעמודים.

GET /markets - בקשה ותגובה

בקשו שוק אחד לפי slug. אתם מקבלים בחזרה מערך (אפילו לשוק יחיד), אז קחו את איבר [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]

תגובה מקוצרת ומוערת (השדות שבוט אכפת לו מהם):

{
  "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"
}

שני מזהי הטוקן של התוצאה נמצאים בתוך clobTokenIds. הם מה שה- CLOB סוחר בו - קראו אותם ותוכלו לבצע פקודה.

המלכודת מספר 1: שדות מחרוזת מקודדי-JSON

Gamma מחזיר את clobTokenIds, outcomes ו-outcomePrices כ- מחרוזות מקודדות-JSON בתוך ה-JSON, ולכן עליכם לפענח אותן בפעם שנייה. ולעולם אל תקבעו בקוד קשיח איזה טוקן הוא "Yes": קראו את מערך ה-outcomes המפוענח ומפו לפי שם, כי הסדר אינו מובטח.

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]'

נסו על שוק אמיתי - הדביקו slug ומשכו את מזהי הטוקן שלו חי:

סריקה לשווקים סחירים

שאילתת הגילוי הטיפוסית של בוט מבקשת שווקים פעילים ופתוחים, העמוסים ביותר תחילה, בקטגוריה אחת:

GET https://gamma-api.polymarket.com/markets
    ?active=true&closed=false&order=volume24hr&ascending=false&limit=20&tag_slug=politics

סננו את התוצאה בצד הלקוח לשווקים שהם באמת סחירים לפני שאתם פועלים לפיהם:

# 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")]

חפשו חי (זה קורא ל-/public-search, ואז טוען מזהי טוקן לכל שוק):

עמודים וטריות

  • עמודים: הוסיפו limit ו-offset וצעדו עד שתקבלו עמוד קצר. שמרו על limit ≤ 500 ב-/events, ≤ 300 ב-/markets.
  • טריות: המחירים (bestBid, bestAsk, lastTradePrice) זזים כל הזמן. Gamma מתאים לגילוי ולמחיר גס, אבל צטטו וסחרו מול ספר הפקודות החי של CLOB, לא ממחיר Gamma מטמון.
  • מטמון: שמרו במטמון את מיפוי ה-slug -> token_id (הוא יציב), לא את המחירים.

GET /events - קבוצות רב-תוצאתיות

אירוע מאגד שווקים קשורים (למשל "בחירות ראש עיריית ניו יורק" מכיל שוק אחד לכל מועמד). השתמשו בו כדי לרנדר כרטיסים רב-תוצאתיים או כדי למצוא כל שוק בנושא:

curl -s "https://gamma-api.polymarket.com/events?slug=nyc-mayor-2025" | jq '.[0].markets | length'

לכל אירוע יש מערך markets; לכל איבר יש את אותם שדות מחרוזת clobTokenIds / outcomes כמו לשוק ברמה העליונה, כך שאותו פענוח חל.

conditionId מול token_id. Gamma נותן לכם את ה-conditionId של שוק ואת ה-clobTokenIds שלו (אחד לכל תוצאה). ה-CLOB סוחר ב-token_id, לעולם לא ב-conditionId - הבלבול ביניהם הוא הבאג הנפוץ ביותר בבוט הראשון.

עיון בשדות (אלה שנושכים)

שדהמשמעות
conditionIdמזהה השוק. משמש להכרעה ולחיפושים און-צ׳יין, לא לביצוע פקודות.
clobTokenIdsמערך מחרוזת JSON של מזהי טוקן התוצאה. פענחו אותו; סחרו בהם ב-CLOB.
outcomes / outcomePricesמערכי מחרוזת JSON, מיושרים באינדקס עם clobTokenIds.
active / closedמפורסם-וחי / מוכרע. שוק סחיר הוא active && !closed.
acceptingOrdersהאם ה-CLOB יקבל פקודות ממש עכשיו. בדקו זאת לפני ציטוט.
bestBid / bestAsk / lastTradePriceמחירים אינדיקטיביים. המחיר הסמכותי מגיע מספר הפקודות של CLOB.

הבא: CLOB API (מסחר ב-token_id) · Data API (היסטוריה ו-PnL) · תיקון שגיאה.