Kalshi Weather Markets - Temperature & Rain Odds avatar

Kalshi Weather Markets - Temperature & Rain Odds

Pricing

from $1.25 / 1,000 market rows

Go to Apify Store
Kalshi Weather Markets - Temperature & Rain Odds

Kalshi Weather Markets - Temperature & Rain Odds

Every Kalshi weather market as one row: daily high/low temperature and rain brackets for all cities, hourly temperature, monthly rain, hurricanes. Live odds and settled results, with the settlement station's forecast and today's observed high/low next to each bracket.

Pricing

from $1.25 / 1,000 market rows

Rating

0.0

(0)

Developer

Joran Morgan

Joran Morgan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Every Kalshi weather market as a flat table: daily high and low temperature brackets for every city Kalshi lists, daily "will it rain" markets, monthly rain totals, hourly temperature, monthly averages, snow, hurricanes and the rest of the Climate and Weather category. Live odds or settled results.

For daily temperature and rain markets it also pulls what I always end up checking by hand before a trade: the forecast for the settlement station on that day, the high or low observed at that station so far today, and whether each of those lands inside the bracket. So you can see at a glance where the market and the forecast disagree.

It reads Kalshi's public market-data API directly, no login or API key. Series are discovered automatically, so when Kalshi adds a new city or a new kind of weather market it shows up without an update.

Example

Input:

{ "marketTypes": ["daily_high"], "cities": ["Chicago"], "mode": "live" }

One of the six brackets that came back (real output, Sep 29 2026, morning run):

{
"ticker": "KXHIGHCHI-26SEP29-B76.5",
"marketType": "daily_high",
"city": "Chicago",
"station": "MDW",
"stationIcao": "KMDW",
"date": "2026-09-29",
"bracket": "76° to 77°",
"strikeType": "between",
"floorStrike": 76,
"capStrike": 77,
"status": "active",
"yesBid": 0.43,
"yesAsk": 0.44,
"lastPrice": 0.44,
"impliedProbability": 0.435,
"spread": 0.01,
"volume": 3264.03,
"volume24h": 3216.07,
"openInterest": 2747.73,
"forecastF": 76,
"forecastInBracket": true,
"observedTodayF": 62.6,
"observedTodayInBracket": false,
"observedTodayAt": "2026-09-29T12:40:00+00:00",
"closeTime": "2026-09-30T06:00:00Z",
"settlementSource": "The Weather Company",
"marketUrl": "https://kalshi.com/markets/kxhighchi/kxhighchi-26sep29",
"rules": "If the maximum temperature recorded at Chicago (CLIMDW) for Sep 29, 2026, is between 76-77° fahrenheit according to The Weather Company, then the market resolves to Yes."
}

The whole event from that run. The forecast points at 76-77°, the market leans slightly to 78-79°:

BracketMarketNWS forecast 76°F in it?
73° or below2.5%no
74° to 75°9.5%no
76° to 77°43.5%yes
78° to 79°47.5%no
80° to 81°1.5%no
82° or above0.5%no

Rain markets from the same morning: Phoenix "will it rain" traded at 99.5% with a 98% NWS chance of rain, Seattle at 89% with 76%.

Settled mode gives you the history with results, for example "bracket": "68° to 69°", "result": "yes", "settlementValue": 68 for Chicago on Sep 26.

Fields worth knowing

  • impliedProbability is the bid/ask midpoint when the book is reasonably tight (spread up to 25 cents). On a wide book it falls back to the last trade, and it's null if the market never traded, rather than pretending a 0.05/0.96 book means 50%.
  • forecastF is the National Weather Service forecast high (or low, for low markets) at the settlement station's grid point for the market's local date. forecastPrecipChance (%) and forecastPrecipIn do the same for daily rain markets.
  • observedTodayF is the highest (or lowest) temperature reported by the station since local midnight, from the National Weather Service's observations API. It's only filled for today's markets.
  • station is the climate site named in the market rules (CLIMDW → MDW, ICAO KMDW).
  • The forecast and observations are context, not the settlement. Each market settles on the source in its rules.

Every row has the same fields; anything that doesn't apply is null.

Input

FieldWhat it doesDefault
marketTypesdaily_high, daily_low, rain_daily, rain_monthly, hourly_temp, monthly_avg_temp, snow, hurricane, other, or alltemperature + rain
citiesOnly series whose name contains one of these words (Chicago, NYC, Miami...). Empty = allempty
modelive (open markets) or settled (closed within the lookback)live
lookbackDaysHow far back settled mode goes7
includeStationContextAdd forecast and today's observationson
minVolume24hSkip thin markets0
maxItemsCap on rows5000

A live run over every weather market (about 1,100 rows) takes around a minute and a half. A single city takes a few seconds.

How people use it

Scheduling it every 15 or 30 minutes into Google Sheets or a database to track how brackets move during the day; comparing the market against the forecast to find mispriced brackets; building a settled-results history to backtest a model; or giving an AI agent live weather odds through the Apify MCP server.

FAQ

Is this official Kalshi data? It comes from Kalshi's public API, the same prices you see on kalshi.com. This Actor isn't affiliated with Kalshi.

Why is observedTodayF lower than the forecast in the morning? Because it's the high so far. It climbs through the day; the market settles on the full day's value.

Some markets have no city or station. Hurricanes, earthquakes, sea ice and similar markets aren't tied to one weather station, so those fields are null.

What does a run cost? See the Pricing tab: a small fee per run plus a fee per market row. Filter by cities, marketTypes or minVolume24h to pay only for what you need.

Notes

Forecasts and observations: National Weather Service API (public domain). Market data: Kalshi public API. Station context is available for US stations, which is where all of Kalshi's daily temperature and rain markets are today.

Something off in a market or a station mapping? Open an issue with the ticker and I'll fix it.