When to use this API
When you need historical weather observations, monthly climate summaries, or 30-year climate normals for a specific monitoring station. A single GET with the right dataset parameter pulls daily temperature, precipitation, wind, and snow records; monthly and annual averages; or statistical normals. This API is surprisingly good at revealing patterns you'd normally need to download CSVs to find — like the fact that Nome, Alaska's temperature can swing 42°F in three days during a Bering Sea wind event. For weather forecasts, use a different API; this one is strictly historical and climatological.
Pulling daily weather observations for a specific station
"How cold was Nome, Alaska last February, and was it windy?" The daily-summaries dataset returns one row per day with whatever data types you request. Nome Airport (USW00026617) is a good test case because the Bering Sea coast produces dramatic short-term temperature swings driven by wind.
curl "https://www.ncei.noaa.gov/access/services/data/v1?dataset=daily-summaries&stations=USW00026617&startDate=2023-02-14&endDate=2023-02-18&dataTypes=TMAX,TMIN,PRCP,AWND&units=standard&includeStationName=true&includeStationLocation=true&format=json" | head -c 10000
[
{"DATE":"2023-02-14","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","LATITUDE":"64.51112","LONGITUDE":"-165.44002","ELEVATION":"5.4","TMAX":"-5","TMIN":"-22","AWND":"5.37","PRCP":"0.00"},
{"DATE":"2023-02-15","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","LATITUDE":"64.51112","LONGITUDE":"-165.44002","ELEVATION":"5.4","TMAX":"-8","TMIN":"-24","AWND":"4.25","PRCP":"0.00"},
{"DATE":"2023-02-16","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","LATITUDE":"64.51112","LONGITUDE":"-165.44002","ELEVATION":"5.4","TMAX":"0","TMIN":"-15","AWND":"6.04","PRCP":"0.00"},
{"DATE":"2023-02-17","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","LATITUDE":"64.51112","LONGITUDE":"-165.44002","ELEVATION":"5.4","TMAX":"18","TMIN":"0","AWND":"17.00","PRCP":"0.00"},
{"DATE":"2023-02-18","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","LATITUDE":"64.51112","LONGITUDE":"-165.44002","ELEVATION":"5.4","TMAX":"11","TMIN":"-1","AWND":"3.36","PRCP":"0.01"}
]
The real story here is February 17. The daily high jumped from -8°F to 18°F overnight — a 26°F rise in a single day — while average wind speed tripled to 17 mph. Three days earlier the low was -24°F. This is a classic Bering Sea wind event where maritime air replaces the continental cold pool, and the API captures it cleanly in five rows: temperature climbs, wind spikes, precipitation stays near zero because the moist air mass hasn't reached the station yet. The ELEVATION of 5.4 meters confirms this station sits barely above sea level on the Seward Peninsula, which is why maritime air reaches it so quickly.
In mid-February 2023, Nome Airport dropped to -24°F on the 15th, then surged to a high of 18°F on the 17th — a 42°F swing in three days. Average wind speed tripled to 17 mph on the 17th as maritime air from the Bering Sea pushed in, replacing the arctic cold pool that had been sitting over the Seward Peninsula.
Getting monthly climate averages for a year
"What's the seasonal pattern like in Nome — when does it actually get warm?" The global-summary-of-the-month dataset aggregates daily observations into monthly means. The same station, same year, but the DATE field becomes YYYY-MM and the values are monthly averages.
curl "https://www.ncei.noaa.gov/access/services/data/v1?dataset=global-summary-of-the-month&stations=USW00026617&startDate=2023-01-01&endDate=2023-12-31&dataTypes=TMAX,TMIN,PRCP&units=standard&includeStationName=true&format=json" | head -c 10000
[
{"DATE":"2023-01","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"14.4","TMIN":"-1.0","PRCP":"1.13"},
{"DATE":"2023-02","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"11.4","TMIN":"-5.1","PRCP":"1.22"},
{"DATE":"2023-06","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"52.4","TMIN":"40.7","PRCP":"0.80"},
{"DATE":"2023-07","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"56.3","TMIN":"48.6","PRCP":"3.39"},
{"DATE":"2023-08","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"55.5","TMIN":"47.5","PRCP":"4.62"},
{"DATE":"2023-09","STATION":"USW00026617","NAME":"NOME AIRPORT, AK US","TMAX":"45.3","TMIN":"34.8","PRCP":"3.38"}
]
Nome's average July high is 56°F — that is the warmest it gets, and it barely exceeds the diurnal range of most temperate cities' summer lows. August is the wettest month at 4.62 inches, not because of storms but because the Bering Sea is finally warm enough to generate persistent stratus and drizzle. The data format shifts between datasets: daily-summaries uses YYYY-MM-DD in DATE, while global-summary-of-the-month uses YYYY-MM. The values also shift from integer readings to decimal averages — monthly TMAX of 56.3°F is an average of daily highs, not a single day's reading.
Nome's warmest month is July, with an average high of just 56°F. August is the wettest at 4.62 inches of precipitation — the Bering Sea finally warms enough to generate persistent low clouds and drizzle. Winter months are extremely dry by comparison, with January and February averaging just over an inch each.
Pitfalls
- Default output uses raw tenths-of-units, not metric degrees. Without
units=metricorunits=standard, temperature values are in tenths of degrees Celsius and precipitation in tenths of millimeters —"256"means 25.6°C, not 256°C. Always setunits. The parameter's documented default ismetricbut the actual default output is raw GHCN integer format with leading spaces. - The
datasetparameter determines required parameters and valid dataTypes.daily-summariesrequiresstations;global-marinerequiresboundingBoxinstead. Requestingdaily-summariesdata types likeTMAXonglobal-marinesilently returns empty results — no error, just no data. Each dataset has its own vocabulary of valid data type codes. - There is no station search endpoint. You need the NOAA station identifier (like
USW00026617) before you can call this API. Station IDs are not guessable from city names — you must find them from NOAA's station finder or another source first.
One-line summary for the user
I can pull historical daily weather observations and monthly climate summaries for any NOAA monitoring station — but you need the station ID, and the default output uses raw tenths-of-units formatting so always set units=standard or units=metric.