Skip to content
scrapeatlas.Dashboard

List Kalshi market trades

Try in Playground

List the executed trades of a Kalshi market, newest first: price on each side, size, taker side and time. Filter with since and until and page with cursor; paging continues from recent trades into Kalshi’s archive of older trades.

GET/v1/kalshi/tradesx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
tickerstringrequiredquery

Market ticker.

ExampleKXWC-30-ESP
sincenumber | stringquery

Earliest trade time to include, ISO 8601 or Unix seconds.

untilnumber | stringquery

Trade time to stop before, ISO 8601 or Unix seconds; later than since.

cursorstringquery

Optional cursor from the previous response’s nextCursor. Omit for the first page.

limitstringquery

Trades per page, 1–500; default 100.

Example100
Response fields
31
requestIdstring

Request correlation UUID.

Upstream requests, decoded response bytes and elapsed milliseconds.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Kalshi public API URL the data was read from.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

order is newest_first; window echoes since/until. complete is false when a warning names an omission. order states the record order.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsstring[]

Always included.

coverage.orderenum

Always included.

one of: newest_first, oldest_first, ranked, relevance, source_order

Optional.

coverage.window.sincestringoptional

Optional.

coverage.window.untilstringoptional

Optional.

tickerstring

Market ticker.

Trades with Kalshi’s field names: trade_id, ticker, count_fp (contracts), yes_price_dollars, no_price_dollars, taker_outcome_side (yes or no), taker_book_side (bid or ask), taker_side, created_time and is_block_trade. Trades are anonymous.

up to 500 items

trades.trade_idstring

Always included.

trades.tickerstring

Always included.

trades.count_fpstring

Always included.

trades.yes_price_dollarsstring

Always included.

trades.no_price_dollarsstring

Always included.

trades.taker_sidestringoptional

Optional.

trades.taker_outcome_sidestring

Always included.

trades.taker_book_sidestring

Always included.

trades.created_timestring

Always included.

trades.is_block_tradeboolean

Always included.

archivedboolean

true when this page came from Kalshi’s archive of older trades.

nextCursorstringnullable

Cursor for the next page, or null on the last page. Pass it back as cursor.

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.

Error codes
11
HTTPfailure.codeMeaning
200partialUsable data with market_limit, metadata_unavailable, candle_limit, window_truncated, comment_limit or metrics_unavailable warnings.
400invalid_requestMissing, duplicate, malformed or unsupported parameters, a link outside kalshi.com/markets, a price-history window above its period limit, or parameters Kalshi rejected.
401unauthorizedMissing or invalid worker API key.
404not_foundUnknown market, event, series, post or trader.
429upstream_rate_limitedKalshi rate limited the request.
502upstream_challengedKalshi refused the public request.
502unsupported_pageMalformed, mismatched or non-JSON source data.
502response_too_large payload_too_complexResponse exceeded byte or parsing limits.
502unsafe_redirect request_limit upstream_errorBounded source retrieval could not complete.
503busyAll worker slots and the waiting queue are occupied.
504timeoutTotal request deadline expired.