API · مرجع
الـ Gamma API على gamma-api.polymarket.com هي "الكتالوج" - وهي كيف
تكتشف الأسواق والأحداث وتحصل على معرّفات token التي يحتاجها CLOB للتداول. إنها عامة،
بلا مصادقة، فيمكنك استكشاف كل نقطة نهاية من متصفح أو curl الآن، وكذلك تفعل
الأدوات الحية على هذه الصفحة.
- الرابط الأساسي:
https://gamma-api.polymarket.com· بلا مصادقة، للقراءة فقط. - حد المعدل: نحو 4,000 طلب / 10 ثوانٍ إجمالًا (
/eventsنحو 500،/marketsنحو 300). - الخطوة 1 في كل بوت تقريبًا: حوّل سوقًا إلى معرّفات token الخاصة به، ثم تداولها على CLOB.
- كل شيء JSON. ثلاثة حقول مهمة تعود كـسلاسل JSON يجب تحليلها مجددًا (انظر أدناه).
نقاط النهاية التي ستستخدمها فعلًا
| نقطة النهاية | تُعيد | استخدمها لـ |
|---|---|---|
GET /markets | أسواق مع بياناتها الوصفية وأسعار حية ومعرّفات token. | تحويل slug إلى معرّفات token؛ مسح الأسواق القابلة للتداول. |
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"
}
يقيم معرّفا token للنتيجتين داخل clobTokenIds. هما ما يتداول عليه
CLOB - اقرأهما ويمكنك إرسال أمر.
المطبّ الأول: حقول السلاسل المُرمّزة بصيغة 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 واسحب معرّفات token الخاصة به مباشرةً:
مسح الأسواق القابلة للتداول
استعلام اكتشاف نموذجي لبوت يطلب أسواقًا نشطة ومفتوحة، الأكثر نشاطًا أولًا، في فئة واحدة:
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، ثم يحمّل معرّفات token لكل سوق):
الترقيم والحداثة
- الترقيم: أضف
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 للسوق و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 (السجل والأرباح/الخسائر) · إصلاح خطأ.



