Kalshi Market Monitor avatar

Kalshi Market Monitor

Pricing

from $0.40 / 1,000 market records

Go to Apify Store
Kalshi Market Monitor

Kalshi Market Monitor

Monitor live Kalshi prediction markets in one run: yes/no prices, bid-ask spreads, volume, liquidity and open interest, plus close dates and market status. Filter by status, series or event prefix and a creation window. Every run returns a fresh full-board snapshot; no account is needed.

Pricing

from $0.40 / 1,000 market records

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Categories

Features

Limited permissions

Share

Collect live Kalshi prediction markets in one run: yes/no bids and asks, last price, an indicative probability, volume, 24-hour volume, liquidity, open interest, open and close times and market status, one record per market. Filter by status, series (for example KXBTCD, the Bitcoin price ladder) or event prefix. Built for traders, analysts and bot builders who schedule runs and pipe the JSON into dashboards, alerts or models. No Kalshi account or API key is needed.

Data only, not financial advice.

Use cases

  • Market boards: a fresh snapshot of one market family (crypto ladders, sports games, economics) for a dashboard, refreshed on a schedule.
  • Price and probability tracking: store snapshots and chart how a market's midpoint and volume move toward its close.
  • Cross-venue comparison: map Kalshi tickers to Polymarket markets with crossVenueMap and compare the two venues side by side.
  • Bots and models: feed bids, asks and open interest into your own pricing or alerting logic.

Quick start

For a clean board, pick a series. This returns the open Bitcoin price ladder:

{"seriesTicker": "KXBTCD", "status": "open", "lookbackHours": 0, "maxMarkets": 200}

Clicking Start with the prefilled form (or an empty input {}) returns up to 200 open markets created in the last 7 days, newest-updated first, across all of Kalshi, each with its event title. Auto-generated multi-leg combo markets, which make up most of Kalshi's all-markets board and see little or no trading, are left out unless you turn on includeCombos.

Input

NameTypeDefaultWhat it does
statusstringopenopen, unopened, closed, settled, or all (every status).
seriesTickerstringemptyExact series ticker, for example KXBTCD (Bitcoin) or KXETHD (Ethereum).
eventTickerPrefixstringemptyKeep only markets whose event ticker starts with this prefix (case-insensitive).
includeCombosbooleanfalseInclude multi-leg combo markets when neither seriesTicker nor eventTickerPrefix is set. Series and prefix runs return exactly the markets they name either way.
lookbackHoursinteger168Keep only markets created within this many hours (0–336). 0 turns the window off. Markets without a published creation time are skipped while the window is on.
pageSizeinteger100Markets requested per page (1–1,000).
maxMarketsinteger200Maximum records returned after filters (1–2,000).
maxPagesinteger6Maximum pages read per run (1–30).
crossVenueMapobject{}Optional map of Kalshi market or event ticker to a Polymarket slug or condition ID (up to 500 entries). Matching rows carry a crossVenue object.
telegramChatIdstringemptyChat for an optional digest (cross-venue pairs and markets at or above alertMinUsd). Needs a TELEGRAM_BOT_TOKEN secret environment variable, so it suits your own copy of the Actor.
alertMinUsdnumber1000Markets with total volume at or above this USD value go into the digest; cross-venue pairs always do.
requestDelaySecsnumber0.25Pause between pages (0–10 seconds).

A misspelt input field stops the run with an error that names it.

Output

One dataset record per market: recordKey, source, kind, collectedAt, sourceUrl, ticker, eventTicker, eventTitle, question, status, active, closed, openTime, closeTime, createdTime, endDate (same as closeTime), lastPrice, yesBid, yesAsk, noBid, noAsk, yesProbability, noProbability, probabilitySource, outcomes, volume, volume24h, liquidity, openInterest, crossVenue.

  • Prices are in dollars per $1 contract. yesAsk/noAsk are the displayed buy quotes and yesBid/noBid the displayed sell quotes.
  • yesProbability is an indicative mark, not an executable quote: the midpoint of a real two-sided Yes quote (
    probabilitySource: bid_ask_midpoint
    ), otherwise the last trade when the market has traded (last_trade), otherwise null. A never-traded market's 0/1 placeholder quotes are kept as displayed but never turned into a 0% or 100% probability. noProbability is 1 - yesProbability.
  • eventTitle is the title of the market's event (for example the game or the date of a price ladder) and question the market's own title. Titles are filled for the first 100 events of a run, in output order; markets beyond that, or whose event can't be read, have eventTitle: null.
  • Values Kalshi doesn't publish (for example liquidity) are null, never guessed.

The run summary (key-value store OUTPUT) reports coverage counters (including how many combo markets were left out and how many records got an event title), the digest result and any warnings.

Output example

A real record from a run filtered to the NBA game series (KXNBAGAME), collected 2026-11-08, with eventTitle as Kalshi publishes it for this event:

{"recordKey":"kalshi:market:KXNBAGAME-26NOV11OKCPOR-POR","source":"kalshi","kind":"market","collectedAt":"2026-11-08T22:12:41.348692+00:00","sourceUrl":"https://kalshi.com/markets/KXNBAGAME-26NOV11OKCPOR-POR","ticker":"KXNBAGAME-26NOV11OKCPOR-POR","eventTicker":"KXNBAGAME-26NOV11OKCPOR","eventTitle":"Oklahoma City vs Portland","question":"Portland wins","status":"active","active":true,"closed":false,"openTime":"2026-11-08T03:06:34.769286Z","closeTime":"2026-11-14T03:00:00Z","createdTime":"2026-11-08T03:02:08.069006Z","endDate":"2026-11-14T03:00:00Z","lastPrice":0.53,"yesBid":0.47,"yesAsk":0.54,"noBid":0.46,"noAsk":0.53,"yesProbability":0.505,"noProbability":0.495,"probabilitySource":"bid_ask_midpoint","outcomes":[{"side":"yes","outcome":"Yes — Portland","price":0.53,"bid":0.47,"ask":0.54},{"side":"no","outcome":"No — Portland","price":null,"bid":0.46,"ask":0.53}],"volume":57.82,"volume24h":57.82,"liquidity":null,"openInterest":57.82,"crossVenue":null}

Pricing

  • $0.0004 per market record ($0.40 per 1,000 markets).
  • $0.00005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event.

Worked cost: the default 200-market board costs about $0.08; the maximum 2,000-market run about $0.80. Runs that match no markets add no record charge.

Scheduling and monitoring

  • Schedule a series-scoped run (for example every 15 minutes or every hour) and key your history on recordKey plus collectedAt to chart a market's prices over time.
  • Use lookbackHours to watch for newly listed markets in a series: a short window on a frequent schedule returns only markets created recently.

FAQ

How fresh is the data? Each run reads the live Kalshi board at run time; nothing is cached between runs.

How many markets can I collect? Up to 2,000 per run (maxMarkets) across up to 30 pages (maxPages). Raise pageSize to read more per page.

Can I get settled results? Yes: set status to settled or closed together with a seriesTicker.

Does it include order-book depth or trade history? No. It returns the displayed best bid/ask, last price and volume per market.

Export formats? JSON, CSV, Excel, XML or RSS from the dataset, or read it through the Apify API in your own pipeline.

Limits

  • Public market data only; no trading, account data or fills.
  • No historical price candles; build history by scheduling runs.
  • The all-markets board mixes every category; filter by series or event prefix for a focused board.
  • Event titles are filled for up to 100 events per run.

For support, contact Apify support and include the Actor run ID.