Home › Developers

Free Polymarket Odds API and Widgets

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.

Endpoints

EndpointWhat it returns
/api/v1/odds/index.jsonAll tracked markets: title, category, leading outcome, probability, volume, links
/api/v1/odds/<slug>.jsonOne market: every outcome's probability, 24h change, volume, 30-day history, attribution object
/api/v1/topics/index.jsonAll topics (Bitcoin, Fed, Trump, NFL …) with market counts and links
/api/v1/topics/<topic>.jsonEvery live market on one topic: leading outcome, probability, 24h change, volume, end date
/api/v1/movers.json24-hour biggest movers watchlist
/api/v1/compare/polymarket-kalshi.jsonThe same events priced on Polymarket and Kalshi, with the gap in points (see Polymarket vs Kalshi)
/api/v1/fees.jsonLive Polymarket fee schedules: taker rate and maker rebate by category (see the fee calculator)
/api/v1/openapi.jsonOpenAPI 3 description of these endpoints

Examples

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

Embeddable odds cards

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.

Telegram or Discord bot in 20 lines

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)

License and attribution

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.

🔔 Telegram watchlist