US station observations come directly from National Weather Service feeds at api.weather.gov. The 14-day window paginates via the response’s Link header so high-traffic ASOS sites still return their full window. International rows fall back to ECMWF reanalysis served by Open-Meteo — the same source the Forecasts page uses, queried for hourly history with past_days. Time stamps render in the station’s local timezone so 09:00 KSAC is 09:00 in Sacramento, not in your browser’s timezone.
A note on precipitation and snow: US rows pull from Iowa Environmental Mesonet’s ASOS CSV API — the same source that backs the NWS WRH timeseries page. 1-hour totals come from IEM’s computed p01i column on every hourly METAR (xx:53). 6-hour and 24-hour totals are parsed out of the METAR remarks themselves: the 6RRRR group encodes the trailing 3- or 6-hour total (3-hour at 03 / 09 / 15 / 21 UTC, 6-hour at 00 / 06 / 12 / 18 UTC — the cell is labelled “6h” for simplicity), and the 7RRRR group encodes the trailing 24-hour total at 12 UTC. Many rows will be blank for the 6h and 24h columns because ASOS only emits those groups at certain hours. International rows pull hourly precipitation and hourly snowfall directly from ECMWF reanalysis via Open-Meteo; 6h and 24h are left blank there. Snow: ASOS sensors at US airports don’t measure snow accumulation — that data lives in NWS Public Information Statements and Local Storm Reports, which we plan to surface on a separate page rather than misrepresent here. Snow values on this page come only from ECMWF reanalysis for international rows.