Prediction Markets Scraper - Kalshi & Polymarket avatar

Prediction Markets Scraper - Kalshi & Polymarket

Pricing

from $1.00 / 1,000 markets

Go to Apify Store
Prediction Markets Scraper - Kalshi & Polymarket

Prediction Markets Scraper - Kalshi & Polymarket

Live Kalshi and Polymarket odds in one clean dataset: prices, implied probability, 24h and total volume, status, close time, optional order books. Most active markets first. No API key.

Pricing

from $1.00 / 1,000 markets

Rating

0.0

(0)

Developer

kfir messika

kfir messika

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Collect public market data from Kalshi and Polymarket into one consistent dataset. Market rows include outcome prices as decimals from 0 to 1, implied probability, volume, liquidity, status, timestamps, and direct links. No account or API key is needed for these public endpoints.

Use cases

  • Compare prices and liquidity across prediction markets
  • Research market activity and resolution timelines
  • Monitor markets for journalism and reporting
  • Build arbitrage monitoring workflows (prices are snapshots; this actor does not calculate executable arbitrage)
  • Create scheduled data feeds for AI agents and MCP workflows

The default input checks both platforms and returns up to 20 markets, suitable for a run every few minutes. Larger runs can return up to 10,000 market rows.

Input

{
"platforms": ["kalshi", "polymarket"],
"search": "election",
"status": "open",
"category": "politics",
"minVolumeUsd": 100,
"maxMarkets": 20,
"includeOrderbook": false,
"includeComboMarkets": false
}

search matches title and question text. category is a keyword filter: Polymarket is matched against its reported category/tags; Kalshi is matched against any available category, series, ticker, and title text. status accepts open, closed, or all. Markets are split evenly between selected platforms when the maximum is reached. The actor scans up to ten Kalshi pages and three Polymarket pages, then sorts by 24-hour volume and total volume before selecting rows. Kalshi multivariate combo markets are excluded by default; set includeComboMarkets to true to include them. includeOrderbook retrieves the Kalshi market book or Polymarket CLOB books when token IDs are available and can make runs slower.

Output

Every market is one charged type: "market" row in the unified schema. Summary and error rows are free. yesPrice and noPrice represent the yes/no contract prices when the exchange reports those outcomes; for Polymarket two-outcome markets with named outcomes, they reflect the first and second outcomes respectively. Multi-outcome markets keep all prices in outcomes.

Trimmed live Polymarket response example:

{"type":"market","platform":"polymarket","marketId":"4884516","eventId":"663131","title":"Spread: Vancouver Whitecaps FC (-4.5)","question":"Spread: Vancouver Whitecaps FC (-4.5)","category":null,"outcomes":[{"name":"Vancouver Whitecaps FC","price":0.07,"probability":0.07},{"name":"Chicago Fire FC","price":0.93,"probability":0.93}],"yesPrice":0.07,"noPrice":0.93,"impliedProbability":0.07,"volumeUsd":9.99975,"volume24hUsd":null,"liquidityUsd":1751.0014,"openInterest":null,"status":"open","openTime":"2026-09-23T17:00:37Z","closeTime":"2026-10-07T00:30:00Z","resolution":"https://www.mlssoccer.com/schedule/scores","url":"https://polymarket.com/event/mls-chi-vwh-2026-07-16-spread-away-4pt5","scrapedAt":"2026-10-04T00:00:00.000Z"}

The Polymarket example uses prices from a live Gamma API response; scrapedAt is illustrative. Kalshi values are normalized from the public Trade API, including its floating point volume fields. Fields unavailable from a source are null.

Pricing

$1.00 per 1,000 market rows, charged through Apify pay-per-event event market-result. Summary and error rows are free. The actor works locally when pay-per-event pricing is not configured.

Limits and data notes

  • Public Kalshi Trade API and Polymarket Gamma API endpoints are paginated; requests have 20-second timeouts and retry 429 and 5xx responses with exponential backoff.
  • Requests are sequential and spaced between pages. Optional orderbook collection makes additional sequential calls.
  • The requested maximum is shared across the selected platforms and split evenly when both are selected.
  • Exchange fields can be missing, delayed, or updated between requests. Volume and liquidity are the values reported by each source and may not be directly comparable.
  • Prices and implied probabilities are quotes, not guarantees of execution or forecasts. Binary price conversions use 0-1 decimals.
  • Kalshi's public market object does not always include a category or liquidity value. In that case these output fields are null; category keyword filtering can also match ticker and title text.

FAQ

Do I need an API key? No. This version uses public endpoints.

Can it run on a schedule? Yes. Set an Apify schedule to run every N minutes and consume the resulting dataset.

Can I get order books? Set includeOrderbook to true. Books are fetched per market where a public endpoint and token identifier are available.

Are summaries charged? No. Only market rows use the market-result charge event.