Use case: arbitrage builders

Build a sportsbook arbitrage scanner

Poll the arbitrage endpoint on a schedule, verify both legs are still live, and log every opportunity with source-native prices.

Who this is for

Developers building a terminal or cron scanner that hunts price gaps across 30+ sportsbooks and flags stake splits worth reviewing. The workflow is a loop: scan, re-verify, log.

Recommended workflow
  1. Poll /arbitrage per sport on a fixed interval
  2. Re-check both legs with /odds before acting
  3. Confirm the books are flowing with the freshness endpoint
  4. Log every hit with timestamps for later review

The three endpoints this build uses

GET /v1/sports/{sport_key}/arbitrageScans every event across books and returns sides whose combined implied probability is under 100 percent, with profit percentage and both legs.
GET /v1/sports/{sport_key}/oddsRe-verify each leg immediately before acting. The scan is a snapshot and arbs decay fast.
GET /v1/bookmakers/{key}/freshnessCheck that a book is actually flowing before trusting its side of the split.

Working code

import requests, time

KEY = {"X-API-Key": "YOUR_KEY"}
URL = "https://parlay-api.com/v1/sports/basketball_nba/arbitrage"

while True:
    data = requests.get(URL, params={"minProfit": 1}, headers=KEY).json()
    for arb in data.get("arbs", []):
        print(arb["away_team"], "@", arb["home_team"], arb["market"],
              arb["profit_pct"], arb["side_a"]["bookmaker"],
              "/", arb["side_b"]["bookmaker"])
    time.sleep(60)

Which tier fits

Arbitrage endpoints are available from the Pro tier up. You can prototype the whole loop first against the keyless sandbox routes under /v1/sandbox before putting a paid key in the scheduler. Current limits are on the pricing page.

Example repo

Start from parlayapi-arb-scanner, an open-source starting point for this exact build.

Build links

/answers/find-arbitrage-bets-api/use-cases/sportsbook-arbitrage-dashboard/widgets