Kalshi vs Polymarket Odds – Same Game, Both Prices avatar

Kalshi vs Polymarket Odds – Same Game, Both Prices

Pricing

from $2.00 / 1,000 matched games

Go to Apify Store
Kalshi vs Polymarket Odds – Same Game, Both Prices

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

Rowfeed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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_opportunity is true (default false). Can legitimately return zero rows.
  • includeUnmatched - also emit an uncharged matched: false row for every Kalshi game that had no confident Polymarket match, with an unmatched_reason (default false).
  • 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.