ProphetX API: US-Regulated P2P Sports Betting Data (Python)
The ProphetX API Problem: Regulated, But Walled Off
Prophet Exchange (ProphetX) is the rare thing the US sports betting market was missing: a fully-licensed, peer-to-peer betting exchange. No crypto, no offshore, no VPN. Real USD, real New Jersey license, real order book. If you’re trading US markets and you want exchange-style back/lay pricing, ProphetX is basically the only game in town.
It’s also a closed API. ProphetX doesn’t publish a public developer portal, there’s no self-serve key, and the partner integration path runs through their affiliate team. That’s fine if you’re a licensed operator. It’s a brick wall if you’re one developer trying to backtest a value-betting model on weekend NBA.
| Requirement | Reality |
|---|---|
| Public API Docs | None. Integration is partner-only. |
| Account | US-state-verified Prophet account required |
| Access | Affiliate / B2B partnership application |
| Geography | Restricted to licensed US states only |
| Rate Limits | Negotiated per partner, not published |
| Historical Data | Not offered as a product |
If you’re not already on their partner roadmap, you don’t have an integration path.
The “Third Option” for Prophet Exchange Odds
OddsPapi aggregates 350+ bookmakers — and ProphetX is one of them. No partner agreement, no US-state verification, no public API that doesn’t exist. You query ?bookmakers=prophetx on a fixture and get the current ProphetX line with the live betslip deep link attached.
| Feature | ProphetX Direct | OddsPapi |
|---|---|---|
| Cost to Start | Partner onboarding only | Free tier |
| Auth | Private B2B credentials | Single API key as query param |
| State Restrictions | Yes (licensed US states) | No |
| Other Books in Response | ProphetX only | ProphetX + 350+ others in one call |
| Historical Data | Not available | Free on entry tier |
What ProphetX Actually Is (And Why It Matters for US Traders)
Prophet Exchange is a licensed peer-to-peer sportsbook operating in New Jersey and expanding across US states. Instead of taking positions itself, Prophet matches bettors against each other and collects a commission on winnings. The practical effect for traders:
- No bet limiting. Because Prophet doesn’t hold positions, they have no reason to limit winning accounts. Your sharp action actually fills.
- Market-driven pricing. Lines move when the book moves, not when the trader desk adjusts.
- USD settled, tax-compliant. This is a real US-regulated venue, not an offshore book or an onchain contract.
If you’re building a value model targeting US sports, ProphetX’s pricing is some of the sharpest you can legally access. The problem is you couldn’t see it without opening an account in a Prophet state. Now you can.
The JSON Shape
ProphetX ships odds through the same /v4/odds endpoint every other bookmaker uses on OddsPapi. The outcome shape is the same as a regular sportsbook — price, limit, betslip, bookmakerOutcomeId — with exchangeMeta present but empty (ProphetX publishes a single best price per side rather than a full Betfair-style ladder).
# ProphetX outcome shape via OddsPapi
{
"active": true,
"betslip": "https://www.prophetx.co/?action=addtobetslip&lineID=a4d2776e...",
"bookmakerOutcomeId": "a4d2776e2796194f10fc995b771d5dec",
"changedAt": "2026-04-11T16:13:55.780844+00:00",
"limit": 459.8,
"playerName": null,
"price": 1.053,
"exchangeMeta": {}
}
Two details worth grabbing:
limitis the actual match size available at that price — the maximum you could take right now, in USD. For a P2P book, this is liquidity data.betslipis a Prophet deep link that pre-populates the bet slip. If you’re building a trading dashboard, this is the “send to ProphetX” button.
Tutorial: Pull ProphetX Odds in Python
Step 1: Get Your API Key
Sign up at oddspapi.io. Free tier. No partner contract.
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.oddspapi.io/v4"
Step 2: Find a US Sport Fixture
Prophet’s coverage is strongest on US-facing markets: NBA (sportId=11), MLB (13), NHL (15), NFL (14), UFC/MMA (20), plus soccer for Euro leagues.
from datetime import datetime, timezone, timedelta
today = datetime.now(timezone.utc)
params = {
"apiKey": API_KEY,
"sportId": 11, # NBA
"from": today.strftime("%Y-%m-%d"),
"to": (today + timedelta(days=2)).strftime("%Y-%m-%d"),
}
fixtures = requests.get(f"{BASE_URL}/fixtures", params=params).json()
candidates = [f for f in fixtures if f.get("hasOdds")]
print(f"{len(candidates)} NBA fixtures with odds")
Step 3: Fetch ProphetX Only
fixture_id = candidates[0]["fixtureId"]
r = requests.get(
f"{BASE_URL}/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "prophetx",
},
)
data = r.json()
prophet = data.get("bookmakerOdds", {}).get("prophetx")
if not prophet:
print("ProphetX has no book on this fixture.")
else:
print(f"{len(prophet['markets'])} markets from ProphetX")
Step 4: Parse Moneyline + Totals
# Pull 1X2 / moneyline (market 101) and Over/Under 2.5 (1010 — soccer)
# For NBA totals, look up the correct marketId from /v4/markets?sportId=11
for market_id, market in prophet["markets"].items():
print(f"\nMarket {market_id}:")
for outcome_id, outcome in market.get("outcomes", {}).items():
p = outcome["players"]["0"]
if not p["active"]:
continue
price = p["price"]
limit = p["limit"]
print(f" outcome {outcome_id}: {price} (max ${limit})")
Step 5: Price vs Limit — the Trader’s Filter
Because Prophet publishes the exact size available at each price, you can filter markets by whether there’s enough liquidity to make a trade worth placing.
MIN_STAKE = 250.0 # minimum USD fill you care about
for mid, market in prophet["markets"].items():
for oid, outcome in market.get("outcomes", {}).items():
p = outcome["players"]["0"]
if not p["active"]:
continue
if p["limit"] >= MIN_STAKE:
print(f"tradable: market {mid} outcome {oid} @ {p['price']} (${p['limit']} available)")
Now you have a filtered list of ProphetX markets where your minimum stake will actually clear. Pipe that into a value-betting model and you have the start of an edge scanner.
Step 6: Compare ProphetX vs Pinnacle in One Call
This is the payoff. Pinnacle is the closest thing to a “true price” sharp book; ProphetX is a P2P book with its own mispricings. Any gap between the two is the opportunity.
r = requests.get(
f"{BASE_URL}/odds",
params={
"apiKey": API_KEY,
"fixtureId": fixture_id,
"bookmakers": "prophetx,pinnacle",
},
)
books = r.json()["bookmakerOdds"]
for slug in ("prophetx", "pinnacle"):
m = books.get(slug, {}).get("markets", {}).get("101", {})
home = m.get("outcomes", {}).get("101", {}).get("players", {}).get("0", {})
print(f"{slug:10} home @ {home.get('price')}")
Why Devs Pick OddsPapi Over the Partner API
No partner contract — ProphetX doesn’t publish a self-serve key. OddsPapi’s free tier is your self-serve route.
No state restrictions — Prophet’s direct access is walled behind US-licensed jurisdictions. OddsPapi serves the same pricing data from anywhere you can make an HTTP request.
Compare with the rest of the market — ProphetX alone doesn’t tell you if a line is sharp. Pull it side-by-side with Pinnacle, Singbet, Betfair Exchange, and SX Bet in a single response and let your model decide.
Free historical data — Backtest your ProphetX strategy against /v4/historical-odds. Prophet itself doesn’t sell a historical product.
Coverage Notes
ProphetX’s most reliable coverage runs through US-primary sports and major soccer. Esoteric markets (niche leagues, low-volume props) will frequently return an empty book — that’s the P2P venue, not an API failure. Filter on hasOdds: true at the fixture level, then check whether bookmakerOdds.prophetx exists in the /v4/odds response before parsing.
| Sport | OddsPapi sportId |
Typical Market Depth |
|---|---|---|
| NBA | 11 | Moneyline, spread, totals, some props |
| MLB | 13 | Moneyline, run line, totals |
| NHL | 15 | Moneyline, puck line, totals |
| NFL | 14 | Spread, moneyline, totals |
| UFC / MMA | 20 | Fight winner |
| Soccer | 10 | 1X2, BTTS, totals on major leagues |
Get Started
- Sign up at oddspapi.io
- Copy your API key
- Pull ProphetX data in one request
curl "https://api.oddspapi.io/v4/odds?apiKey=YOUR_KEY&fixtureId=id1100022762690473&bookmakers=prophetx"
No partner application. No state whitelist. Just live Prophet Exchange prices.