Kalshi Scraper — Prediction Markets, Prices & History avatar

Kalshi Scraper — Prediction Markets, Prices & History

Pricing

$1.00 / 1,000 kalshi markets

Go to Apify Store
Kalshi Scraper — Prediction Markets, Prices & History

Kalshi Scraper — Prediction Markets, Prices & History

Collect Kalshi prediction markets by category, series, event or market ticker. Export numeric yes/no quotes, traded volume, open interest, rules, settlement outcomes, optional order books and price history.

Pricing

$1.00 / 1,000 kalshi markets

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Kalshi Scraper — Prediction Markets, Prices and History

Kalshi scraper exports prediction markets with yes/no quotes, traded volume, open interest, resolution rules and settlement outcomes. Select a category, search event text, or provide series, event and market tickers. Each delivered market becomes one dataset row that you can download as JSON, CSV or Excel and join to your own model using the market ticker.

The actor is useful for analysts tracking economic expectations, newsrooms comparing election outcomes, and weather modellers matching forecast brackets with observed temperatures. It collects public market data without requiring a Kalshi account. It does not place orders, manage a trading account or produce forecasts. An optional order book and price candles help you inspect the quoted spread and previous trading activity alongside each market record.

What the Kalshi scraper collects

A market is a single traded contract within an event. An event can contain several brackets or outcomes, and a series groups recurring events. Those identifiers have separate fields: ticker, event_ticker and series_ticker. The dataset also includes the full title, yes/no outcome labels, primary and secondary rules, opening and closing times, expected expiration, settlement time and the resolved result when the source publishes it.

Prices are numeric amounts in US dollars. A quote of 0.26 means $0.26 for that contract, not 26 dollars. Volume, volume over the last 24 hours, bid sizes and open interest are numeric contract quantities and can contain fractions. The source status is preserved, so an open market may report active, while a settled market may report finalized.

The symbol field equals the market ticker and asset_class is prediction_market. price is the last traded price when volume is positive. A never-traded market has price: null, even when the source's raw last-price value is zero. The separate last_price field preserves that numeric source value. Retrieval timestamps let you distinguish a newly collected quote from the market's own update and resolution timestamps.

Input

Start with categories, such as Economics, Elections, Financials, Sports or Weather. Category names are case-insensitive, and Weather means Climate and Weather. Other supported categories include Politics, Crypto, Commodities, Companies, Entertainment, Mentions, Science and Technology, Social and Business. Use query to search event text, for example fed.

For recurring contracts, provide series_tickers, such as KXHIGHNY. For a particular occurrence, use event_tickers, such as KXHIGHNY-26OCT10. For exact contracts, use market_tickers. Explicit series, events and market tickers form a combined selection; overlapping markets are delivered once. Categories can narrow that selection. With explicit tickers, a query matches the market title rather than the event search text. Supply tickers as arrays of strings, with at most 300 explicit tickers in total.

status defaults to open. Choose closed for closed but unsettled markets, settled for resolved contracts, or all to include any status. unopened is supported for explicit series and events; category and text browsing do not support that status. Exact market lookups return the requested contracts regardless of the status setting, including settled contracts. Older resolved contracts are included in settled series searches.

Without selectors the actor browses the market index. Combo markets are excluded by default; set include_combos to true to include multivariate contracts in browsing results. Exact market_tickers always return the explicitly requested contracts, including combos. min_volume discards markets below your chosen total traded contract count. max_markets defaults to 100 and allows up to 50,000 delivered rows. Smaller limits make broad searches easier to inspect.

Optional order books and price history

Set include_orderbook to true to attach yes and no bid levels. orderbook_depth defaults to 10 and supports 1 to 100 levels per side. Levels are sorted from the highest bid down, with a numeric price and quantity. An empty book contains two empty lists. These are bid books: a yes ask can be inferred from one dollar minus the best no bid. The main row's yes/no bid and ask fields remain the market's quoted values.

Set include_price_history to true to attach candles. history_interval accepts minute, hour or day and defaults to day. history_days defaults to 7 and supports up to 365 days, provided the window fits within 5,000 periods. Minute candles support up to 3 days and hourly candles up to 208 days. Choose daily candles for longer windows. Each candle contains a period-end timestamp, price open/high/low/close/mean, closing yes bid and ask, volume and open interest. Candles arrive oldest first and remain inside the requested lookback window.

The window ends at collection time for open markets. When a market closed earlier, it ends at that market's close time, using settlement time if the close time is absent. This also retrieves the final trading days of contracts resolved months ago. A valid time window can have no trading activity; in that case its history is an empty list. Missing candle prices remain null instead of being filled with an invented quote. If an optional request is unavailable, the market row still appears with a null block and a warning.

Output

The default dataset contains one row per delivered market. Order books and price history stay nested on that row and do not become additional dataset records. The OUTPUT record in the default key-value store holds the query, rows, warnings and collection status. Errors are recorded separately with a stable code and an English message.

The actor automatically follows continuation pages up to your requested row limit. Unknown market tickers in a mixed selection produce warnings while found markets are delivered. A selection with no matching market returns an empty dataset. Invalid categories or history windows are reported as input errors. Review warnings and partial when a source error or the run's collection time limit prevents complete retrieval. Prices can change during collection, so use fetched_at when comparing quotes from different rows or runs.

The collection budget is 1,800 seconds. Start with 100–500 markets when requesting order books or history. Large enriched selections may return fewer rows than max_markets; 50,000 is an input ceiling and does not guarantee that volume within one run. Check partial and the continuation cursor before using a large selection as a complete snapshot.

For a real resolved-market example, see the included example for the October 10, 2026 New York temperature event. Its rows preserve the fetched resolution values, settlement timestamps and rules from Kalshi. The weather example shows open contracts from the same recurring series. These examples describe captured source data, rather than a current quote.

Pricing

The billing unit is one delivered market. The current price per market is shown in the actor's Pricing tab. Order books and price history are included in that market's row and do not incur separate product events. Empty results incur no market charge, and this actor does not charge a product start event. Only rows actually delivered to the dataset count towards market billing; repeated tickers across continuation pages count once.

Non-paying users have a delivery cap of 10 market rows per run. This is a row limit, not a claim that charged rows are free. Use a small max_markets value to check a selection before requesting a broad collection. Market volume and order-book quantities describe exchange activity and do not affect the number of billed market rows.

FAQ

Do I need a Kalshi account or API key?

No. The actor collects public market information. Private account balances, positions, orders and personal trading history are outside its output.

Why do input and output statuses have different names?

Kalshi's status filters and market record statuses use different vocabularies. The actor accepts filter names such as open and settled while preserving source record values such as active and finalized, so downstream code can inspect the original status.

Why is the price null for a market that has quotes?

The core price field represents an executed trade. If the market has never traded, quoted bids and asks can exist while there is no last-trade price. Inspect the yes/no quote fields or implied probability for the quoted market view.

Can I collect older settled markets?

Yes. Settled and all-status series searches include the historical market archive. Exact market tickers can also retrieve resolved contracts. Price history ends at the earlier market close, so an old contract can return its final trading days even when collection happens months later. A window without activity still has an empty candle list.

Can I use the output to compare probabilities?

The actor supplies the published quotes, spread and an implied-probability estimate. Compare equivalent rules, closing times and settlement sources before treating two contracts as the same outcome. A contract's price and volume are market observations, and do not guarantee that an event will resolve in either direction.