API · Referenz
Die Data API unter data-api.polymarket.com ist Polymarkets read-only
„Warehouse“ – die Positionen jeder Wallet, das vollständige Trade-Band und der Live-
Portfoliowert, mit eingebautem PnL. Sie ist vollständig öffentlich:
kein Schlüssel, kein Signieren, kein Konto. Das macht sie zum einfachsten Startpunkt – du kannst einen ganzen Analyse-
oder Copy-Trading-Bot darauf bauen, ohne je einen Private Key zu berühren. Jedes Beispiel unten ist ein echter Aufruf, den du
in der Sandbox auf dieser Seite ausführen kannst.
- Basis-URL:
https://data-api.polymarket.com· keine Authentifizierung. - Zu übergebende Adresse: die Proxy-Wallet des Traders (seine On-Chain-Polymarket-Adresse), nicht ein Signier-Schlüssel.
- Rate-Limit: ~1.000 Req / 10 s (
/trades200,/positions150) – gedrosselt, nicht abgelehnt. - Gibt einfache JSON-Arrays zurück. Kombiniere mit Gamma (Discovery) und CLOB (Handel).
/positions – was eine Wallet hält (mit PnL)
Der Arbeitspferd-Endpunkt. Übergib eine Wallet und erhalte jede offene Position, jede bereits angereichert mit Kostenbasis und Gewinn/Verlust – dieser dient also zugleich als PnL-Endpunkt (keine Subgraph-Mathematik nötig).
import requests
r = requests.get("https://data-api.polymarket.com/positions",
params={"user": PROXY_ADDRESS})
for p in r.json():
print(p["title"], p["outcome"], p["size"],
"avg", p["avgPrice"], "pnl", p["cashPnl"])
curl -s "https://data-api.polymarket.com/positions?user=$PROXY_ADDRESS"
Echte Antwort (eine Position, gekürzt):
[
{
"proxyWallet": "0xbfd068…a0c8",
"asset": "30114730…931285", // the token_id (CLOB-tradeable)
"conditionId": "0x4589bb…b3005c",
"size": 100, // shares held
"avgPrice": 0.01, // your cost basis
"curPrice": 0.00, // current mark
"currentValue": 0.00,
"cashPnl": -1.00, // $ profit/loss
"percentPnl": -100,
"realizedPnl": 0,
"redeemable": true, // market resolved → can redeem
"title": "Bitcoin Up or Down - June 14, 8:00-8:05AM ET",
"outcome": "Down", "outcomeIndex": 1
}
]
| Feld | Bedeutung |
|---|---|
asset | Die token_id – gib sie direkt an den CLOB, um das Buch zu lesen oder zu handeln. |
size / avgPrice | Gehaltene Anteile und dein durchschnittlicher Einstiegspreis (Kostenbasis). |
cashPnl / percentPnl / realizedPnl | Unrealisiert $, unrealisiert % und realisiert $ – das PnL, das du sonst selbst berechnen würdest. |
redeemable | true, sobald der Markt aufgelöst ist und die Position ausgezahlt werden kann. |
/trades – das Trade-Band
Jeder Fill, neueste zuerst. Filtere nach user= (Historie einer Wallet) und/oder market=,
oder zieh einfach den Firehose mit limit=. Das ist deine Backtest- und Copy-Trading-Datenquelle.
curl -s "https://data-api.polymarket.com/trades?user=$PROXY_ADDRESS&limit=100"
Echte Antwort (ein Trade, gekürzt):
[
{
"proxyWallet": "0xad05d2…3a3d",
"side": "BUY",
"asset": "54898429…124028", // token_id traded
"conditionId": "0x0e6eb3…a83290",
"size": 10,
"price": 0.10,
"timestamp": 1781469243, // unix seconds
"title": "Bitcoin Up or Down - June 14, 4:30-4:35PM ET",
"outcome": "Down", "outcomeIndex": 1,
"transactionHash": "0x4c0e78…38064d" // verify on PolygonScan
}
]
Jeder Trade trägt die proxyWallet dahinter – /trades ist also auch, wie du
Wallets zum Folgen entdeckst: Zieh aktuelle Fills auf einem Markt, dann zieh die
/positions jeder Wallet.
/value – Portfoliowert in einer Zahl
Der schnellste Gesundheitscheck – der aktuelle Gesamtwert einer Wallet:
v = requests.get("https://data-api.polymarket.com/value",
params={"user": PROXY_ADDRESS}).json()[0]["value"]
print(f"${v:,.2f}")
curl -s "https://data-api.polymarket.com/value?user=$PROXY_ADDRESS"
Echte Antwort:
[ { "user": "0xbfd068…a0c8", "value": 2.3236 } ]
/activity – das vollständige On-Chain-Aktionsprotokoll (nicht nur Trades)
Der Endpunkt, den die meisten Bots übersehen. /activity gibt alles zurück, was eine Wallet on-chain getan hat, nicht nur Fills:
Filtere nach type = TRADE, SPLIT, MERGE, REDEEM,
REWARD oder CONVERSION und nach start / end (Unix-Sekunden). So
beobachtest du, wie eine Wallet pUSD in Yes+No splittet, zurück-merged, eine aufgelöste
Position einlöst oder Maker-Rewards einsammelt – die CTF-Primitive, die das Orderbuch nie zeigt.
curl -s "https://data-api.polymarket.com/activity?user=$PROXY_ADDRESS&type=SPLIT,MERGE,REDEEM&limit=50"
Kombiniere es mit den CTF-Primitiven: /activity
ist die Leseseite von Split / Merge / Redeem, sodass eine Strategie, die Sets mintet oder einlöst, ihre eigene
On-Chain-Historie abgleichen kann, ohne einen Node zu berühren.
/holders – wer einen Markt hält
Top-Holder je Outcome eines Marktes – nützlich für Konzentrationsprüfungen und Whale-Discovery:
curl -s "https://data-api.polymarket.com/holders?market=$CONDITION_ID&limit=20"
Rezept: ein 20-Zeilen-Wallet-Tracker
Entdecke eine aktive Wallet aus dem Band, dann dumpe ihr Buch mit PnL – alles schlüssellos:
import requests
D = "https://data-api.polymarket.com"
# 1) who just traded BTC?
who = requests.get(f"{D}/trades", params={"limit": 1}).json()[0]["proxyWallet"]
# 2) their open book + live PnL
for p in requests.get(f"{D}/positions", params={"user": who}).json():
print(f"{p['title'][:40]:40} {p['outcome']:4} {p['size']:>6} sh "
f"PnL ${p['cashPnl']:+.2f} ({p['percentPnl']:+.0f}%)")
# 3) their total value
print("total $", requests.get(f"{D}/value", params={"user": who}).json()[0]["value"])
Weiter: CLOB API (das Buch lesen, handeln) · Gamma API (Märkte finden) · Einen Copy-Trading-Bot bauen.



