Polymarket Kalshi Arbitrage Finder & Monitor avatar

Polymarket Kalshi Arbitrage Finder & Monitor

Pricing

from $8.00 / 1,000 opportunity founds

Go to Apify Store
Polymarket Kalshi Arbitrage Finder & Monitor

Polymarket Kalshi Arbitrage Finder & Monitor

Finds matched markets across Polymarket and Kalshi and computes fee-adjusted, order-book-depth-aware arbitrage edges. Monitor mode emits only new or changed opportunities and can push webhook alerts.

Pricing

from $8.00 / 1,000 opportunity founds

Rating

0.0

(0)

Developer

Anton König

Anton König

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

4

Monthly active users

2 months ago

Last modified

Categories

Share

Find matched markets across Polymarket and Kalshi and compute fee-adjusted, order-book-depth-aware arbitrage edges. Run it once for a snapshot, or on a schedule in monitor mode to get only new / widened / gone opportunities, optionally pushed to your webhook.

Built for people who actually trade prediction-market arbitrage, not for screenshots: every number is computed the way your fill would really happen.

Why this one (what incumbents get wrong)

  • Fee-correct. Polymarket now charges taker fees on many markets (fee = shares x rate x p x (1-p), rate 0.07 crypto / 0.05 sports / 0.04 finance & politics, read per-market from the API). Kalshi charges 0.07 x C x P x (1-P) rounded up per fill. Most scanners compare raw prices and call it "arbitrage". This actor outputs the edge after both venues' real fees.
  • Depth-aware. Order books are walked with your configured stake (default $100 per leg) to get executable average prices, not top-of-book fantasy. Polymarket's CLOB returns asks in descending order; naive scanners read the worst price as the best. This actor sorts correctly.
  • Match honesty. Cross-venue matching runs fuzzy scoring behind four hard gates: resolution-date window, numeric strike overlap, month-deadline consistency, opposite-direction words (increase vs cut, above vs below) and event stage (on the ballot vs passes are different events). Every row carries its match_confidence. Suspiciously large edges on imperfect matches are flagged match_review_recommended, because a 20% "arb" is almost always a wrong pairing rather than free money. Known-bad pairs can be suppressed via excludePairIds.

What you get (dataset row)

{
"pair_id": "516923__KXUSAIRANAGREEMENT-27-26SEP",
"question": "US-Iran Final Nuclear Deal by August 31, 2026?",
"match_confidence": 89,
"pm_url": "https://polymarket.com/market/us-iran-final-nuclear-deal-by-august-31",
"kalshi_url": "https://kalshi.com/markets/KXUSAIRANAGREEMENT",
"direction": "buy_kalshi_yes__buy_pm_no",
"exec_price_a": 0.093, "exec_price_b": 0.899,
"shares": 105.3, "cost_usd": 104.50,
"gross_spread_pct": 0.8,
"fee_adjusted_edge_pct": 0.73,
"edge_usd": 0.77,
"annualized_return_pct": 8.0,
"days_to_resolution": 33.4,
"change_type": "new",
"match_review_recommended": false
}

Both directions are evaluated for every pair: buy_pm_yes + buy_kalshi_no and buy_kalshi_yes + buy_pm_no. If the fee-adjusted sum of executable prices is below $1.00, the difference is locked in at resolution (assuming the two markets resolve identically, which is what match_confidence and your review are for).

The full matched-pair table (all cross-venue pairs with confidence scores and URLs) is stored in the key-value store under matched_pairs.

Monitor mode

Schedule the actor (e.g. every 10 minutes) with monitorMode: true:

  • remembers the previous run's opportunities in the key-value store,
  • emits only new, widened (>= +0.25pp), narrowed, gone rows,
  • POSTs new/widened rows to your webhookUrl as JSON, so you can alert into Discord, Slack (via relay), or your own bot.

Input

FieldDefaultMeaning
minEdgePct0only output rows at/above this fee-adjusted edge
stakeUsd100stake per leg used for the depth walk
minMatchConfidence88fuzzy-match threshold (the four gates always apply on top); lower it to 80 to widen the net and review pairs yourself
monitorModefalseemit only changes vs previous run
webhookUrlnonepush alerts to this URL
excludePairIds[]suppress known-bad pairs

Data sources

Official public read APIs only, no scraping, no login: Polymarket Gamma + CLOB, Kalshi trade-api v2. The actor is read-only and never places orders.

Honest limitations

  • An "arb" is only riskless if the two markets truly resolve identically. Read both rule pages before trading; the actor gives you both URLs and a confidence score, not legal advice.
  • Executable size is limited by the thinner book; shares tells you the size the stake could actually fill at the quoted prices.
  • Settlement timing differs between venues; capital can be locked until both resolve.

Keywords

polymarket arbitrage, kalshi arbitrage, prediction market arbitrage, polymarket kalshi matched markets, cross-market spread scanner, prediction market scanner, polymarket api, kalshi api, arbitrage monitor, prediction market alerts