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
| file | columns |
|---|---|
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. |