NWS forecasts

checking…

Hourly snapshots of the public US National Weather Service forecast API for the ~20 CONUS weather stations underlying Kalshi's daily-high / daily-low temperature markets. Each snapshot keeps temperature, precip probability, and wind speed for every forecast hour. Archived to Parquet. History-only.

Latest forecast 🔓 open

Loading the freshest snapshot…

Data available

Loading live stats…

How to get data

Latest snapshot — /latest.json 🔓 no auth

The most recent hourly forecast, as a single JSON document: current values per station (now) plus the full forecast curve for every station and field (stations). CORS-open, so a browser can fetch it directly. Regenerated every ~15 minutes.

# current values + full curves, no token needed
curl https://nws-forecasts.feeds.directory/latest.json

# just the current reading for one station (with jq)
curl -s https://nws-forecasts.feeds.directory/latest.json | jq '.now.KNYC'

Historical archive — /history/ 🔒 Bearer token

Two Parquet files per day: forecasts.parquet (typed, denormalised — one row per station/field/forecast-hour) and data.parquet (raw API payload as JSON). Plus the gzipped JSONL. Partitioned by date. All requests need Authorization: Bearer <token>.

# browse what's there
curl -H "Authorization: Bearer $TOKEN" \
  https://nws-forecasts.feeds.directory/history/parquet/

# pull one sealed day's typed forecasts
curl -H "Authorization: Bearer $TOKEN" -O \
  https://nws-forecasts.feeds.directory/history/parquet/year=2026/month=06/day=07/forecasts.parquet

Need a token? It's a single shared Bearer credential — ask the operator. /health and this page need no auth.

What a record looks like

One typed row from forecasts.parquet:

loading…

Schema

filecolumns
forecasts.parquet recv_ns, ticker, station, field, issued_at_ns, target_at_ns, value, unit — one row per station/field/forecast-hour. Typed and denormalised; the file to query.
data.parquet recv_ns, seq, msg_type, ticker, channel, payload — one row per raw API snapshot; payload is the full NWS response as JSON. Schema-stable even if NWS adds fields.