Kalshi Scraper — Markets, Odds, Volume & Order Books
Pricing
from $2.00 / 1,000 market scrapeds
Kalshi Scraper — Markets, Odds, Volume & Order Books
Export live Kalshi prediction-market data as clean rows: title, Yes/No prices, implied probability, spread, 24h volume, open interest, category and close date. Returns actively traded markets, not dead auto-generated ones.
Pricing
from $2.00 / 1,000 market scrapeds
Rating
0.0
(0)
Developer
Pixflor
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Export live markets from Kalshi, the CFTC-regulated prediction exchange, as clean spreadsheet rows: the question, the price, implied probability, spread, 24-hour volume, open interest, category and close date.
No API key. No account. No wallet. Set a filter, press start, export CSV or JSON.
Why this one returns markets you can actually use
Kalshi's public market list is dominated by auto-generated multi-game combo contracts that never trade. Measured on 31 July 2026: paging the flat market endpoint returned 3,000 markets with zero 24-hour volume, no order books and no category.
This Actor walks Kalshi's events instead, which is where the real exchange lives. Same measurement, same day: 6,755 markets, 943 with live 24-hour volume, 4,219 with open interest — every one carrying a real category.
Kalshi's API also offers no sort parameter, so this Actor collects a scan window and ranks it before returning. Ask for the 100 most-traded markets and you get 100 traded markets, not the first 100 the API happened to emit.
What you get
| Column | Example |
|---|---|
title | Will SPD win the next German election? |
category | Elections |
midPrice | 0.095 |
impliedProbability | 9.5 |
yesBid / yesAsk / spread | 0.09 / 0.10 / 0.01 |
volume24h / volume | 8418 |
openInterest | 31204 |
liquidity | 4820.50 |
closeTime | 2030-03-25T14:00:00Z |
rulesPrimary | full settlement rules text |
url | direct link to the market |
Prices are always normalised to dollars (0–1), so a row never mixes cents and dollars. Enable Include order book depth and each market also carries live Yes/No bid ladders, best price first.
Typical uses
- Track a topic. Schedule hourly on
searchQuery: "fed"and build a probability series. - Screen for what's live. Sort by open interest — the better liveness signal on Kalshi, since many real markets hold open positions without trading today.
- Compare venues. Pair with a Polymarket export to line the two exchanges up.
- Backtest. Set status to Settled and pull resolved markets with their outcomes.
- Watchlist. Pass exact
tickersand get just those, every run.
Example input
{"mode": "markets","status": "open","sortBy": "volume24h","category": "Economics","minOpenInterest": 100,"maxItems": 200}
Watchlist — only these contracts, filters ignored:
{"mode": "markets","tickers": ["KXGERELECTION-29MAR25-SPD"],"includeOrderBook": true,"orderBookDepth": 10}
Grouped view — one row per event with every contract nested inside:
{ "mode": "events", "status": "open", "category": "Politics", "maxItems": 50 }
Settings that matter
sortBy— the whole point.volume24hfor what's trading now,openInterestfor what people actually hold,closeTimefor what resolves soonest.minOpenInterest— the single most useful filter for cutting dormant contracts.category— Politics, Elections, Economics, Financials, Sports, Companies, Climate and Weather, Entertainment, Health, Science and Technology, World, Social, Transportation.maxItems— your cost ceiling. Set it deliberately.useFlatMarketList— off by default, and it should stay off. It enumerates every contract including the dead auto-generated ones. Only turn it on if that is genuinely what you want.
Pricing
Pay per event — you pay for rows returned, not for runtime.
| Event | Price |
|---|---|
| Actor start | $0.002 per run |
| Market or event row | $0.0015 each |
| Order book (per market) | $0.0008 each |
1,000 markets ≈ $1.50. Order books are only charged when you switch them on.
Reliability
Plain HTTP against Kalshi's documented public API — no headless browser, no bot-detection workarounds. Runs are fast and cheap, and the Actor doesn't break when a web page changes.
Every request retries with exponential backoff, and a failed page degrades the run instead of ending it. If your filters match nothing, the log tells you which filter to loosen rather than handing back a silent empty dataset.
Notes
- Data comes from Kalshi's public trade API and is provided as-is for research and analysis. It is not financial advice and carries no warranty of accuracy or timeliness.
- A row is a snapshot at
scrapedAt, not a live feed. Schedule the Actor if you need a series. - Many Kalshi markets legitimately have zero 24-hour volume. That is the market, not a bug —
use
minOpenInterestto filter for the ones with real positions behind them. - Kalshi restricts trading by jurisdiction. Reading public market data is a separate matter from trading; check your local rules before acting on anything here.
Questions or a bug?
Open an issue on the Issues tab with your input JSON and the run ID — that is usually enough to reproduce it straight away.