Kalshi Weather Markets Scraper | Temps, Rain & Snow Odds
Pricing
from $0.56 / 1,000 market records
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
2 days ago
Last modified
Categories
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
| Field | Example | Notes |
|---|---|---|
seriesTicker / seriesTitle | KXHIGHNY | which weather series |
eventTicker | KXHIGHNY-26AUG29 | one event = one city-day |
marketTicker | KXHIGHNY-26AUG29-B85.5 | one row per bracket |
bracket | 85° to 86° | human-readable strike |
strikeType, floorStrike, capStrike | between, 85, 86 | machine-readable strike |
yesBid / yesAsk / noBid / noAsk / lastPrice | 0.56 | dollars, parsed to numbers |
impliedProbability | 0.565 | bid/ask mid (falls back to last price) |
volume, volume24h, openInterest, liquidity | activity metrics (liquidity = Kalshi figure, or top-of-book resting collateral when Kalshi reports 0 — see liquiditySource) | |
liquidityTopOfBookUsd, liquiditySource | top-of-book liquidity estimate and which source liquidity came from | |
status, result | finalized, no | settled markets carry the result |
settledValue | 77 | the actual settled temperature |
station | CLINYC | exact settlement weather station |
openTime / closeTime / expectedExpirationTime | ISO | timing |
marketUrl | one-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}
- mode —
temperature(every high/low/avg temp series) orall-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"]. - status —
open(live prices),settled(recent results + settled temps), orboth. - settledLookbackDays — how far back settled markets go (default 3).
- maxMarkets — hard cost cap ($0.80/1,000).
How to schedule this Actor (recommended)
Weather odds move by the minute — this is built to run on a schedule:
- Open the Actor → Try for free, set your cities and
status. - Save as a task → Schedules → e.g.
*/30 * * * *(every 30 min while markets are open) or0 * * * *hourly. - Add an integration (Google Sheets, Slack, webhook) so fresh brackets land where your model reads them.
- 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.001per run. - Stable schema,
marketTickerdedupe key,RUN_SUMMARYin 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}'
Related Actors
- Brand Ads Spy — Google + LinkedIn Ads in One Feed — cross-network competitor ad intelligence.
- Superteam Earn Scraper — bounty and project boards with EV per entry.
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.
Schedule it (recommended)
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 showsresult/settledValue(always empty while markets are open — they still exist in the data) and showstitle,liquidityandmarketUrlinstead. - 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.
maxIteminstead ofmaxItems) 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) —
liquidityis alive again. Kalshi's API started returningliquidity_dollars = 0for every market (even games with $800k volume), so theliquiditycolumn 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:liquidityTopOfBookUsdandliquiditySource(kalshiwhen Kalshi reports a real figure,topOfBookotherwise). 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/orderbookNolevels,bookTopYesPrice/bookTopNoPrice,bookYesDepth/bookNoDepthandbookSpread;includeTrades(+maxTradesPerMarket) addsrecentTrades[],recentTradeCount,recentTradeVolume,lastTradePriceandlastTradeTime. 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 carriesorderbookError/tradesErrorand 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.