Kalshi Market Scraper avatar

Kalshi Market Scraper

Pricing

from $1.63 / 1,000 kalshi market rows

Go to Apify Store
Kalshi Market Scraper

Kalshi Market Scraper

A scraper for public Kalshi prediction markets: prices, volume, open interest, close times and settlement rules for open or settled markets, by series, by event or by ticker. No login, no API key, no personal data.

Pricing

from $1.63 / 1,000 kalshi market rows

Rating

0.0

(0)

Developer

Leonardo Santos

Leonardo Santos

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape public Kalshi prediction markets: walk the open event listing for a series or the whole board, or resolve specific markets and events by ticker. Every row is flat, typed and null-safe for pricing research, market monitoring, spreadsheets and agent pipelines.

Why this actor?

  • Two buyer-shaped modes: search (the public event listing, one row per market) and detail (resolve exact market or event tickers).
  • One flat row per market: ticker, event and series tickers, market and event titles, category, status, yes/no bids and asks, last and previous price, volume, 24h volume, open interest, liquidity, open/close/expiration times, settlement result, primary rules and the canonical record URL.
  • Real pagination with a hard page bound: the listing is walked in 10-event pages via its cursor until maxItems markets are delivered or the listing ends, and duplicates never double-deliver.
  • Blank or malformed tickers, tickers Kalshi does not know, filters that match nothing and blocked or throttled fetches are free error rows.
  • Public JSON surface only: no login, no API key, no personal data, no challenge bypass.

Input

{"mode":"search","seriesTicker":"KXNFLGAME","status":"open","maxItems":100}

For one exact instrument, set mode to detail and provide tickers:

{"mode":"detail","tickers":["KXNFLGAME-26SEP20CLETB"]}
InputMeaning
modesearch (walk the public event listing) or detail (resolve exact tickers).
seriesTickersearch mode: restrict the listing to one Kalshi series, e.g. KXNFLGAME (NFL games), KXBTCD (Bitcoin price), KXFED (Fed decisions). Empty lists the whole board.
statussearch mode: open (default), unopened, closed, settled or any.
tickersdetail mode: market tickers (KXNFLGAME-26SEP20CLETB-TB) or event tickers (KXNFLGAME-26SEP20CLETB); an event ticker returns every market in that event. Deduplicated and capped at 25 per run.
maxItemsHard local cap of delivered market rows (1–1000, default 100).
proxyConfigurationProxy for the public Kalshi trade API; datacenter is the default.

Output

One row per market. This one was captured from the public record KXNFLGAME-26SEP20CLETB-TB on 2026-09-20:

{"input":"KXNFLGAME-26SEP20CLETB","mode":"detail","source_type":"detail","source":"KXNFLGAME-26SEP20CLETB","ticker":"KXNFLGAME-26SEP20CLETB-TB","event_ticker":"KXNFLGAME-26SEP20CLETB","series_ticker":"KXNFLGAME","title":"Tampa Bay wins","subtitle":"Tampa Bay","event_title":"CLE Browns vs TB Buccaneers","event_subtitle":"CLE vs TB (Sep 20)","category":"Sports","status":"active","market_type":"binary","strike_type":"structured","yes_bid":0.78,"yes_ask":0.79,"no_bid":0.21,"no_ask":0.22,"last_price":0.79,"previous_price":0.79,"volume":254522.52,"volume_24h":131022.43,"open_interest":217288.11,"liquidity":0,"open_time":"2026-08-25T15:33:00Z","close_time":"2026-09-22T17:00:00Z","expiration_time":"2026-09-22T17:00:00Z","expected_expiration_time":"2026-09-20T20:00:00Z","result":null,"can_close_early":true,"rules_primary":"If Tampa Bay wins the CLE Browns vs TB Buccaneers Pro Football game originally scheduled for Sep 20, 2026, then the market resolves to Yes.","url":"https://api.elections.kalshi.com/trade-api/v2/markets/KXNFLGAME-26SEP20CLETB-TB","error":null,"scraped_at":"2026-09-20T10:00:00.000Z"}
FieldMeaning
modeWhich mode produced the row: search or detail.
inputThe input exactly as provided (series ticker, market/event ticker) — or the listing filter a search row came from.
source_typesearch for listing rows, detail for a resolved ticker.
sourceNormalized source: the series filter, or the ticker that was resolved.
tickerKalshi market ticker — the row's unique key.
event_tickerThe event this market belongs to.
series_tickerThe series this market belongs to.
titleMarket title, e.g. Tampa Bay wins.
subtitleThe market's yes-side subtitle, e.g. Tampa Bay or $71,600 or above.
event_titleEvent title, e.g. CLE Browns vs TB Buccaneers.
event_subtitleEvent subtitle, e.g. CLE vs TB (Sep 20).
categoryEvent category, e.g. Sports, Economics, World.
statusMarket status as upstream reports it (active, closed, settled).
market_typeMarket type, e.g. binary.
strike_typeStrike type, e.g. structured, custom, greater, less.
yes_bid / yes_askBest yes bid / ask in dollars (0–1).
no_bid / no_askBest no bid / ask in dollars (0–1).
last_priceLast traded price in dollars (0–1).
previous_pricePrevious traded price in dollars (0–1).
volumeTotal traded contracts.
volume_24hContracts traded in the last 24 hours.
open_interestOpen interest in contracts.
liquidityQuoted liquidity in dollars.
open_timeMarket open time, ISO 8601.
close_timeMarket close time, ISO 8601.
expiration_timeExpiration time, ISO 8601.
expected_expiration_timeExpected expiration time, ISO 8601.
resultSettlement result (yes / no); null while the market is open.
can_close_earlyWhether the market may close before its close time.
rules_primaryThe market's primary settlement rule as published upstream.
urlCanonical public record URL for this market.
errorFree per-input error message; null on market rows.
scraped_atExtraction timestamp.

Pricing

Pay per event, and the platform usage is on us — the price you see is the price you pay, with no compute bill on top.

EventPriceWhat one charge buys
Kalshi market row$0.0025One delivered public Kalshi market row: market, event and series tickers, market and event titles, category, status, yes/no bids and asks, last and previous price, volume, 24h volume, open interest, liquidity, open, close and expiration times, settlement result, primary rules and the canonical record URL. Free and never charged: a blank or malformed ticker, a ticker Kalshi does not know, a listing filter that matches no market, and any blocked, throttled, 5xx or timeout fetch.
Actor Start$0.002One run, whatever it returns.

Higher Apify subscription tiers pay less on every event (Silver −20%, Gold −35%).

Notes

  • The surface is Kalshi's public trade API (https://api.elections.kalshi.com/trade-api/v2), the same open JSON surface the radar preflight measured from datacenter space (one 200 application/json, 71176 bytes for GET /markets?limit=20). The kalshi.com website is deliberately not part of the surface: every request to it is answered HTTP 429 with X-Vercel-Mitigated: challenge. A challenge marker is a finding, not something to work around.
  • search mode walks GET /events?status=…&series_ticker=…&limit=10&with_nested_markets=true in 10-event pages (each event carries its nested markets), following the response cursor until maxItems markets are delivered, the cursor runs out, or 20 pages have been fetched. A market is delivered once: rows are deduplicated by ticker across the whole run.
  • detail mode resolves a market ticker through GET /markets/{ticker}. An event ticker answers 404 there and is resolved through GET /events/{ticker}?with_nested_markets=true, which yields one row per market in that event. A bare market ticker also gets one best-effort, cached and capped (10 per run) event lookup for its event metadata; if that lookup fails the row is still delivered, with the event metadata null.
  • Free error rows, never charged: a blank or malformed ticker, a kalshi.com website URL (rejected by name, no request spent), a well-formed ticker Kalshi does not know (404 from both endpoints), a listing filter that matches no market (200 with an empty event list), and any throttled (429), refused (403/412), 5xx or timed-out fetch.
  • Requests go through the Apify proxy configured in proxyConfiguration (datacenter by default, recorded as proxyTier in .actor/publish.json).

Use cases

  • Track the odds of an event series over time (elections, Fed decisions, game lines) by pulling its markets on a schedule.
  • Price a whole open board for research, dashboards or external-market monitoring.
  • Resolve one market or event ticker on demand for an agent or a spreadsheet.

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Kalshi; it reads the same public JSON records the Kalshi web app reads, and publishes only publicly available market data.