HRRR forecast
checking…NOAA's High-Resolution Rapid Refresh (HRRR) model 2 m temperature forecasts, polled from the NOMADS filter service every ~15 minutes for the CONUS weather stations underlying Kalshi's daily-high / daily-low temperature markets. Archived to Parquet. History-only.
Latest forecast 🔓 open
Loading the freshest cycle…
Data available
Loading live stats…
How to get data
Latest snapshot — /latest.json 🔓 no auth
The most recent model cycle, as a single JSON document: current
values per station (now) plus the full forecast curve for
every station (stations). CORS-open, so a browser can fetch
it directly. Regenerated every ~15 minutes.
# current values + full curves, no token needed
curl https://hrrr-forecast.feeds.directory/latest.json
# just the current reading for one station (with jq)
curl -s https://hrrr-forecast.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 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://hrrr-forecast.feeds.directory/history/parquet/
# pull one sealed day's typed forecasts
curl -H "Authorization: Bearer $TOKEN" -O \
https://hrrr-forecast.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 model poll; payload is the full record as JSON. Schema-stable. |