When to use this skill
When the user asks about historical weather at a specific location — daily temperature highs and lows, precipitation, wind speed, monthly climate averages, or seasonal patterns — and you have a NOAA station ID. This API serves observed and climatological data, not forecasts. For weather forecasts, use a different service.
Your best first call
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&format=json"
No auth. No key. Replace the station ID, date range, and dataTypes to match the user's question. The dataset parameter selects the data product: daily-summaries for day-by-day observations, global-summary-of-the-month for monthly averages, global-summary-of-the-year for annual averages.
Each row returns flat JSON with the requested data types as keys. The fields you'll use most:
DATE — YYYY-MM-DD for daily datasets, YYYY-MM for monthly
STATION — the NOAA station identifier
NAME — station name (requires includeStationName=true)
TMAX, TMIN — daily high and low temperature (°F with units=standard, °C with units=metric)
PRCP — precipitation
AWND — average wind speed
Fallbacks (when the best call isn't enough)
- Monthly or seasonal averages instead of daily readings → switch
dataset to global-summary-of-the-month and use YYYY-MM date ranges. Values become monthly means of daily highs/lows, not single-day readings.
- Marine or oceanic station data → switch
dataset to global-marine and use boundingBox instead of stations. Different data type codes apply (e.g., SST for sea surface temperature).
- No station ID in hand → This API has no search endpoint. Use NOAA's station finder at
https://www.ncei.noaa.gov/cdo-web/datatools/findstation to look up the ID before calling.
Pitfalls
- Always set
units. Without units=standard or units=metric, the API returns raw GHCN integers — "256" means 25.6°C, not 256°C. The documented default of metric does not match the actual default, which is raw tenths-of-units with leading spaces.
- Each
dataset has its own valid data type codes. Requesting TMAX on global-marine silently returns empty rows — no error, just no data. Check which data types belong to which dataset.
- Station IDs are not guessable from city names.
USW00026617 is Nome Airport — you cannot derive this from "Nome, AK". Find station IDs through NOAA's station finder first.
- Monthly values are averages, not readings. In
global-summary-of-the-month, a TMAX of 56.3°F is the mean of all daily highs that month, and the DATE field uses YYYY-MM, not YYYY-MM-DD.
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 so always set units=standard or units=metric.
SKILL.md source (frontmatter + body)
---
name: access-with
description: When the user asks about historical weather observations, daily temperature records, precipitation, wind speed, monthly climate averages, or seasonal patterns for a NOAA station — reach for NOAA NCEI Access Data Service. Requires a station ID; no auth needed.
---
## When to use this skill
When the user asks about historical weather at a specific location — daily temperature highs and lows, precipitation, wind speed, monthly climate averages, or seasonal patterns — and you have a NOAA station ID. This API serves observed and climatological data, not forecasts. For weather forecasts, use a different service.
## Your best first call
```bash
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&format=json"
```
No auth. No key. Replace the station ID, date range, and `dataTypes` to match the user's question. The `dataset` parameter selects the data product: `daily-summaries` for day-by-day observations, `global-summary-of-the-month` for monthly averages, `global-summary-of-the-year` for annual averages.
Each row returns flat JSON with the requested data types as keys. The fields you'll use most:
- `DATE` — `YYYY-MM-DD` for daily datasets, `YYYY-MM` for monthly
- `STATION` — the NOAA station identifier
- `NAME` — station name (requires `includeStationName=true`)
- `TMAX`, `TMIN` — daily high and low temperature (°F with `units=standard`, °C with `units=metric`)
- `PRCP` — precipitation
- `AWND` — average wind speed
## Fallbacks (when the best call isn't enough)
- **Monthly or seasonal averages instead of daily readings** → switch `dataset` to `global-summary-of-the-month` and use `YYYY-MM` date ranges. Values become monthly means of daily highs/lows, not single-day readings.
- **Marine or oceanic station data** → switch `dataset` to `global-marine` and use `boundingBox` instead of `stations`. Different data type codes apply (e.g., `SST` for sea surface temperature).
- **No station ID in hand** → This API has no search endpoint. Use NOAA's station finder at `https://www.ncei.noaa.gov/cdo-web/datatools/findstation` to look up the ID before calling.
## Pitfalls
- **Always set `units`.** Without `units=standard` or `units=metric`, the API returns raw GHCN integers — `"256"` means 25.6°C, not 256°C. The documented default of `metric` does not match the actual default, which is raw tenths-of-units with leading spaces.
- **Each `dataset` has its own valid data type codes.** Requesting `TMAX` on `global-marine` silently returns empty rows — no error, just no data. Check which data types belong to which dataset.
- **Station IDs are not guessable from city names.** `USW00026617` is Nome Airport — you cannot derive this from "Nome, AK". Find station IDs through NOAA's station finder first.
- **Monthly values are averages, not readings.** In `global-summary-of-the-month`, a `TMAX` of 56.3°F is the mean of all daily highs that month, and the `DATE` field uses `YYYY-MM`, not `YYYY-MM-DD`.
## 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 so always set `units=standard` or `units=metric`.