Prediction Market API 2026: Every Exchange & Onchain Venue Compared
The Prediction Market Stack in 2026: Every Exchange and Onchain Market Worth Integrating
Five years ago, “prediction market” meant Augur, PredictIt, and a long wait list for Betfair’s partner API. Today there are at least fifteen venues with live liquidity, and they’re split across four different architectures — regulated US exchanges, UK/EU exchanges, crypto P2P books, and onchain CLOB markets. Integrating all of them one by one is a multi-quarter engineering project. Most people don’t finish it; they ship against two or three, call it good, and leave the rest of the market invisible to their model.
This post is the map. Every venue worth knowing about, what architecture it runs on, how you actually get its data, and — for the thirteen of them that live behind OddsPapi — how to pull them with one HTTP request instead of fifteen.
The Short Version (Comparison Table)
| Venue | Type | Currency | Auth (Direct) | OddsPapi Slug | Best For |
|---|---|---|---|---|---|
| Pinnacle | Sharp sportsbook | Fiat / Crypto | Account + partner API | pinnacle |
No-vig fair value baseline |
| Betfair Exchange | UK exchange | GBP / EUR | £299 + SSL certs + session tokens | betfair-ex |
Deepest exchange liquidity globally |
| Matchbook | UK exchange | GBP / EUR / USD | KYC account + session tokens | matchbook |
Sharper US sports, lowest commission |
| SX Bet | Crypto P2P exchange | USDC on Polygon | EIP-712 + wallet | sx.bet |
Non-KYC crypto exchange with deep soccer/MLB books |
| Prophet Exchange | US-regulated P2P | USD | US-state account + B2B partnership | prophetx |
Sharpest legal US P2P prices, no bet limiting |
| 4casters Exchange | Asian exchange | Crypto / fiat | Agent-only account | 4casters |
Independent second exchange for Betfair comparison |
| Fair999 / Orbit / Piwi247 / Sharp Exchange | Betfair clones (Asian agent network) | Credit line via agent | Hong Kong / Macau agent relationship | fair999-ex / orbitx / piwi247-ex / sharpxch (all resolve to betfair-ex) |
Already in your Betfair data — these mirror the same liquidity |
| Polymarket | Onchain CLOB | USDC on Polygon | EIP-712 + Polygon wallet | polymarket |
Onchain-native events (politics, culture, crypto) |
| Limitless Exchange | Onchain binary | USDC on Base | EIP-712 + Base wallet | limitless-ex |
Binary yes/no markets, Base L2 |
| Myriad Markets | Onchain binary | Crypto (onchain) | EIP-712 + wallet | myriad |
Non-KYC onchain binaries, low overround |
| Kalshi | US-regulated exchange | USD | CFTC-licensed account + API key | kalshi |
Only CFTC-regulated event-contract market in the US |
| Predict.fun | Onchain CLOB | USDC on BNB Chain | EIP-712 + BNB wallet + Discord-issued API key | Not on OddsPapi | Kalshi-mirrored event markets, BNB Chain native |
That’s fifteen venues across four architectures. Twelve of them are on OddsPapi behind a single query parameter. The thirteenth, Predict.fun, needs a direct integration — we covered that one separately.
Architecture #1: Sharp Sportsbooks (The Baseline)
A prediction-market model doesn’t make sense in isolation — you need a “true price” to compare onchain numbers against. Pinnacle is the closest thing. Its lines are generated by a quant model, it doesn’t limit winning bettors, and its no-vig implied probability is the reference point every other venue gets benchmarked against.
Include Pinnacle in every query. If your Polymarket number and Pinnacle’s no-vig fair value agree, the onchain market is priced efficiently and there’s nothing to do. If they disagree by more than the combined transaction cost of both venues, you have a potential edge.
r = requests.get(
"https://api.oddspapi.io/v4/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "pinnacle",
},
)
pin = r.json()["bookmakerOdds"]["pinnacle"]
That’s the entire Pinnacle integration. Pinnacle’s own B2B API is a separate partner product with a negotiated contract; OddsPapi fronts it with a free-tier API key.
Architecture #2: Traditional Exchanges (Betfair, Matchbook)
Two UK-licensed P2P exchanges, both with real ladder depth, both running classic “session token + account required” auth flows if you go direct. Betfair is the bigger book by volume; Matchbook is the sharper book on US sports and runs the tighter commission (1.5% vs Betfair’s 2–5% scale).
Four of the five Asian exchanges (Fair999, Orbit, Piwi247, Sharp Exchange) are clones of Betfair Exchange — they share the same order book, mediated through an agent network. When you pull betfair-ex from OddsPapi you’re already getting the data those venues trade against. The one exception is 4casters, which runs its own independent ladder. Pull all three in one call to get the full UK+Asia exchange stack:
r = requests.get(
"https://api.oddspapi.io/v4/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "betfair-ex,matchbook,4casters",
},
)
books = r.json()["bookmakerOdds"]
for slug, book in books.items():
market = book.get("markets", {}).get("101", {})
home = market.get("outcomes", {}).get("101", {}).get("players", {}).get("0", {})
meta = home.get("exchangeMeta") or {}
# Both shapes: {back/lay} for 4casters, {availableToBack/Lay} for Betfair/Matchbook
back_list = meta.get("back") or meta.get("availableToBack") or []
lay_list = meta.get("lay") or meta.get("availableToLay") or []
best_back = back_list[0]["price"] if back_list else home.get("price")
best_lay = lay_list[0]["price"] if lay_list else None
print(f"{slug:12} back {best_back} / lay {best_lay}")
Architecture #3: P2P Sportsbook Exchanges (SX Bet, ProphetX)
Not quite traditional exchanges, not onchain prediction markets either — a third category of peer-to-peer sports books where the venue matches bettors but doesn’t provide the order book infrastructure of a Betfair-style ladder. Both publish a best-price-per-side rather than full ladder depth, and both are worth pulling alongside sportsbook data.
- SX Bet is crypto-native (USDC on Polygon), non-KYC, sharpest on soccer/MLB/NHL/tennis/MMA. Direct integration needs EIP-712 signing against a Polygon wallet. Through OddsPapi you get decimal odds and a live SX deep link in the response.
- ProphetX is US-regulated (licensed in NJ and expanding), USD-settled, no bet limiting, and has sharper NBA/NFL/MLB prices than most legal US sportsbooks. Direct API access is partner-only; OddsPapi fronts it for everyone else.
r = requests.get(
"https://api.oddspapi.io/v4/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "sx.bet,prophetx",
},
)
Architecture #4: Onchain Prediction Markets (Polymarket, Limitless, Myriad, Kalshi)
These are the native prediction markets — binary yes/no outcomes, share prices trading between 0 and 1, settlement either onchain (Polymarket, Limitless, Myriad) or via a CFTC-licensed exchange (Kalshi). They all share one characteristic: their raw prices are share prices, not decimal odds. OddsPapi converts them to decimal on ingestion, so by the time you query bookmakerOdds[slug], everything is in the same decimal-odds format as a sportsbook.
The use case: strip vig from Pinnacle, compare to raw share price from an onchain binary, bet the disagreement.
def implied(decimal):
return 1 / decimal if decimal else None
r = requests.get(
"https://api.oddspapi.io/v4/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "polymarket,limitless-ex,myriad,kalshi,pinnacle",
},
)
books = r.json()["bookmakerOdds"]
for slug in ("polymarket", "limitless-ex", "myriad", "kalshi", "pinnacle"):
book = books.get(slug, {})
m = book.get("markets", {}).get("101", {})
home = m.get("outcomes", {}).get("101", {}).get("players", {}).get("0", {})
price = home.get("price")
if price:
print(f"{slug:13} implied {implied(price):.1%}")
You now have the entire onchain prediction-market stack and Pinnacle’s no-vig baseline in a single HTTP round trip. The entire “sportsbook vs prediction market” comparison engine lives inside that one JSON response.
The Coverage Caveat Nobody Tells You
Every prediction-market venue on this list has thin coverage outside of its core domain. That’s not an OddsPapi quirk — it’s the nature of P2P and onchain markets. Here’s what you’ll actually see:
- Polymarket: deep on politics, crypto, culture, a few headline sports. Thin on the long tail of ordinary sports fixtures.
- Limitless / Myriad: deep on onchain-native crypto and political markets, growing presence on headline sports.
- Kalshi: deep on US political, macro, and weather contracts. Sports is a small slice.
- SX Bet: consistent on major soccer, MLB, NHL, tennis, MMA. Thin or absent on niche leagues.
- ProphetX: strongest on NBA/NFL/MLB/NHL in-season. Some soccer. Empty on niche markets.
- 4casters: concentrated on soccer and US sports major fixtures.
- Betfair / Matchbook: the broadest coverage on this list, but even they thin out on obscure fixtures.
The practical rule: filter fixtures by hasOdds: true at the /fixtures endpoint, then check which venues actually returned data in the /odds response before you parse. Any given fixture will typically have 3–5 of the venues on this list, not all of them. Your model code should tolerate missing venues gracefully.
Putting It All Together: One Call, Every Venue
import requests
API_KEY = "YOUR_API_KEY"
fixture_id = "..." # discovered via /v4/fixtures with sportId + date window
VENUES = [
# Sharp baseline
"pinnacle",
# Traditional exchanges
"betfair-ex", "matchbook", "4casters",
# P2P sports exchanges
"sx.bet", "prophetx",
# Onchain prediction markets
"polymarket", "limitless-ex", "myriad", "kalshi",
]
r = requests.get(
"https://api.oddspapi.io/v4/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": ",".join(VENUES),
},
timeout=10,
)
books = r.json().get("bookmakerOdds", {})
print(f"{len(books)}/{len(VENUES)} venues returned data")
for slug in VENUES:
status = "✓" if slug in books else "—"
print(f" {status} {slug}")
One HTTP request. One API key. Ten venues. The twelve-plus-clones that used to require twelve separate integrations, zero of them developer-friendly, live behind a single query string.
Historical Data: The Free-Tier Trap Nobody Else Exposes
Every venue on this list has a historical-data answer. Most of them are bad:
- Pinnacle, Betfair, Matchbook: historical data is a separate paid product, if it’s offered at all.
- SX Bet, Polymarket, Limitless, Myriad: you’re expected to query onchain event logs yourself — build a subgraph, run a Base/Polygon RPC, parse CTF events.
- ProphetX, Prophet Exchange: no historical product exposed at all.
- Kalshi: has a historical endpoint but limited retention.
OddsPapi’s /v4/historical-odds endpoint is free on the entry tier and returns a full price history per venue per fixture, for up to three books at a time. Loop it to cover more:
# Pull the full price history for a Polymarket/Limitless/Pinnacle comparison
r = requests.get(
"https://api.oddspapi.io/v4/historical-odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "polymarket,limitless-ex,pinnacle", # max 3 per call
},
)
snapshots = r.json()["bookmakers"]
Backtesting a prediction-market model against three venues’ price histories used to mean writing a subgraph indexer per chain. Now it’s one HTTP request per fixture.
What’s Missing (Honest Section)
The one venue on this list that isn’t on OddsPapi today is Predict.fun (BNB Chain). If your model needs Predict.fun data, integrate it directly — the public testnet needs no auth, the read endpoints are clean REST, and the official Python SDK handles the write-side wallet signing. Full Predict.fun walkthrough here.
Other onchain venues (Manifold, Drift’s prediction markets, Zeitgeist, Azuro) are not currently on OddsPapi and each need direct integrations if you care about them. Most don’t have the liquidity to matter for a trading model yet — but keep an eye on them as onchain markets consolidate.
Get Started
- Sign up at oddspapi.io
- Copy your API key
- Pull the entire prediction-market stack in one curl
curl "https://api.oddspapi.io/v4/odds?apiKey=YOUR_KEY&fixtureId=YOUR_FIXTURE&bookmakers=pinnacle,betfair-ex,matchbook,4casters,sx.bet,prophetx,polymarket,limitless-ex,myriad,kalshi"
Ten venues. Four architectures. Three continents. One API key.
Related posts:
- The Betfair API Headache: How to Get Exchange Odds Without the Red Tape
- Matchbook API: Access UK Exchange Odds Without an Account
- SX Bet API: Access Crypto Sports Exchange Odds (Python)
- ProphetX API: US-Regulated P2P Sports Betting Data
- Limitless Exchange API: Onchain Prediction Market Data
- Myriad Markets API: Access Onchain Prediction Market Odds
- Asian Exchange API: 4casters, Fair999, Orbit, Piwi247 & Sharp Exchange
- Predict.fun API: Read BNB-Chain Prediction Market Data
- Polymarket API & Kalshi API: Python Guide to Prediction Market Data