Skip to content
scrapeatlas.Dashboard

Search Kalshi markets

Try in Playground

Search Kalshi events by keyword, as kalshi.com search does. Each result is an event with its series, category, volume, trending flags and its markets with current Yes bid, ask and last price. Omit query to list the full ranked catalog. Page with cursor.

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

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

Query parameters
3
querystringquery

Optional search text, 1–200 characters. Omit it to list every event in Kalshi’s ranking.

min 1 chars · max 200 chars

Examplebitcoin
cursorstringquery

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

limitstringquery

Results per page, 1–50; default 20.

Example10
Response fields
68
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 relevance. 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.

Events in relevance order with Kalshi’s field names: event_ticker, series_ticker, event_title, event_subtitle, series_title, category, tags, volume totals, market counts, trending flags and product_metadata.

up to 50 items

results.event_tickerstring

Always included.

results.series_tickerstring

Always included.

results.event_titlestringoptional

Optional.

results.event_subtitlestringoptional

Optional.

results.series_titlestringoptional

Optional.

results.categorystringoptional

Optional.

results.typestringoptional

Optional.

results.tagsstring[]optional

Optional.

up to 100 items

results.is_trendingbooleanoptional

Optional.

results.is_newbooleanoptional

Optional.

results.is_closingbooleanoptional

Optional.

results.is_price_deltabooleanoptional

Optional.

results.total_volumeintegeroptional

Optional.

results.total_series_volumeintegeroptional

Optional.

results.recent_volumeintegeroptional

Optional.

results.active_market_countintegeroptional

Optional.

results.total_market_countintegeroptional

Optional.

results.fee_typestringoptional

Optional.

results.fee_multipliernumberoptional

Optional.

results.search_scoreintegeroptional

Optional.

results.milestone_idstringoptional

Optional.

results.product_metadataobjectoptional

Optional.

Markets of the event: ticker, title, side labels, integer-cent prices (yes_bid, yes_ask, last_price, previous_price, price_delta), the same prices as dollar strings, volume, open and close times, result and image URLs.

up to 1000 items

results.markets.tickerstring

Always included.

results.markets.titlestringoptional

Optional.

results.markets.yes_subtitlestringoptional

Optional.

results.markets.no_subtitlestringoptional

Optional.

results.markets.market_idstringoptional

Optional.

results.markets.resultstringoptional

Optional.

results.markets.open_tsstringoptional

Optional.

results.markets.close_tsstringoptional

Optional.

results.markets.expected_expiration_tsstringoptional

Optional.

results.markets.yes_bidintegeroptional

Optional.

results.markets.yes_askintegeroptional

Optional.

results.markets.last_priceintegeroptional

Optional.

results.markets.previous_priceintegeroptional

Optional.

results.markets.price_deltaintegeroptional

Optional.

results.markets.volumeintegeroptional

Optional.

results.markets.yes_bid_dollarsstringoptional

Optional.

results.markets.yes_ask_dollarsstringoptional

Optional.

results.markets.last_price_dollarsstringoptional

Optional.

results.markets.previous_price_dollarsstringoptional

Optional.

results.markets.scoreintegeroptional

Optional.

results.markets.structured_target_idstringoptional

Optional.

results.markets.custom_strikeobjectoptional

Optional.

results.markets.icon_url_light_modestringoptional

Optional.

results.markets.icon_url_dark_modestringoptional

Optional.

results.markets.image_url_light_modestringoptional

Optional.

results.markets.image_url_dark_modestringoptional

Optional.

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.