Get Kalshi price history
Get price candles for one Kalshi market, or for every market of an event in one call: traded price open, high, low, close and mean, Yes bid and ask, volume and open interest per minute, hour or day. Periods without trades carry only the previous price.
/v1/kalshi/price-historyx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Market ticker. Provide ticker or eventTicker.
KXWC-30-ESPEvent ticker: returns aligned candles for each market of the event.
1m, 1h (default) or 1d.
one of: 1m, 1h, 1d
1dStart time, ISO 8601 or Unix seconds. Defaults to 6 hours (1m), 7 days (1h) or 180 days (1d) before until.
End time, ISO 8601 or Unix seconds; defaults to now. A market request covers at most 5,000 periods, an event request at most 500. Kalshi returns up to 5,000 candles per event read across all its markets; a longer event window keeps its latest periods and reports window_truncated.
Request correlation UUID.
Upstream requests, decoded response bytes and elapsed milliseconds.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed or challenged. HTTP 200 can be partial.
one of: success, partial
Kalshi public API URL the data was read from.
absolute HTTPS URL
UTC retrieval time.
order is oldest_first; window echoes since/until, or gives the period actually returned when an event window was shortened. complete is false with window_truncated or candle_limit when an event response was shortened.
Always included.
Always included.
Always included.
Always included.
one of: newest_first, oldest_first, ranked, relevance, source_order
Optional.
Optional.
Optional.
1m, 1h (default) or 1d.
one of: 1m, 1h, 1d
Market ticker. Provide ticker or eventTicker.
Event ticker: returns aligned candles for each market of the event.
true when the market was read from Kalshi’s archive of settled markets.
For an event: the end time Kalshi applied, Unix seconds.
One entry per market: market_ticker and candlesticks, oldest first.
up to 1000 items
Always included.
Candles: end_period_ts (Unix seconds), volume_fp, open_interest_fp, price (open/high/low/close/mean_dollars when traded, previous_dollars), yes_bid and yes_ask (open/high/low/close_dollars). Archived candles are returned in the same shape.
up to 5000 items
Always included.
Optional.
Optional.
Always included.
Optional.
Optional.
Optional.
Optional.
Optional.
Optional.
Always included.
Optional.
Optional.
Optional.
Optional.
Always included.
Optional.
Optional.
Optional.
Optional.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| HTTP | failure.code | Meaning |
|---|---|---|
| 200 | partial | Usable data with market_limit, metadata_unavailable, candle_limit, window_truncated, comment_limit or metrics_unavailable warnings. |
| 400 | invalid_request | Missing, duplicate, malformed or unsupported parameters, a link outside kalshi.com/markets, a price-history window above its period limit, or parameters Kalshi rejected. |
| 401 | unauthorized | Missing or invalid worker API key. |
| 404 | not_found | Unknown market, event, series, post or trader. |
| 429 | upstream_rate_limited | Kalshi rate limited the request. |
| 502 | upstream_challenged | Kalshi refused the public request. |
| 502 | unsupported_page | Malformed, mismatched or non-JSON source data. |
| 502 | response_too_large payload_too_complex | Response exceeded byte or parsing limits. |
| 502 | unsafe_redirect request_limit upstream_error | Bounded source retrieval could not complete. |
| 503 | busy | All worker slots and the waiting queue are occupied. |
| 504 | timeout | Total request deadline expired. |