Polymarket API の使い方:開発者向け完全ガイド (2026年版)
PolymarketのRESTおよびWebSocket APIを使用した予測市場アプリの構築
Hyperealで構築を始めよう
Kling、Flux、Sora、Veoなどに単一のAPIでアクセス。無料クレジットで開始、数百万規模まで拡張可能。
クレジットカード不要 • 10万人以上の開発者 • エンタープライズ対応
Polymarket API の使い方:開発者向け完全ガイド (2026年版)
Polymarket は、現実世界で起きる出来事の結果をユーザーが予測して取引できる、世界最大の予測市場プラットフォームです。ダッシュボードの構築、取引戦略の自動化、あるいはアプリケーションへの市場データの取り込みなど、Polymarket API を使用することで、プラットフォーム上のあらゆる機能にプログラムからアクセスできます。
このガイドでは、認証から最初の取引の実行まで、Polymarket API のセットアップ全体を Python と JavaScript の動作コード例とともに解説します。
Polymarket API の概要
Polymarket は主に 2 つの API を公開しています:
| API | 用途 | 認証 | レート制限 |
|---|---|---|---|
| CLOB API | 取引、注文、市場データ | API key + secret | 100 req/min |
| Gamma API | 公開市場データ、イベント、メタデータ | なし (公開) | 300 req/min |
CLOB (Central Limit Order Book) API は、実際に取引を行うために必要なものです。Gamma API は読み取り専用の REST API で、認証なしで市場情報、イベント詳細、履歴データを取得するために使用します。
ステップ 1:Polymarket API キーの取得
CLOB API を使用するには、Polymarket ウォレットに紐付けられた API キーが必要です。
- polymarket.com にアクセスし、ウォレットを接続するかアカウントを作成します。
- アカウント設定に移動し、API セクションを探します。
- 新しい API キーとシークレットを生成します。これらを安全に保存してください。シークレットは二度と表示されません。
Gamma API の場合、認証は不要です。すぐにリクエストを開始できます。
ステップ 2:Gamma API で市場データを取得する
Gamma API は最も簡単に使い始める方法です。すべての有効な市場に関する構造化データを返します。
すべてのアクティブな市場をリストする
import requests
# Polymarket Gamma API からアクティブな市場を取得
response = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"active": "true",
"limit": 10,
"order": "volume24hr",
"ascending": "false"
}
)
markets = response.json()
for market in markets:
print(f"Question: {market['question']}")
print(f"Volume (24h): ${market.get('volume24hr', 0):,.2f}")
print(f"Liquidity: ${market.get('liquidity', 0):,.2f}")
print("---")
// Node.js / fetch の例
const response = await fetch(
"https://gamma-api.polymarket.com/markets?" +
new URLSearchParams({
active: "true",
limit: "10",
order: "volume24hr",
ascending: "false"
})
);
const markets = await response.json();
markets.forEach(market => {
console.log(`Question: ${market.question}`);
console.log(`Volume (24h): $${Number(market.volume24hr || 0).toLocaleString()}`);
console.log(`Liquidity: $${Number(market.liquidity || 0).toLocaleString()}`);
console.log("---");
});
ID で特定の市場を取得する
import requests
market_id = "0x1234..." # 実際の condition ID に置き換えてください
response = requests.get(
f"https://gamma-api.polymarket.com/markets/{market_id}"
)
market = response.json()
print(f"Question: {market['question']}")
print(f"Description: {market['description']}")
print(f"End Date: {market['endDate']}")
キーワードで市場を検索する
import requests
response = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"tag": "politics",
"active": "true",
"limit": 5
}
)
markets = response.json()
for m in markets:
print(f"{m['question']} — Volume: ${m.get('volume24hr', 0):,.0f}")
ステップ 3:取引のために CLOB API に接続する
CLOB API を使用すると、注文の発注や管理が可能です。これには API クレデンシャルを使用した暗号認証が必要です。
Python クライアントのインストール
pip install py-clob-client
クライアントの初期化
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import ApiCreds
# クレデンシャル情報
host = "https://clob.polymarket.com"
chain_id = 137 # Polygon mainnet
private_key = "0xYOUR_PRIVATE_KEY"
# クライアントの初期化
client = ClobClient(
host,
key=private_key,
chain_id=chain_id
)
# API クレデンシャルの導出
api_creds = client.create_or_derive_api_creds()
client.set_api_creds(api_creds)
print("Connected to Polymarket CLOB API")
オーダーブック(板)データの取得
# 特定の市場のオーダーブックを取得
token_id = "71321045..." # 特定の結果に対するトークン ID
order_book = client.get_order_book(token_id)
print("Bids:")
for bid in order_book.bids[:5]:
print(f" Price: {bid.price} | Size: {bid.size}")
print("Asks:")
for ask in order_book.asks[:5]:
print(f" Price: {ask.price} | Size: {ask.size}")
指値注文(Limit Order)の発注
from py_clob_client.order_builder.constants import BUY
# 指値注文を作成して署名・送信
order_args = {
"token_id": "71321045...",
"price": 0.55, # USDCでの価格 (0.55 = 55セント = 55%の確率)
"size": 100, # シェア数
"side": BUY,
"fee_rate_bps": 0, # ベーシスポイント単位の手数料
}
signed_order = client.create_and_post_order(order_args)
print(f"Order placed: {signed_order}")
注文のキャンセル
# 特定の注文をキャンセル
order_id = "0xABC123..."
result = client.cancel(order_id)
print(f"Order cancelled: {result}")
# すべてのオープンオーダーをキャンセル
result = client.cancel_all()
print(f"All orders cancelled: {result}")
ステップ 4:WebSockets によるリアルタイムデータのストリーミング
Polymarket は、リアルタイムの価格更新やオーダーブックの変更を監視するための WebSocket 接続を提供しています。
import asyncio
import websockets
import json
async def stream_market_data():
uri = "wss://ws-subscriptions-clob.polymarket.com/ws/market"
async with websockets.connect(uri) as ws:
# 市場をサブスクライブ
subscribe_msg = {
"type": "subscribe",
"market": "71321045...", # トークン ID
"channel": "price"
}
await ws.send(json.dumps(subscribe_msg))
print("Subscribed to price updates")
async for message in ws:
data = json.loads(message)
print(f"Price update: {data}")
asyncio.run(stream_market_data())
ステップ 5:簡易市場ダッシュボードの構築
上位の市場を取得し、フォーマットされたテーブルで表示する実用的な例を以下に示します。
import requests
from tabulate import tabulate
def get_top_markets(limit=10):
response = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"active": "true",
"limit": limit,
"order": "volume24hr",
"ascending": "false"
}
)
return response.json()
def format_market_table(markets):
rows = []
for m in markets:
rows.append([
m["question"][:60],
f"${float(m.get('volume24hr', 0)):,.0f}",
f"${float(m.get('liquidity', 0)):,.0f}",
m.get("endDate", "N/A")[:10]
])
headers = ["Market", "24h Volume", "Liquidity", "End Date"]
return tabulate(rows, headers=headers, tablefmt="grid")
markets = get_top_markets()
print(format_market_table(markets))
Polymarket API のレート制限とベストプラクティス
| エンドポイント | レート制限 | 推奨間隔 |
|---|---|---|
| Gamma API (公開) | 300 req/min | リクエスト間 200ms |
| CLOB REST API | 100 req/min | リクエスト間 600ms |
| WebSocket | 明確な制限なし | 30秒ごとの Hartbeat ping を推奨 |
| 注文発注 | 10 orders/sec | 可能な限りバッチ処理を推奨 |
ベストプラクティス
- 市場データのキャッシュ。 市場のメタデータは頻繁に変わりません。ローカルにキャッシュし、5~10分ごとに更新するようにしましょう。
- リアルタイムデータには WebSocket を使用する。 REST API のポーリングはレート制限を浪費します。ライブ価格フィードには WebSocket サブスクリプションを使用してください。
- 429 エラーを適切に処理する。 レート制限に達した場合は、指数バックオフ(exponential backoff)を実装してください。
- API キーは環境変数に保存する。 コード内に秘密鍵や API シークレットをハードコードしないでください。
import os
# 環境変数から読み込み
api_key = os.environ.get("POLYMARKET_API_KEY")
api_secret = os.environ.get("POLYMARKET_API_SECRET")
private_key = os.environ.get("POLYMARKET_PRIVATE_KEY")
一般的な API レスポンスコード
| コード | 意味 | 対応アクション |
|---|---|---|
| 200 | 成功 | レスポンスを処理する |
| 400 | 不正なリクエスト | パラメータを確認する |
| 401 | 認証失敗 | API クレデンシャルを確認する |
| 404 | 未検出 | 市場 ID または注文 ID を確認する |
| 429 | レート制限 | 時間をおいて再試行する |
| 500 | サーバーエラー | 遅延を置いて再試行する |
よくある質問 (FAQ)
Polymarket API は無料ですか? はい。Gamma API は完全に無料で、認証も不要です。CLOB API も使用料は無料ですが、取引を行うには資金が入った Polymarket アカウントが必要です。
Polymarket はどのブロックチェーンを使用していますか? Polymarket は Polygon (チェーン ID 137) 上で動作しています。取引には Polygon 上の USDC が必要です。
API を自動取引ボットに使用できますか? はい。CLOB API はプログラムによる取引を目的として設計されています。多くのユーザーが自動化された戦略を実行しています。ただし、市場操作に関する利用規約に注意してください。
サンドボックスやテストネットはありますか? Polymarket は、開発者向けにテストネット環境を提供することがあります。最新の利用可能性については、公式 Discord やドキュメントを確認してください。
サポートされているプログラミング言語は何ですか?
公式クライアントライブラリは Python (py-clob-client) で提供されています。REST および WebSocket API は、HTTP リクエストをサポートするあらゆる言語で使用可能です。
まとめ
Polymarket API は、現在利用可能な予測市場 API の中でも最もアクセスしやすいものの一つです。公開されている Gamma API は市場データの読み取りにセットアップが不要であり、CLOB API は Python クライアントのサポートにより完全な取引機能を提供します。
もし、予測市場データを取り入れた AI 駆動型アプリケーションやメディア生成ツールを構築しているなら、Hypereal AI を無料でお試しください。35 クレジット提供、クレジットカード不要です。画像、ビデオ、アバター生成のためのシンプルな API を提供しており、データ駆動型アプリケーションとの相性も抜群です。
