Kalshi Prediction Markets Scraper
Pricing
from $0.40 / 1,000 results
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
Maintained by CommunityActor 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)
| Field | Type | Description |
|---|---|---|
| ticker | string | Kalshi market ticker, e.g. KXBTCD-26NOV15-T100000 |
| event_ticker | string | Parent event ticker |
| series_ticker | string | Parent series ticker |
| title | string | Market question |
| subtitle | string | Contract subtitle |
| category | string | Politics, Economics, Crypto, Sports, Climate, … |
| status | string | open, closed or settled |
| market_type | string | binary or scalar |
| yes_bid | number | Best yes bid in cents |
| yes_ask | number | Best yes ask in cents |
| no_bid | number | Best no bid in cents |
| no_ask | number | Best no ask in cents |
| last_price | number | Last traded price in cents |
| previous_yes_bid | number | Prior session yes bid |
| previous_yes_ask | number | Prior session yes ask |
| previous_price | number | Prior session price |
| volume | integer | Lifetime contracts traded |
| volume_24h | integer | Contracts traded in the last 24 hours |
| open_interest | integer | Contracts currently open |
| liquidity | integer | Posted liquidity in cents |
| open_time | string | ISO timestamp |
| close_time | string | ISO timestamp |
| expiration_time | string | ISO timestamp |
| settlement_value | number | Final settlement value if settled |
| result | string | yes or no if settled |
| can_close_early | boolean | Early-close flag |
| rules_primary | string | Primary settlement rules |
| rules_secondary | string | Secondary settlement rules |
| orderbook | object | Live yes/no book (marketDetail with includeOrderbook) |
| recent_trades | array | Last 50 trades (marketDetail with includeTrades) |
| scraped_at | string | ISO timestamp |
Event record (events mode)
| Field | Type | Description |
|---|---|---|
| event_ticker | string | Event identifier |
| series_ticker | string | Parent series |
| title | string | Event title |
| sub_title | string | Event subtitle |
| category | string | Category |
| mutually_exclusive | boolean | Whether markets are mutually exclusive |
| strike_period | string | Strike period label |
| markets | array | Nested market records |
| market_count | integer | Number of nested markets |
| scraped_at | string | ISO 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
- Open the actor in Apify Console.
- Choose a mode: Markets for a filtered list, Market detail for specific tickers, Events for event-grouped output.
- For markets mode, set status, series ticker, event ticker, category and volume/OI floors.
- For marketDetail mode, paste one or more tickers and toggle order book and trades.
- Optionally cap max results to control cost.
- 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,
apifySDK, nativefetch. 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
cursorfield, 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 exposesminVolumeandminOpenInterestfilters to strip them out. SetminVolumeto 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.