Kalshi Prediction Markets Scraper avatar

Kalshi Prediction Markets Scraper

Pricing

from $0.40 / 1,000 results

Go to Apify Store
Kalshi Prediction Markets Scraper

Kalshi Prediction Markets Scraper

Scrape Kalshi prediction markets: live prices, yes/no odds, volume, open interest, order book depth and recent trades. Keyless, no API key, HTTP-only.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

Aurenic

Aurenic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape Kalshi prediction markets for live prices, yes/no odds, volume, open interest, order book depth and recent trades — keyless, no API key, HTTP-only.

What does Kalshi Prediction Markets Scraper do?

Kalshi is the CFTC-regulated prediction market exchange where contracts settle on real-world events: elections, economic data, crypto prices, weather, sports and more. This actor reads Kalshi's public REST API and returns structured records. It supports three modes: a filtered market list across every open series, a per-ticker detail pull with live order book and recent trades, and an events view that nests each event's markets under one row.

Output fields

Market record (markets and marketDetail modes)

FieldTypeDescription
tickerstringKalshi market ticker, e.g. KXBTCD-26NOV15-T100000
event_tickerstringParent event ticker
series_tickerstringParent series ticker
titlestringMarket question
subtitlestringContract subtitle
categorystringPolitics, Economics, Crypto, Sports, Climate, …
statusstringopen, closed or settled
market_typestringbinary or scalar
yes_bidnumberBest yes bid in cents
yes_asknumberBest yes ask in cents
no_bidnumberBest no bid in cents
no_asknumberBest no ask in cents
last_pricenumberLast traded price in cents
previous_yes_bidnumberPrior session yes bid
previous_yes_asknumberPrior session yes ask
previous_pricenumberPrior session price
volumeintegerLifetime contracts traded
volume_24hintegerContracts traded in the last 24 hours
open_interestintegerContracts currently open
liquidityintegerPosted liquidity in cents
open_timestringISO timestamp
close_timestringISO timestamp
expiration_timestringISO timestamp
settlement_valuenumberFinal settlement value if settled
resultstringyes or no if settled
can_close_earlybooleanEarly-close flag
rules_primarystringPrimary settlement rules
rules_secondarystringSecondary settlement rules
orderbookobjectLive yes/no book (marketDetail with includeOrderbook)
recent_tradesarrayLast 50 trades (marketDetail with includeTrades)
scraped_atstringISO timestamp

Event record (events mode)

FieldTypeDescription
event_tickerstringEvent identifier
series_tickerstringParent series
titlestringEvent title
sub_titlestringEvent subtitle
categorystringCategory
mutually_exclusivebooleanWhether markets are mutually exclusive
strike_periodstringStrike period label
marketsarrayNested market records
market_countintegerNumber of nested markets
scraped_atstringISO timestamp

Who is it for?

  • Prediction-market traders building dashboards and alerting on price moves
  • Quantitative researchers studying market efficiency, liquidity and calibration
  • Financial analysts tracking implied probabilities for elections, CPI prints and Fed decisions
  • Sports bettors comparing Kalshi lines against traditional sportsbooks
  • Data teams building event-probability feeds for newsrooms, funds and AI agents
  • Arbitrage desks comparing Kalshi prices against Polymarket, PredictIt and sportsbook lines

Pricing

Pay per result: $0.40 per 1,000 records.

You are charged only for records actually written to the dataset. A run that returns nothing is not billed.

How to use it

  1. Open the actor in Apify Console.
  2. Choose a mode: Markets for a filtered list, Market detail for specific tickers, Events for event-grouped output.
  3. For markets mode, set status, series ticker, event ticker, category and volume/OI floors.
  4. For marketDetail mode, paste one or more tickers and toggle order book and trades.
  5. Optionally cap max results to control cost.
  6. Click Start and export as JSON, CSV or Excel.

Output example

{
"ticker": "KXBTCD-26NOV15-T100000",
"event_ticker": "KXBTCD-26NOV15",
"series_ticker": "KXBTCD",
"title": "Bitcoin price on Nov 15, 2026?",
"subtitle": "$100,000 or above",
"category": "Crypto",
"status": "open",
"market_type": "binary",
"yes_bid": 42,
"yes_ask": 44,
"no_bid": 56,
"no_ask": 58,
"last_price": 43,
"volume": 18420,
"volume_24h": 3120,
"open_interest": 8740,
"liquidity": 142000,
"open_time": "2026-09-01T00:00:00Z",
"close_time": "2026-11-15T15:00:00Z",
"expiration_time": "2026-11-15T15:00:00Z",
"result": null,
"scraped_at": "2026-09-28T12:00:00.000Z"
}

Technical details

  • Stack: Node.js 24, apify SDK, native fetch. No browser, no proxy, no TLS impersonation needed.
  • API: Kalshi's public REST API at https://api.elections.kalshi.com/trade-api/v2. Market, event, order book and trade endpoints all answer without an API key. Read rate limit is roughly 20 requests per second on the entry tier.
  • Pagination: Cursor-based via the cursor field, 200 rows per page, up to 100 pages.
  • Retries: 429 and 5xx responses are retried up to three times with backoff. 404s return null. Other HTTP errors fail fast.
  • Order book: Optional depth-10 snapshot per ticker.
  • Trades: Optional last-50 trade tape per ticker.

Known limits

  • Kalshi floods the /markets endpoint with zero-volume parlay markets. A 2026-09 changelog from a competing actor reported over 8,000 zero-volume parlay markets polluting /markets. This actor exposes minVolume and minOpenInterest filters to strip them out. Set minVolume to 1 or higher to skip the noise.
  • Read rate limit is roughly 20 requests per second. The actor paces itself at 250 ms between calls, which keeps it safely under that ceiling even with order book and trade fetches enabled.
  • Settlement value and result are null until the market resolves. Open markets carry neither field.
  • Order book depth is capped at 10 levels per side. Deeper books are not exposed by the public endpoint without authentication.
  • Historical markets older than the live window are not covered. Kalshi's historical endpoints sit under a separate path and are not part of this actor.

FAQ

Do I need a Kalshi account or API key? No. Every endpoint this actor calls is public and answers without authentication.

Why is minVolume useful? Kalshi creates thousands of zero-volume parlay markets that pollute the markets list. Set minVolume to 1 or minOpenInterest to 1 to strip them and keep only markets that actually trade.

How often does Kalshi update prices? Continuously during market hours. Prediction-market prices move on news and order flow. Schedule the actor every few minutes if you need a live feed.

Does this cover Kalshi's sports markets? Yes. Sports markets appear under the Sports category. Use the category filter or a series ticker to isolate them.

Can I get the full order book? The public order book endpoint returns 10 levels per side. Deeper books require an authenticated session, which this actor does not use.

What is the difference between markets and events mode? Markets mode returns one flat row per contract, best for time-series and screening. Events mode returns one row per event with its markets nested, best for a clean event-level view.

Support

Open an issue on the Actor's page for bugs or feature requests.

Changelog

0.1 — 2026-09-28

  • Initial build. Keyless extraction of Kalshi prediction-market data from the public REST API.
  • Three modes: markets list, market detail with order book and trades, events with nested markets.
  • Filters: status, series ticker, event ticker, category, minimum volume, minimum open interest.
  • Cursor-based pagination at 200 rows per page.
  • Optional order book (depth 10) and last-50 trade tape per market.
  • Retries on 429 and 5xx with backoff; 404 returns null; other errors fail fast.
  • No proxy, no browser, no API key.