Polymarket & Kalshi Odds Scraper — Prices & Arbitrage
Pricing
from $3.00 / 1,000 result rows
Polymarket & Kalshi Odds Scraper — Prices & Arbitrage
Scrape live prediction-market odds from Polymarket and Kalshi in one run: yes/no prices, implied probabilities, spread, 24h volume, liquidity and close time for every open market, plus cross-venue matches with the net arbitrage return. Public APIs, no login, JSON output.
Pricing
from $3.00 / 1,000 result rows
Rating
0.0
(0)
Developer
Galter Time
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Polymarket & Kalshi Odds Scraper — prices, implied probabilities and cross-venue arbitrage
Scrape live prediction-market odds from Polymarket and Kalshi in a single run and get clean JSON: every open market's yes/no prices, implied probability, bid–ask spread, 24-hour volume, liquidity, close time and link — plus cross-venue rows that pair the same question on both venues and compute the probability gap and the net arbitrage return after Kalshi fees. No login, no API keys, public endpoints only, ~10 seconds per run.

What can you do with Polymarket and Kalshi odds data?
- Track election, Fed, crypto and sports probabilities over time — schedule the Actor hourly and chart
implied_prob_yes. - Find prediction-market arbitrage —
venue: cross_venuerows show where buying YES on one venue and NO on the other costs less than $1 (net_return_pct > 0,arb: true). - Compare venues —
prob_gap_ptsshows where Kalshi and Polymarket disagree by 5, 10, 20 points. - Feed dashboards, alerts, spreadsheets and AI agents — stable schema, one row per market, MCP-ready.
How to get Polymarket odds as JSON (quick start)
Run with the defaults: you get the ~300 most-traded open markets on each venue plus cross-venue pairs.
Narrow with keyword (e.g. "Fed", "Bitcoin", "Super Bowl") or categories (["sports"], ["economics"], ["nfl"]).
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("galterapp/polymarket-kalshi-odds-scraper").call(run_input={"keyword": "Fed", "maxMarketsPerVenue": 100})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["venue"], row["question"], row["implied_prob_yes"])
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('galterapp/polymarket-kalshi-odds-scraper').call({ categories: ['sports'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
curl -X POST "https://api.apify.com/v2/acts/galterapp~polymarket-kalshi-odds-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \-H "content-type: application/json" -d '{"keyword":"Bitcoin"}'
Sample market row
{"venue":"polymarket","market_id":"will-the-fed-cut-rates-in-september","event":"Fed decision in September?","question":"Will the Fed cut rates in September?","category":"economy","yes_bid":0.62,"yes_ask":0.63,"implied_prob_yes":0.625,"spread":0.01,"volume_24h_usd":1834211.5,"liquidity_usd":412560.2,"close_time":"2026-09-17T18:00:00Z","url":"https://polymarket.com/event/fed-decision-in-september","ts":1788400000}
Sample cross-venue row
{"venue":"cross_venue","match_score":0.71,"kalshi_question":"Will the Fed cut rates at the September meeting?","polymarket_question":"Will the Fed cut rates in September?","kalshi_prob_yes":0.66,"polymarket_prob_yes":0.625,"prob_gap_pts":3.5,"best_direction":"polymarket_yes+kalshi_no","net_return_pct":0.84,"arb":true}
Input
| Field | Default | Meaning |
|---|---|---|
venues | both | polymarket, kalshi |
keyword | — | substring filter on event + question |
categories | all | Kalshi categories or Polymarket tag slugs |
minVolume24hUsd | 0 | drop thin markets |
maxMarketsPerVenue | 300 | rows per venue, most-traded first |
includeCrossVenue | true | add paired rows with net_return_pct |
matchThreshold | 0.5 | question-similarity needed to pair venues |
How the numbers are computed
implied_prob_yes= YES mid price (Kalshi: (bid+ask)/2, fallback last trade; Polymarket: outcome price).- Cross-venue
net_return_pct=1 − (YES ask on A + NO ask on B) − Kalshi fee (0.07·p·(1−p)) − 0.5% slippage buffer, best of both directions. - Pairing is by word overlap of the questions (
match_score). Always verify resolution rules and dates on both sites before trading — a pair with a high gap is often two different questions.
Notes
- Public market data only (Polymarket Gamma API, Kalshi trade API v2). Nothing stored, no wallet, no account.
- Not financial advice. Kalshi is US-regulated; Polymarket availability depends on your jurisdiction.
- Pricing: pay per row. A default run is ~600 market rows + a few dozen cross-venue rows.