Kalshi vs Polymarket Odds – Same Game, Both Prices
Pricing
from $2.00 / 1,000 matched games
Kalshi vs Polymarket Odds – Same Game, Both Prices
The same game on Kalshi and Polymarket side by side: both teams' prices on each venue, the cheapest side, the price gap and the cross-venue arbitrage cost before fees. NFL, NBA, MLB, NHL.
Pricing
from $2.00 / 1,000 matched games
Rating
0.0
(0)
Developer
Rowfeed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Kalshi vs Polymarket Odds Comparison
Get the same sports game priced on both Kalshi and Polymarket, side by side, with the cheapest side, the price gap and the cross-venue arbitrage cost already worked out. Built for sports traders, odds-screen builders, betting-model developers and AI agents that poll this repeatedly. Every row is matched by real team-code and date data pulled live from both venues at run time, not by guessing - an ambiguous or unmatched game is dropped rather than force-fit.
- One row per matched game - both venues' bid/ask/mid for each team, which venue is cheaper for each side, the price gap, and whether buying the cheapest YES on both teams costs less than $1 before fees.
- Real team matching, not string luck - a static team table (city, nickname, Kalshi ticker code) keeps same-city pairs apart (Giants/Jets, Rams/Chargers, Lakers/Clippers, Yankees/Mets, Cubs/White Sox), and a game only matches when both team codes and the game date agree.
- NFL, NBA, MLB, NHL, filterable by minimum gap or arbitrage-only, with an optional audit view of every unmatched game and why it didn't match.
Example row (from a live run, 2026-09-24)
{"league": "NFL","game": "Green Bay Packers vs Atlanta Falcons","start_time": "2026-09-25T00:15:00+00:00","team_a": "Green Bay Packers","team_b": "Atlanta Falcons","kalshi_yes_bid_a": 0.69,"kalshi_yes_ask_a": 0.70,"kalshi_mid_a": 0.695,"kalshi_yes_bid_b": 0.30,"kalshi_yes_ask_b": 0.31,"kalshi_mid_b": 0.305,"polymarket_price_a": 0.695,"polymarket_best_bid_a": 0.69,"polymarket_best_ask_a": 0.70,"polymarket_price_b": 0.305,"polymarket_best_bid_b": 0.30,"polymarket_best_ask_b": 0.31,"gap_a": 0.0,"gap_b": 0.0,"best_venue_a": "kalshi","best_venue_b": "kalshi","cheapest_ask_a": 0.70,"cheapest_ask_b": 0.31,"arb_cost": 1.01,"arb_opportunity": false,"arb_edge": -0.01,"thin_market": false,"kalshi_event_ticker": "KXNFLGAME-26SEP24ATLGB","polymarket_event_slug": "nfl-atl-gb-2026-09-25","kalshi_url": "https://kalshi.com/markets/kxnflgame","polymarket_url": "https://polymarket.com/event/nfl-atl-gb-2026-09-25","kalshi_volume_a": 1281182.14,"kalshi_volume_b": 628492.21,"polymarket_volume": 273090.01,"polymarket_volume_24h": 145713.48,"match_confidence": "ticker_code","matched": true,"scraped_at": "2026-09-24T07:42:25+00:00"}
This particular game is a good example of why the before-fees caveat below matters: both venues price it
almost identically (a 0-cent gap on both sides), so arb_cost lands at 1.01 - one cent above $1, not an
opportunity. Real, liquid games are usually efficiently priced across venues; the gaps worth screening for
show up more in thinner markets.
Input
- leagues -
NFL,NBA,MLB,NHL(default: all four). NBA games start appearing once Polymarket opens its season markets; until then NBA simply contributes zero rows. - minGap - only keep a game if at least one side's price gap is at least this big (default
0, keeps everything). - onlyArbitrage - only keep games where
arb_opportunityis true (defaultfalse). Can legitimately return zero rows. - includeUnmatched - also emit an uncharged
matched: falserow for every Kalshi game that had no confident Polymarket match, with anunmatched_reason(defaultfalse). - maxGames - cap on matched rows returned, soonest game first (1-500, default
100).
Output
One JSON row per matched game (see the example above), plus optional unmatched-audit rows when
includeUnmatched is on. Download the dataset as JSON, CSV, Excel or HTML from the Apify Console, or pull
it through the API.
Pricing
Pay-per-event: $2 per 1,000 matched games (the game event, one per row in the main output) plus
$0.001 per run start. Unmatched-audit rows (includeUnmatched) are never charged.
Before you trade on this
arb_opportunity and arb_cost are computed before fees and slippage: Kalshi charges a trading fee on
top of the quoted price, and Polymarket's quoted best bid/ask already has a spread that can move against you
between quote and fill. Treat this as a screen for where to look closer, not a guaranteed risk-free trade.
thin_market is true when the cheapest leg on either side has never traded on that venue (zero lifetime volume). An "arbitrage" on such a row is usually a stale or tiny quote, so check kalshi_volume_a/_b and polymarket_volume before acting. Filter on thin_market: false to see only edges that have real trading behind them.
Not affiliated with Kalshi or Polymarket.