ProphetX API: US-Regulated P2P Sports Betting Data (Python)

Prophet Exchange API - OddsPapi API Blog
How To Guides April 21, 2026

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:

  • limit is 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.
  • betslip is 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

  1. Sign up at oddspapi.io
  2. Copy your API key
  3. 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.