Polymarket Sports Odds Scanner & Divergence Finder avatar

Polymarket Sports Odds Scanner & Divergence Finder

Pricing

from $1.00 / 1,000 market rows

Go to Apify Store
Polymarket Sports Odds Scanner & Divergence Finder

Polymarket Sports Odds Scanner & Divergence Finder

Scan live Polymarket sports markets across 13 sports, or surface sharp-line divergence vs Pinnacle and other books using your own The Odds API key (free tier works): edge percent, direction, quarter-Kelly sizing. Scan mode needs no key. From $1 per 1,000 markets.

Pricing

from $1.00 / 1,000 market rows

Rating

0.0

(0)

Developer

Jack Sheward

Jack Sheward

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

7 days ago

Last modified

Share

Polymarket Sports Odds Scanner & Divergence Finder

Pull live Polymarket sports odds — every active sports market (soccer, NBA, NFL, MLB, NHL, UFC, tennis, cricket, esports and more) — as clean JSON records, then optionally surface divergence between Polymarket prices and sharp sportsbook lines (Pinnacle by default) using your own The Odds API key: no-vig fair probability, edge in percentage points, buy direction, and quarter-Kelly stake sizing per signal.

Polymarket data comes straight from the public, unauthenticated Gamma API — no login, no scraping. Sportsbook lines come from The Odds API with a buyer-supplied key (the free tier — 500 credits/month — covers daily runs; this actor spends at most 1 credit per active sport league per run, never per market).

What you get

scan mode — one market record per Polymarket sports market

FieldExampleNotes
record_typemarket
market_id1356224Gamma market id
condition_id0xace48…on-chain condition id
titleWill Houston Dynamo win on 2026-03-07?market question
sportsoccercanonical sport from the built-in classifier (null if unclassifiable)
teams["New England Revolution", "Houston Dynamo"]best-effort, in title order (not home/away); null for outrights/props
event_date2026-08-08T20:30:00Zgame start when known, else market end date
yes_price0.28price of outcome 0 (USD, 0–1)
no_price0.72price of outcome 1
outcome_labels["Yes", "No"]may also be team names on some markets
volume27480.27USD total traded
liquidity2894.87USD posted liquidity
outcome_token_ids["854285…", "637307…"]CLOB token ids, index-aligned with outcome_labels
urlhttps://polymarket.com/event/mls-ner-hou-2026-03-07event page

Example market record (key fields):

{
"record_type": "market",
"market_id": "1356224",
"title": "Will Houston Dynamo win on 2026-03-07?",
"sport": "soccer",
"teams": ["New England Revolution", "Houston Dynamo"],
"event_date": "2026-08-08T20:30:00Z",
"yes_price": 0.28,
"no_price": 0.72,
"volume": 27480.27,
"url": "https://polymarket.com/event/mls-ner-hou-2026-03-07"
}

divergence mode — everything above plus one signal record per matched market × book with edge ≥ minEdgePct

Signal records repeat all market fields and add:

FieldExampleNotes
record_typesignal
bookpinnaclebookmaker key
book_odds_decimal3.40the book's decimal odds for the YES side's outcome
implied_prob_novig0.2846fair probability after removing the book's vig
polymarket_prob0.445Polymarket YES price — for buy_no signals the actionable price is no_price (same record)
edge_pct16.04fair prob of the recommended side minus its Polymarket price, ×100
directionbuy_nobuy_yes or buy_no
kelly_fraction_250.0901quarter-Kelly fraction of bankroll for that side
match_confidencehighhigh (exact team match) or medium (conservative fuzzy match)
matched_eventNew England Revolution vs Houston Dynamothe sportsbook event it matched
commence_time2026-08-08T20:30:00Zgame start per the book

Example signal record:

{
"record_type": "signal",
"market_id": "1356220",
"condition_id": "0xd1e93b3af50b6218aaf8ac710eef6dce437a93aad52cedacfbc0a45f36b5d7cd",
"title": "Will New England Revolution vs. Houston Dynamo end in a draw?",
"sport": "soccer",
"teams": ["New England Revolution", "Houston Dynamo"],
"event_date": "2026-08-08T20:30:00Z",
"yes_price": 0.445,
"no_price": 0.555,
"outcome_labels": ["Yes", "No"],
"volume": 31897.01,
"liquidity": 2616.91,
"outcome_token_ids": ["79383150873788993025…", "27555650786861172807…"],
"url": "https://polymarket.com/event/mls-ner-hou-2026-03-07",
"book": "pinnacle",
"book_odds_decimal": 3.40,
"implied_prob_novig": 0.2846,
"polymarket_prob": 0.445,
"edge_pct": 16.04,
"direction": "buy_no",
"kelly_fraction_25": 0.0901,
"match_confidence": "high",
"matched_event": "New England Revolution vs Houston Dynamo",
"commence_time": "2026-08-08T20:30:00Z"
}

Export as JSON, CSV, or Excel directly from the dataset.

Input

Default (scan, all sports, 200 markets — fast):

{
"mode": "scan",
"sports": ["all"],
"maxMarkets": 200
}

Divergence example (bring your own The Odds API key):

{
"mode": "divergence",
"sports": ["soccer", "mlb", "nba"],
"minVolume": 10000,
"maxMarkets": 500,
"oddsApiKey": "YOUR-ODDS-API-KEY",
"books": ["pinnacle"],
"minEdgePct": 3
}
  • modescan (Polymarket markets only) or divergence (scan + sportsbook comparison).
  • sports — canonical names (nba, wnba, nfl, mlb, nhl, ufc, soccer, tennis, cricket, f1, golf, boxing, esports) or "all".
  • minVolume / minLiquidity — USD floors; 0 disables.
  • maxMarkets — 1–2000 cap on market records.
  • oddsApiKeyyour The Odds API key; required only for divergence mode. Used solely for this run's requests — never stored, never logged. Missing key = warning + scan output.
  • books — The Odds API bookmaker keys (default ["pinnacle"], the sharp baseline).
  • minEdgePct — signal floor in percentage points (default 3).
  • regions — The Odds API regions (us,eu default); only used when books is empty.

How divergence detection works

  1. Scan active Polymarket sports markets (Gamma API, stale and non-trading markets filtered out at the market level).
  2. Classify each market's sport (Gamma tags first, then a two-pass keyword/team-name classifier carried over from a production sports trading system).
  3. Match conservatively: only game-level moneyline markets with two parsed team names; team names are normalized (case, accents, punctuation, common aliases like "Man City") and both home/away orientations are checked; game time must agree within 12 hours. Anything below medium confidence is dropped, not guessed.
  4. De-vig the book's h2h line: implied probabilities 1/odds are normalized over all outcomes (including Draw for soccer), so p(team) is the true win probability with draws counting against — exactly the YES side of Polymarket's "Will X win?" game markets.
  5. Score: edge_pct = (fair probability of side − Polymarket price of side) × 100; the better of buy_yes/buy_no is emitted when it clears minEdgePct, with quarter-Kelly sizing 0.25 × (p − price) / (1 − price).

Pricing

Pay per result — no subscription:

  • $0.005 per run (actor-start)
  • $0.001 per market record (market-row)
  • $0.02 per divergence signal (divergence-signal)

A default scan run (200 markets) costs $0.205. A divergence run with 200 markets and 10 signals costs $0.405 — plus your own (free-tier) Odds API credits, typically 1–8 per run.

FAQ

How do I find arbitrage between Polymarket and sportsbooks?

Run divergence mode with your The Odds API key. Each signal tells you which side of the Polymarket market is cheap relative to the sharp no-vig line (direction), by how much (edge_pct), and a conservative stake size (kelly_fraction_25). True risk-free arbitrage additionally requires hedging the other side at the book — these signals are value signals against the sharp line.

What is no-vig (fair) probability?

Bookmaker odds embed a margin (vig): implied probabilities sum to more than 1. Dividing each implied probability by that sum removes the margin. Pinnacle's no-vig line is a widely used proxy for true probability.

Do I need an API key?

Not for scan mode — Polymarket's Gamma API is public. For divergence mode you supply your own The Odds API key; the free tier (500 credits/month) is plenty because this actor spends at most one credit per active sport league per run (Pinnacle-only counts as a single region).

How are Polymarket markets matched to sportsbook games?

By normalized team names (both orientations — Polymarket titles don't guarantee home team first) plus a ±12 h game-time window. Exact name matches are high confidence; token-subset/nickname matches are medium. Anything weaker is dropped rather than guessed.

How does it handle soccer's three-way (draw) odds?

The fair probability is computed over all three outcomes, so a team's implied_prob_novig already counts draws against it — directly comparable to Polymarket's binary "Will X win?" markets. Draw markets themselves match the book's Draw outcome. Double-chance or "to advance/qualify" markets are excluded from matching entirely.

Which sports are supported?

Scan: everything under Polymarket's Sports tag. Divergence: nba, wnba, nfl, mlb, nhl, ufc, boxing, soccer (top leagues + World Cup), tennis and cricket — golf, F1 and esports have no usable h2h coverage on The Odds API.

Is my Odds API key stored anywhere?

No. It is used for this run's HTTP requests only — never written to the dataset, key-value store, or logs (HTTP client URL logging is explicitly disabled, and error messages are scrubbed).

Is this financial advice?

No. It is market data plus arithmetic. Prediction markets and sports betting carry real risk; sizing outputs are informational.

Limitations

  • Matching is conservative by design — markets that can't be matched at medium-or-better confidence produce no signal at all. Expect coverage, not completeness.
  • Gamma prices can lag the live order book (responses are CDN-cached up to 5 minutes, and yes_price is the Gamma outcome price, not CLOB top-of-book). Always verify the live book before trading; outcome_token_ids are included so you can query the CLOB directly.
  • Divergence covers game-level moneyline markets only — no totals, spreads, props, or outright/futures markets.
  • liquidity is total deposited liquidity, not depth at the current price — don't size positions off it.
  • The Odds API stops listing games near/after start; Polymarket may still show them. Postponed games can mismatch on date.
  • event_date falls back to the market end date when Gamma omits gameStartTime; rescheduled games can then fall outside the ±12 h match window — missed signals, never false matches.
  • When Gamma tags are generic, sport comes from a text classifier; rare cross-sport team-name clashes (e.g. an NHL "Kings vs Oilers" title without league tags classifies as nba) can make a sports filter miss a market.
  • The buyer's The Odds API key is required for divergence mode; without it the run still succeeds and ships scan records.
  • Not financial advice.

Use with AI agents (MCP)

Connect your agent to the Apify MCP server (mcp.apify.com) and it can call this actor as a tool: ask for "scan Polymarket soccer markets over $10k volume" or "find divergence vs Pinnacle above 5% in MLB" and the agent fills the input schema (mode, sports, minVolume, minEdgePct) itself. Pair the scan output with the CLOB token ids for execution research.

More prediction-market data actors