Kalshi Weather Markets Scraper | Temps, Rain & Snow Odds avatar

Kalshi Weather Markets Scraper | Temps, Rain & Snow Odds

Pricing

from $0.56 / 1,000 market records

Go to Apify Store
Kalshi Weather Markets Scraper | Temps, Rain & Snow Odds

Kalshi Weather Markets Scraper | Temps, Rain & Snow Odds

Live bracket prices for every Kalshi weather market: daily high/low temps for all cities, rain, snow, hurricanes. Yes/no bid-ask, implied probability, volume, settled temps. HTTP-only, pay per result, MCP-ready — no API key needed.

Pricing

from $0.56 / 1,000 market records

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

2 days ago

Last modified

Share

Live bracket prices and recent settlements for every Kalshi weather market: daily high/low temperature for all listed cities (NYC, Chicago, Miami, Austin, Denver, LA, Philadelphia, Houston, Seattle, Toronto, London, and more), plus rain, snow and hurricane markets — 360+ series discovered automatically, not a hardcoded city list.

Built on Kalshi's current public trade API (the new *_dollars schema) — the API migration that quietly broke older scrapers. Plain HTTP, no login, no API key, no browser, no proxies. Runs finish in seconds.

$0.80 per 1,000 market records + $0.001 per start. maxMarkets is a hard cost cap.

Who uses this

  • Weather traders — pull every open bracket with implied probability, volume and open interest before placing an order, instead of clicking through city pages.
  • Model builders — join settledValue (the actual settled temperature) with your forecast data to backtest a strategy per city and station.
  • Dashboards & alerts — schedule it and pipe fresh odds into Sheets, Slack or your own model.
  • AI agents — stable flat schema, predictable cost, one-call market snapshot.

What you get per market

FieldExampleNotes
seriesTicker / seriesTitleKXHIGHNYwhich weather series
eventTickerKXHIGHNY-26AUG29one event = one city-day
marketTickerKXHIGHNY-26AUG29-B85.5one row per bracket
bracket85° to 86°human-readable strike
strikeType, floorStrike, capStrikebetween, 85, 86machine-readable strike
yesBid / yesAsk / noBid / noAsk / lastPrice0.56dollars, parsed to numbers
impliedProbability0.565bid/ask mid (falls back to last price)
volume, volume24h, openInterest, liquidityactivity metrics (liquidity = Kalshi figure, or top-of-book resting collateral when Kalshi reports 0 — see liquiditySource)
liquidityTopOfBookUsd, liquiditySourcetop-of-book liquidity estimate and which source liquidity came from
status, resultfinalized, nosettled markets carry the result
settledValue77the actual settled temperature
stationCLINYCexact settlement weather station
openTime / closeTime / expectedExpirationTimeISOtiming
marketUrlone-click open on Kalshi

Every field is always present (nullable, never missing). marketTicker is a stable dedupe key.

Input

{
"mode": "temperature",
"cities": ["NY", "Chicago"],
"status": "open",
"maxMarkets": 500
}
  • modetemperature (every high/low/avg temp series) or all-weather (the entire Climate & Weather category: rain, snow, hurricanes too).
  • cities — optional keyword filter (["NY"], ["Denver", "Miami"]). Empty = all cities.
  • seriesTickers — exact series override, e.g. ["KXHIGHNY", "KXRAINDNYC"].
  • statusopen (live prices), settled (recent results + settled temps), or both.
  • settledLookbackDays — how far back settled markets go (default 3).
  • maxMarkets — hard cost cap ($0.80/1,000).

Weather odds move by the minute — this is built to run on a schedule:

  1. Open the Actor → Try for free, set your cities and status.
  2. Save as a task → Schedules → e.g. */30 * * * * (every 30 min while markets are open) or 0 * * * * hourly.
  3. Add an integration (Google Sheets, Slack, webhook) so fresh brackets land where your model reads them.
  4. For settlement tracking, a second daily task with "status": "settled" gives you yesterday's settled temperatures per station.

Monitoring 10 cities every 30 minutes typically costs a few dollars a month — the run is one row per bracket, and maxMarkets caps every run.

Backtesting recipe

Run "status": "settled", "settledLookbackDays": 90, "seriesTickers": ["KXHIGHNY"] once: you get every bracket of every NYC high-temp market for the last 90 days with result and settledValue — join against your forecast history to measure edge per city.

For AI agents & MCP

  • Minimal input that just works: {} — scrapes all open temperature markets.
  • Predictable cost: exactly $0.0008 × markets + $0.001 per run.
  • Stable schema, marketTicker dedupe key, RUN_SUMMARY in the key-value store.
curl -s "https://api.apify.com/v2/acts/tactful_anvil~kalshi-weather-markets-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H 'Content-Type: application/json' \
-d '{"cities":["NY"],"status":"open","maxMarkets":200}'

Fair use & data source

Only public market data from Kalshi's public trade API (the same data shown on kalshi.com). Reasonable rate limits (~2 req/s). No account data, no personal data, no order placement — this is a read-only data tool, not a trading bot. Not investment advice.

The cheapest way to use this Actor is as a monitor: create a Schedule in Apify Console (e.g. every day at 08:00), set the input "onlyNew": true, and add an integration (email, Slack, Google Sheets, webhook). Every run then delivers only the markets that appeared since the previous run — you pay only for new rows, and you never miss one.

Changelog

  • 0.1.4 (21 Sep 2026) — Hotfix. Build 0.1.3 crashed on start (ReferenceError: log is not defined) for every run between 19 and 21 Sep. Fixed and verified in the cloud; no fields, defaults or prices changed. Sorry. Also: the default Output table no longer shows result / settledValue (always empty while markets are open — they still exist in the data) and shows title, liquidity and marketUrl instead.
  • 0.1.3 (19 Sep 2026) — Typo guard on input. Apify accepts input fields an Actor does not know without complaining, so a misspelled option (e.g. maxItem instead of maxItems) used to produce a successful run with the setting silently inactive. The run log now warns for every unknown field and suggests the closest real one.
  • 0.1.2 (18 Sep 2026) — New onlyNew (monitor mode). Set it to true and schedule the Actor: the first run returns the full result and remembers every market (marketTicker) in a key-value store in your account; every later run returns only markets that are new since the last run, and skipped rows are never charged. Nothing else changed — defaults, fields and prices are identical.
  • 0.1.1 (17 Sep 2026) — liquidity is alive again. Kalshi's API started returning liquidity_dollars = 0 for every market (even games with $800k volume), so the liquidity column had silently gone dead. It now falls back to the resting collateral at the top of the book (yes bids × price + yes asks × (1 − price), computed from the fields Kalshi already sends — no extra request, no extra cost). New columns: liquidityTopOfBookUsd and liquiditySource (kalshi when Kalshi reports a real figure, topOfBook otherwise). Existing fields and defaults unchanged.
  • 0.0.4 (9 Sep 2026) — Order book & trade flow. New optional inputs: includeOrderbook (+ orderbookDepth) adds the live bid/ask ladder per market — orderbookYes / orderbookNo levels, bookTopYesPrice / bookTopNoPrice, bookYesDepth / bookNoDepth and bookSpread; includeTrades (+ maxTradesPerMarket) adds recentTrades[], recentTradeCount, recentTradeVolume, lastTradePrice and lastTradeTime. Both default to off, cost no extra event (they only add one request per market), and never fail a run — if an endpoint hiccups the row carries orderbookError / tradesError and everything else is still delivered. Also: every HTTP call now has a 20-second timeout, and billing calls are wrapped so a charge failure can no longer kill a run that already has data.
  • 0.0.1 (Aug 2026) — Launch: every Kalshi weather series (high/low temperature, rain, snow) with brackets, prices, volume and settled results for backtesting.

Found this useful? Bookmark & review

A quick ⭐ review or bookmark on this Actor helps other people find it and tells us which fields to add next. Have a question, a missing field or a source that changed? Open an issue in the Issues tab — we answer within 24 hours.