Prediction Market Arb Scanner — Polymarket + Kalshi + PredictIt avatar

Prediction Market Arb Scanner — Polymarket + Kalshi + PredictIt

Pricing

$0.05 / actor start

Go to Apify Store
Prediction Market Arb Scanner — Polymarket + Kalshi + PredictIt

Prediction Market Arb Scanner — Polymarket + Kalshi + PredictIt

Scans Polymarket, Kalshi, and PredictIt for matching binary prediction markets and surfaces every cross-platform pair where buying YES on one and NO on the other locks in a risk-free profit. Wider net than a single pair — three platforms means three pairwise comparisons per scan.

Pricing

$0.05 / actor start

Rating

0.0

(0)

Developer

Cong

Cong

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scans Polymarket, Kalshi, and PredictIt simultaneously, matches binary prediction markets on the same topic across every platform pair, and surfaces price discrepancies where you can lock in a risk-free profit by buying YES on one platform and NO on the other.

This is a wider-net version of the two-platform Polymarket/Kalshi arb finder: with three sources, every scan checks three pairwise combinations (Polymarket x Kalshi, Polymarket x PredictIt, Kalshi x PredictIt) instead of just one, and results from all three are pooled into a single ranked list.

How the arbitrage works

All three platforms resolve the same way: YES pays $1.00/share, NO pays $0.00/share (or vice versa). If Polymarket prices a market at YES = $0.43 and PredictIt prices the matching contract at YES = $0.39:

ActionCostPayout if YESPayout if NO
Buy YES on PredictIt$0.39+$1.00$0.00
Buy NO on Polymarket$0.57$0.00+$1.00
Total$0.96$1.00$1.00

Guaranteed profit: $0.04 per share = ~4% return regardless of outcome.

Why PredictIt needs no credentials

Polymarket and PredictIt both expose public, unauthenticated market data APIs — no login required for either. Kalshi requires an account (email + password) to fetch live prices; without Kalshi credentials, the scan still runs Polymarket x PredictIt.

What you get per opportunity

FieldDescription
platform_pairWhich two platforms this opportunity spans, e.g. polymarket x predictit
spreadYES price difference between platforms (0-1 scale)
return_pctEstimated profit % per dollar risked
directionWhich platform to buy YES on, which to buy NO on
buy_yes_url / buy_no_urlDirect links to each side of the trade
cost_per_unit / profit_per_unitTotal cost to capture $1 payout, and guaranteed profit
similarity_scoreHow closely the two market questions matched (0-1)
<platform>_question, <platform>_yes_price, etc.Full per-platform detail for both legs of the trade

Input options

ParameterDefaultDescription
minSpread0.02Minimum price difference to flag (e.g. 0.05 = 5 cents)
minReturnPct0.5Minimum profit % to include
maxReturnPct100Sanity cap — excludes implausibly large "returns", which are almost always a false match rather than a real opportunity (see note below)
minSimilarity0.4Keyword match strictness (higher = fewer, more accurate matches). Below 0.4, unrelated markets sharing generic keywords (e.g. year numbers) can get matched and produce fake high-return results that sort to the top — see note below
minLiquidity0Filter out illiquid markets (PredictIt has no liquidity field, so PredictIt markets are exempt)
minVolume24h0Filter by 24h trading volume (PredictIt has no volume field, so PredictIt markets are exempt)
maxResults500Cap on results, sorted by return %
includePredictIttrueToggle PredictIt on/off
kalshiEmail / kalshiPasswordOptional — enables the Kalshi legs of the scan

Important notes

  • Not financial advice. Real arb requires all trades to fill simultaneously. Slippage, fees, and timing can reduce or eliminate the profit.
  • PredictIt is US-only and has contract price caps ($850 per contract per market as of this writing) — factor that into position sizing.
  • Matching uses IDF-weighted keyword similarity, not plain Jaccard. An earlier version used the same unweighted keyword-overlap algorithm as the existing Polymarket/Kalshi finder, and testing surfaced a serious failure mode on multi-candidate races: "Will Tim Scott win the 2028 Republican nomination?" and nine other longshot candidates all matched to the same PredictIt "Vance" contract, because the shared race boilerplate ("2028", "republican", "presidential", "nomination") outweighed the one word that actually distinguishes candidates — the surname. This version weights each keyword by inverse document frequency across the whole scan, so boilerplate shared by dozens of markets in the same race counts for little, while a candidate's surname (which appears in only one or two markets) dominates the score. Validated against live data: correct same-candidate matches now score 0.6–0.76, while every wrong-candidate match in the same race scores 0.27–0.36 — a clean gap the default 0.4 threshold sits in.
  • Also fixed: plural/singular mismatches on party names. Polymarket often phrases a question as "Will the Republicans win..." (plural) while PredictIt names the equivalent contract "Republican" (singular) — as plain strings these never overlap, so the one word that should anchor the match was silently missing, and a same-race two-party market could match to the opposite party's contract (confirmed live: a Kansas governor market matched to the Democratic contract instead of the near-identically-priced Republican one, producing a fake 100% "arb" that was really the same bet placed twice in the same direction). Keywords are now lightly singularized before matching, which fixed this specific case and reduced the overall result set from double/triple-digit fake returns to a realistic 0.5%–9% range in a full re-scan.
  • This is a real improvement, not a guarantee. Unusual phrasing, nicknames, or very short/common surnames could still occasionally produce a false match. Always verify the two markets resolve on the same underlying event and the same side of it before trading — a similarity_score below 0.5 deserves a manual look, and treat every result as a lead, not an executable trade.
  • maxReturnPct (default 100) additionally excludes any match claiming an implausibly large guaranteed return, which in practice is almost always a sign the matching got it wrong rather than a real opportunity.
  • Kalshi is CFTC-regulated and US-accessible; Polymarket is accessible to non-US users only; PredictIt operates under a CFTC no-action letter and is capped at 5,000 traders per market by regulation.
  • PredictIt's public API does not expose volume or liquidity data, so those two filters only ever narrow Polymarket/Kalshi results.

Example output

{
"platform_pair": "polymarket x predictit",
"similarity_score": 0.75,
"spread": 0.0395,
"return_pct": 4.11,
"profit_per_unit": 0.0395,
"cost_per_unit": 0.9605,
"direction": "Buy YES on predictit, NO on polymarket",
"buy_yes_on": "predictit",
"buy_yes_price": 0.39,
"buy_yes_question": "Who will win the 2028 Republican presidential nomination? - Vance",
"buy_yes_url": "https://www.predictit.org/markets/detail/...",
"buy_no_on": "polymarket",
"buy_no_price": 0.5705,
"buy_no_question": "Will J.D. Vance win the 2028 Republican presidential nomination?",
"buy_no_url": "https://polymarket.com/event/...",
"scanned_at": "2026-07-31T16:40:00.000Z"
}

Also from the same developer: