Developers

Last updated 25 September 2026

The forecasts, alerts, river gauges and tides behind this site, as JSON anyone can call, and every alert, calendar and article as a feed. No key and no account. The rules are short: cache what you fetch, identify yourself, and credit the agencies the data comes from.

Terms of use

Usage expectations

Attribution

The data is public, but the agencies ask to be named, and this site asks to be linked. Show a line such as "Data: NOAA National Weather Service, via WeatherOverTime" with a link to weatherovertime.com, naming the source each endpoint lists:

DataCreditTerms
Forecasts, alerts NOAA National Weather Service Public domain: "The information on National Weather Service (NWS) Web pages are in the public domain, unless specifically noted otherwise, and may be used without charge for any lawful purpose" (weather.gov/disclaimer).
National Blend of Models NOAA National Weather Service, National Blend of Models Public domain, as above.
River gauges NOAA National Water Prediction Service Public domain, as above.
Tides NOAA Center for Operational Oceanographic Products and Services (CO-OPS) Public domain; NOAA asks that it be credited.
Station climate NOAA National Centers for Environmental Information, GHCN-Daily and 1991-2020 Normals Public domain; NCEI asks that it be credited.

Endpoints

All are GET on https://weatherovertime.com and answer JSON. Temperatures are degrees Celsius, winds kilometers per hour, precipitation millimeters and times ISO 8601 unless a field says otherwise. An error is an HTTP status with a JSON body such as {"error": "bad_point", "message": "Pass lat and lon."}: 400 for a malformed request, 404 for nothing there, 502 when the agency did not answer (try again in a minute).

/api/forecast/point?lat=&lon=

NWS forecast for a point in the United States · cached 5 minutes · source: api.weather.gov

The National Weather Service's forecast grid for the point, compacted: every element of the grid as hourly series (grid.series), the weather and hazard grids, the named twelve-hour periods with the forecaster's words, and the hourly forecast. point gives the forecast office, grid cell, time zone, radar, county and zone codes, and the nearest town.

GET /api/forecast/point?lat=41.5868&lon=-93.625

{
  "source": "nws",
  "point": { "lat": 41.5868, "lon": -93.625, "wfo": "DMX", "gridX": 73, "gridY": 49,
             "tz": "America/Chicago", "radar": "KDMX", "zone": "IAZ060", "county": "IAC153",
             "near": { "city": "Des Moines", "state": "IA", "km": 0, "bearing": 0 } },
  "grid": { "updated": "...", "validFrom": "...", "validHours": 170, "series": { ... } },
  "periods": [ { "name": "This Afternoon", "start": "2026-09-25T13:00:00-05:00",
                 "temperatureC": 17.8, "pop": 83, "windKmh": [12.9, 12.9], "windDir": "ESE",
                 "short": "Rain Showers", "detailed": "Rain showers. Mostly cloudy, ..." } ],
  "hourly": [ { "start": "2026-09-25T13:00:00-05:00", "temperatureC": 16.7, "dewpointC": 16.1,
                "rh": 97, "pop": 83, "windKmh": 11.3, "windDir": "ESE", "short": "Rain Showers" } ],
  "fetchedAt": "2026-09-25T18:34:06.137Z"
}

/api/forecast/alerts?lat=&lon=

Alerts in force at a point · cached 1 minute · source: api.weather.gov

Every National Weather Service warning, watch, advisory and statement in force at the point: a warning by its drawn outline, a watch or advisory by its zone. Each has the full text and instructions, CAP severity, urgency and certainty, onset, end and expiry, the hail, gust and tornado tags a warning carries, and the storm's motion.

GET /api/forecast/alerts?lat=29.21&lon=-81.02

{ "alerts": [ { "id": "urn:oid:2.49.0.1.840.0....", "event": "Rip Current Statement",
                "severity": "Moderate", "urgency": "Expected", "certainty": "Likely",
                "sent": "...", "onset": "...", "ends": "...", "expires": "...",
                "senderName": "NWS Melbourne FL", "areaDesc": "Coastal Volusia, FL",
                "headline": "...", "description": "...", "instruction": "...",
                "tags": [], "hail": null, "gust": null, "tornado": null, "motion": null } ],
  "fetchedAt": "2026-09-25T18:34:06.137Z" }

/api/alerts

Every alert in force nationally, with outlines · cached 1 minute, refreshed in the background · source: api.weather.gov

The whole country at once, for a map: each alert with its polygons (simplified, [lon, lat] rings; a zone product's outline drawn from its zones) and its UGC codes. About a megabyte and a half compressed on a busy day, so fetch it once a minute at most. ?bbox=west,south,east,north limits it to alerts touching a box.

GET /api/alerts?bbox=-98,36,-90,44

{ "updated": "2026-09-25T18:34:09.100Z", "count": 12,
  "alerts": [ { "id": "https://api.weather.gov/alerts/urn:oid:...", "event": "Flood Warning",
                "severity": "Severe", "sent": "...", "effective": "...", "expires": "...",
                "areaDesc": "...", "polygons": [ [ [ -93.61, 41.60 ], ... ] ],
                "ugc": [ "IAC153" ], ... } ] }

/api/forecast/nbm?lat=&lon=

National Blend of Models at a point · cached 10 minutes · source: NOAA NBM

The Blend's latest run at the grid cell holding the point, as time series: temperature, apparent temperature, dew point, humidity, wind, gusts, sky cover, the chance of rain, snow, freezing rain and sleet, hourly and six-hourly precipitation and snow, thunder chances, CAPE, mixing height, visibility, and the daily maximum and minimum. Each series is {"t": [epoch ms, ...], "v": [values, ...]}.

GET /api/forecast/nbm?lat=41.5868&lon=-93.625

{ "run": "2026-09-25T12:00:00Z", "domain": "conus",
  "cell": { "col": 1335, "row": 755, "lat": 41.5868, "lon": -93.625 },
  "series": { "temp": { "t": [ 1790341200000, ... ], "v": [ 17.1, ... ] }, "maxt": { ... }, ... } }

/api/forecast/climate?station=

A station's normals and records for every date · cached 1 hour · source: NOAA NCEI

For a GHCN-Daily station id (USW00014933 is Des Moines International Airport): the 1991-2020 normal high, low and precipitation and the record high, low and precipitation with their years, for each of the 366 calendar days, and the period of record. Rebuilt weekly.

GET /api/forecast/climate?station=USW00014933

{ "station": "USW00014933", "first": "1945-07-01", "last": "2026-09-17",
  "normalHigh": [ ... 366 values ... ], "normalLow": [ ... ], "normalPrecip": [ ... ],
  "recordHigh": [ ... ], "recordHighYear": [ ... ], "recordLow": [ ... ], ... }

/api/rivers/near?lat=&lon= and /api/rivers/gauges

River gauges · cached 2 to 5 minutes · source: NOAA National Water Prediction Service

near: the river gauges closest to a point, nearest first, with the latest stage, its flood category now and forecast, and the flood stage. gauges: every NWS river gauge in the country in one columnar table (about 1.7 MB), with the observation, forecast crest, flow and the action, flood, moderate and major stages.

GET /api/rivers/near?lat=41.5868&lon=-93.625

{ "gauges": [ { "lid": "DEMI4", "river": "Raccoon River", "location": "Des Moines Fleur Dr",
                "state": "IA", "km": 1.6, "status": "no_flooding", "forecastStatus": "action",
                "observed": 5.2, "units": "ft", "flood": 12 } ] }

/api/tides/near?lat=&lon= and /api/tides/stations

Tides · cached 30 minutes and 1 day · source: NOAA CO-OPS

near: the closest NOAA tide station to a point with its next highs and lows, in feet above mean lower low water, and its page on this site. stations: every tide prediction station as a columnar table (id, name, state, latitude, longitude, and whether it measures the water too).

GET /api/tides/near?lat=32.78&lon=-79.93

{ "tides": { "station": { "id": "8665530", "name": "Charleston", "state": "SC",
                          "km": 0.6, "path": "/tides/south-carolina/charleston-8665530/" },
             "events": [ { "t": "2026-09-25T11:23:00.000Z", "ft": 5.838, "high": true }, ... ] } }

/api/sites

Every radar · cached 1 day · source: NOAA National Weather Service

Each WSR-88D and TDWR radar the site shows: identifier, name, position and elevation.

GET /api/sites

[ { "id": "KABR", "name": "Aberdeen", "lon": -98.41305, "lat": 45.45583, "elevM": 397 }, ... ]

Feeds

Atom 1.0 and RSS 2.0, for a feed reader or anything that reads either. Each item's id is permanent: an alert's is its CAP identifier, so an update to an alert is a new item and a reader never shows the same product twice. Alert feeds are cached a minute.

FeedAddress (.atom or .rss)
Every alert in the United States/feeds/alerts.atom
A state's alerts/feeds/alerts/iowa.atom
A county's alerts/feeds/alerts/iowa/polk-county.atom
Alerts at a forecast page's town/feeds/alerts/at/us/iowa/des-moines.atom
Alerts at a coordinate/feeds/alerts/at/@41.5868,-93.625.atom
This day in weather history, one item a day/feeds/weather-history.atom
The blog/feeds/blog.atom
The meteorology course/feeds/learn.atom

The state and county parts are the alerts pages' own: the address of /alerts/iowa/polk-county/ gives /feeds/alerts/iowa/polk-county.atom. The town part is the forecast page's address without /forecast/. Pages with a feed announce it in their <head>, so most readers find it from the page itself.

Calendars

iCalendar (RFC 5545) files to subscribe to in Apple Calendar, Google Calendar, Outlook or any calendar app, so they keep themselves current. Open one with webcal:// in place of https:// to subscribe rather than import a copy.

CalendarAddress
Alerts for a state, county or place, each from when it takes effect to when it ends /feeds/alerts/iowa/polk-county.ics
/feeds/alerts/at/us/iowa/des-moines.ics
Sunrise and sunset for the next year: first light to sunrise, sunset to last light. Add ?only=sunrise or ?only=sunset for one of the two. /feeds/sun/us/iowa/des-moines.ics
High and low tides at a NOAA station for the next three months /feeds/tides/8665530.ics

A calendar app refreshes a subscription on its own schedule, from every 15 minutes to once a day, so an alert calendar is for planning, not for warnings.

What is not offered

The radar data itself (/data/), the radar archive, map tiles, the address search and the lightning feed are not open to other sites: each costs this site real storage reads or passes through to a service that did not agree to carry other sites' traffic. Their sources are open, and better used directly: NEXRAD Level II and GOES on the NOAA Open Data Dissemination program, the National Weather Service API, and the Census Geocoder.

Contact

Questions, a use that needs more than this page allows, or a change you need notice of: contact@weatherovertime.com.