Polymarket + Kalshi Arbitrage Finder avatar

Polymarket + Kalshi Arbitrage Finder

Pricing

$1.80 / 1,000 arbitrage opportunities

Go to Apify Store
Polymarket + Kalshi Arbitrage Finder

Polymarket + Kalshi Arbitrage Finder

Compare public Polymarket and Kalshi binary markets. Get ranked theoretical arbitrage opportunities with prices, opposing legs, liquidity, match confidence, and direct market links.

Pricing

$1.80 / 1,000 arbitrage opportunities

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

🔎 Compare Polymarket and Kalshi opportunities

Built for prediction-market researchers, traders, and analysts, this Actor compares likely equivalent public binary markets on Polymarket and Kalshi. It returns ranked theoretical arbitrage opportunities with observed prices, opposing YES/NO legs, estimated economics, liquidity, volume, match evidence, warnings, and direct market links—without marketplace API keys or trading-account credentials.

Use it to:

📊 What data does the Actor return?

Each qualifying dataset row includes:

  • opportunityId — identity for the matched pair and recommended direction
  • polymarket and kalshi — market IDs, questions, direct URLs, observed YES/NO prices, and nullable close time, liquidity, recent volume, and resolution summary
  • legs — exactly two opposing contracts, each with its venue, YES or NO outcome, and observed price
  • totalCost, profitPerPayout, rawReturn, and priceSpread — unadjusted theoretical economics from observed prices
  • estimatedProfitPerPayout and estimatedReturn — net estimates after your fee and slippage assumptions
  • match — confidence score, supporting reasons, and review warnings
  • observedAt — when the estimate's prices and context were observed

Rows are ranked by estimated return. The Actor evaluates both cross-venue directions and keeps only positive theoretical opportunities that pass your filters. Nullable source fields remain null when a venue does not expose them.

🚀 How to run the Actor

  1. Open the Actor in Apify Console.
  2. Adjust the opportunity and market-quality filters, or keep the defaults.
  3. Click Start.
  4. Review the linked contracts and warnings in the default dataset before making any decision.

A run scans one configuration. Run separate scans when you need different filter sets.

🎛️ Input

{
"minPriceSpread": 2,
"minEstimatedReturn": 2,
"minMatchConfidence": 80,
"minLiquidity": 1000,
"minRecentVolume": 500,
"feePercent": 0.5,
"slippagePercent": 0.5,
"maxResults": 25
}
FieldMeaning
minPriceSpreadMinimum opposing-leg edge in percentage points, from 0 to 100
minEstimatedReturnMinimum theoretical return on total opposing-leg cost, as a percentage
minMatchConfidenceMinimum market-equivalence confidence from 0 to 100
minLiquidityMinimum source-reported USD liquidity on each venue; 0 allows any reported amount
minRecentVolumeMinimum source-reported recent USD volume on each venue; 0 allows any reported amount
feePercentConservative combined fees as a percentage of opposing-leg cost; raw economics remain available
slippagePercentConservative combined adverse slippage as a percentage of opposing-leg cost
maxResultsMaximum ranked opportunities to return, from 1 to 5,000

When a liquidity or volume threshold is above zero, a market with no reported value cannot pass that filter.

📦 Output

A shortened example of one conforming dataset item:

{
"opportunityId": "123456__KXPRESELECT-28-A__polymarket-yes",
"polymarket": {
"marketId": "123456",
"question": "Will Candidate A win the 2028 election?",
"url": "https://polymarket.com/event/example-market",
"yesPrice": 0.47,
"noPrice": 0.53,
"closeTime": "2028-11-08T00:00:00Z",
"liquidityUsd": 125000.5,
"recentVolumeUsd": 48500,
"resolutionSummary": "Resolves Yes if Candidate A is declared the winner."
},
"kalshi": {
"marketId": "KXPRESELECT-28-A",
"question": "Will Candidate A win the 2028 presidential election?",
"url": "https://kalshi.com/markets/kxpreselect",
"yesPrice": 0.55,
"noPrice": 0.45,
"closeTime": "2028-11-08T00:00:00Z",
"liquidityUsd": 98000,
"recentVolumeUsd": 32200,
"resolutionSummary": "Resolves Yes if Candidate A wins the election."
},
"legs": [
{ "venue": "polymarket", "outcome": "YES", "price": 0.47 },
{ "venue": "kalshi", "outcome": "NO", "price": 0.45 }
],
"totalCost": 0.92,
"profitPerPayout": 0.08,
"rawReturn": 8.695652,
"priceSpread": 8,
"estimatedProfitPerPayout": 0.0708,
"estimatedReturn": 7.695652,
"match": {
"confidence": 91,
"reasons": ["Questions identify the same candidate and election", "Close times align"],
"warnings": ["Review each venue's resolution rules before acting"]
},
"observedAt": "2026-07-17T14:30:00Z"
}

Export results as JSON, CSV, Excel, XML, or RSS from the Apify dataset, or retrieve them through the dataset API.

💳 Pricing

The Actor uses pay-per-event pricing. You are charged $0.0018 for each successful visible arbitrage opportunity written to the default dataset. A successful scan with no qualifying opportunities returns an empty dataset and has no opportunity charge. Platform usage charges may still apply according to your Apify plan.

🔌 Integrations

Use Apify's API, schedules, webhooks, dataset exports, and integrations with spreadsheets or automation tools. The Actor identifies opportunities but does not place trades, access private accounts, manage portfolios, or maintain change-only monitoring state between runs.

❓ FAQ

Why can a high-return opportunity still be risky?

The calculations use observed source prices and do not guarantee simultaneous fills. Fees, slippage, market movement, trading restrictions, and fill timing can reduce or eliminate an apparent edge.

Does a high match-confidence score prove the contracts are identical?

No. Confidence, reasons, timing evidence, and warnings help screen likely matches, but they are not an authoritative determination that resolution rules are legally or economically identical. Inspect both linked contracts before acting.

Why did my run return no rows?

There may be no positive theoretical opportunity that meets every configured spread, return, confidence, liquidity, and volume threshold. A missing source-reported liquidity or volume value also fails a nonzero threshold. An empty successful scan is valid and has no opportunity charge.

Does the Actor need Polymarket or Kalshi credentials?

No. It reads public market data and does not require marketplace API keys, wallets, or trading-account credentials.

Does the Actor cover every prediction-market venue?

No. Its cross-venue comparison is limited to public Polymarket and Kalshi binary markets that can be paired with enough evidence for evaluation.

Is this financial advice or an automated trading bot?

No. The output is research data, not financial advice, executable profit, or a guarantee. The Actor never executes trades or holds funds.

📝 Changelog

  • 0.1: Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré