Access at

When the user asks what the temperature, precipitation, or snowfall was at a weather station on a specific date — historical daily observations from NOAA's GHCN network — reach for the NCEI Data Access API. Unauthenticated GET, but values default to tenths of degrees and millimeters.

access-at · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/access-at. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/access-at/SKILL.md.

When to use this skill

When the user asks what the temperature, precipitation, or snowfall was at a specific weather station on a specific date — "How cold did it get in Fairbanks last January?" or "Did it snow in Buffalo the first week of 2024?" — reach for the NCEI Data Access API. It serves historical daily observations from NOAA's Global Historical Climatology Network, covering over 100,000 stations worldwide including obscure cooperative observer posts that most weather APIs ignore. This is observational archives, not forecasts or current conditions. For climate normals or sub-daily precipitation, the same API accepts other dataset values but this skill focuses on daily-summaries.

Your best first call

curl "https://www.ncei.noaa.gov/access/services/data/v1?dataset=daily-summaries&stations=USC00200230&startDate=2024-01-01&endDate=2024-01-07&dataTypes=TMAX,TMIN,PRCP&format=json"

No auth. No key. Always include dataset=daily-summaries (required — the API returns empty silence without it), stations (a GHCN station ID), a date range, and format=json (the default is CSV). Narrow dataTypes to only the variables you need: TMAX, TMIN for temperature, PRCP for precipitation, SNOW for snowfall.

The key fields an agent uses:

Station IDs carry meaning: USW prefix marks NWS/WBAN first-order stations (airports, automated sensors, consistent reporting), while USC marks cooperative observers (volunteers, manual gauges, possible data gaps).

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can pull historical daily weather observations — temperature, precipitation, snowfall — from NOAA's GHCN station network in a single unauthenticated GET, but default values are in tenths of degrees and millimeters unless you pass units=metric.

APIs this skill uses

NOAA NCEI Data Access API · primary · verified

NOAA National Centers for Environmental Information (NCEI) Data Access API for accessing climate, oceanographic, and geophysical data. Provides search and data retrieval endpoints for various environmental datasets.

Generated from

NOAA NCEI Data Access API tutorial Getting Started with NOAA NCEI Data Access

SKILL.md source (frontmatter + body)
---
name: access-at
description: When the user asks what the temperature, precipitation, or snowfall was at a weather station on a specific date — historical daily observations from NOAA's GHCN network — reach for the NCEI Data Access API. Unauthenticated GET, but values default to tenths of degrees and millimeters.
---

## When to use this skill

When the user asks what the temperature, precipitation, or snowfall was at a specific weather station on a specific date — "How cold did it get in Fairbanks last January?" or "Did it snow in Buffalo the first week of 2024?" — reach for the NCEI Data Access API. It serves historical daily observations from NOAA's Global Historical Climatology Network, covering over 100,000 stations worldwide including obscure cooperative observer posts that most weather APIs ignore. This is observational archives, not forecasts or current conditions. For climate normals or sub-daily precipitation, the same API accepts other `dataset` values but this skill focuses on `daily-summaries`.

## Your best first call

```bash
curl "https://www.ncei.noaa.gov/access/services/data/v1?dataset=daily-summaries&stations=USC00200230&startDate=2024-01-01&endDate=2024-01-07&dataTypes=TMAX,TMIN,PRCP&format=json"
```

No auth. No key. Always include `dataset=daily-summaries` (required — the API returns empty silence without it), `stations` (a GHCN station ID), a date range, and `format=json` (the default is CSV). Narrow `dataTypes` to only the variables you need: `TMAX`, `TMIN` for temperature, `PRCP` for precipitation, `SNOW` for snowfall.

The key fields an agent uses:

- `DATE` — observation date
- `STATION` — GHCN station ID matching the request
- `TMAX`, `TMIN` — daily high and low temperature (tenths of degrees Celsius by default)
- `PRCP` — precipitation (tenths of millimeters by default)
- `SNOW` — snowfall in millimeters (only present when requested)

Station IDs carry meaning: `USW` prefix marks NWS/WBAN first-order stations (airports, automated sensors, consistent reporting), while `USC` marks cooperative observers (volunteers, manual gauges, possible data gaps).

## Fallbacks (when the best call isn't enough)

- **15-minute precipitation** → change `dataset` from `daily-summaries` to `precipitation-15min`. Same endpoint, finer time resolution for hydrology questions.
- **Climate normals (30-year averages)** → change `dataset` to `normals-monthly` or `normals-daily`. Use when the user asks "what's typical for this time of year" rather than "what happened on this date".

## Pitfalls

- **Default values are in tenths.** `TMIN` of `-106` means -10.6 C, not -106 C. `PRCP` of `23` means 2.3 mm. Pass `units=metric` to get human-scale values, or divide by 10 — there is no third option.
- **JSON values are space-padded strings, not numbers.** `"  -106"` requires trimming whitespace and parsing as an integer before dividing. Using the raw string as a float will throw a parsing error.
- **The default format is CSV, not JSON.** Omit `format=json` and you get CSV regardless of `Accept` headers. This is unusual — most APIs default to JSON.
- **`dataset` is required with no default.** The API returns an empty response with no error message when omitted. The silence is misleading; always pass `dataset=daily-summaries`.

## One-line summary for the user

I can pull historical daily weather observations — temperature, precipitation, snowfall — from NOAA's GHCN station network in a single unauthenticated GET, but default values are in tenths of degrees and millimeters unless you pass units=metric.

« Back to all skills