Home › Developers
Updated September 23, 2026 · no key · static JSON · CC BY 4.0
Use our Polymarket odds in your site, newsletter, bot, spreadsheet or research. Everything is static JSON served from our CDN, refreshed twice a day for 200 of the most-traded markets. The only condition: credit PolymarketTrader with a visible link.
| Endpoint | What it returns |
|---|---|
| /api/v1/odds/index.json | All tracked markets: title, category, leading outcome, probability, volume, links |
/api/v1/odds/<slug>.json | One market: every outcome's probability, 24h change, volume, 30-day history, attribution object |
| /api/v1/topics/index.json | All topics (Bitcoin, Fed, Trump, NFL …) with market counts and links |
/api/v1/topics/<topic>.json | Every live market on one topic: leading outcome, probability, 24h change, volume, end date |
| /api/v1/movers.json | 24-hour biggest movers watchlist |
| /api/v1/compare/polymarket-kalshi.json | The same events priced on Polymarket and Kalshi, with the gap in points (see Polymarket vs Kalshi) |
| /api/v1/fees.json | Live Polymarket fee schedules: taker rate and maker rebate by category (see the fee calculator) |
| /api/v1/openapi.json | OpenAPI 3 description of these endpoints |
curl -s https://polymarkettrader.com/api/v1/odds/will-the-us-confirm-that-aliens-exist-before-2027.json
import requests
data = requests.get("https://polymarkettrader.com/api/v1/odds/will-the-us-confirm-that-aliens-exist-before-2027.json").json()
for o in data["outcomes"][:3]:
print(o["name"], round(o["probability"] * 100, 1), "%")
print(data["attribution"]["text"], data["attribution"]["url"])
// JavaScript
const r = await fetch("https://polymarkettrader.com/api/v1/odds/will-the-us-confirm-that-aliens-exist-before-2027.json");
const d = await r.json();
console.log(d.title, d.outcomes[0].name, d.outcomes[0].probability);
// Google Sheets (first outcome probability)
=IMPORTDATA("https://polymarkettrader.com/api/v1/odds/will-the-us-confirm-that-aliens-exist-before-2027.json")
Step-by-step guide: how to embed live Polymarket odds. Every market page has a copy-paste embed. The card updates when our page updates. Keep the text link under the iframe — it is the attribution.
<iframe src="https://polymarkettrader.com/embed/odds/will-the-us-confirm-that-aliens-exist-before-2027/" width="100%" height="300" style="border:0;max-width:560px" loading="lazy"></iframe> <p><a href="https://polymarkettrader.com/odds/will-the-us-confirm-that-aliens-exist-before-2027/">Market odds</a> via <a href="https://polymarkettrader.com/">PolymarketTrader</a></p>
Every topic page has its own card too — the five most-traded markets on the topic, e.g.:
<iframe src="https://polymarkettrader.com/embed/topic/bitcoin/" width="100%" height="280" style="border:0;max-width:560px" loading="lazy" title="Bitcoin odds on Polymarket"></iframe> <p><a href="https://polymarkettrader.com/odds/bitcoin/">Bitcoin odds</a> via <a href="https://polymarkettrader.com/">PolymarketTrader</a></p>
The biggest-movers widget can be embedded the same way.
import requests, time
URL = "https://polymarkettrader.com/api/v1/odds/index.json"
seen = {}
while True:
for m in requests.get(URL).json()["markets"]:
prev = seen.get(m["slug"])
if prev is not None and abs(m["probability"] - prev) >= 0.05:
print(f"{m['title']}: {prev:.0%} -> {m['probability']:.0%} {m['url']}")
seen[m["slug"]] = m["probability"]
time.sleep(6 * 3600)
Data is published under Creative Commons BY 4.0. Credit “PolymarketTrader” and link to the market page or to https://polymarkettrader.com/. Each JSON file includes an attribution object with ready-made HTML. Educational data only — not trading signals or financial advice. Prices come from Polymarket's public APIs; we are not affiliated with Polymarket.