MAVERICK WX

Source
api.weather.gov

API Explorer

Every endpoint on api.weather.gov, grouped and explained for people who don’t already speak NWS — what it returns, who wants it, and a worked example you can run.

Built from the live OpenAPI spec (version 3.11.0) on 2026-08-22. New here? Start with how it thinks.

69 endpoints shown

Start Here

Almost every question that begins with a latitude and longitude starts at one of these. They translate a location into the identifiers the rest of the API speaks.

GET https://api.weather.gov/points/{latitude},{longitude}

Give it a latitude and longitude and it tells you everything the API needs to know about that spot: which of the 122 local forecast offices covers it, which square of that office’s forecast grid it falls in, which forecast zone and county it belongs to, and which radar watches it. Nearly every other endpoint wants one of those identifiers, so this is where the chain starts.

Anyone building an app that starts from “where the user is”. If you have coordinates and want a forecast, you call this first.

Worked example

Worked example

https://api.weather.gov/points/39.7456,-97.0892

A spot in Washington County, Kansas. The response points at grid TOP/32,81 — feed that into the gridpoint forecast endpoint next.

cURL

curl "https://api.weather.gov/points/39.7456,-97.0892" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/points/{latitude},{longitude}/radio

Which NOAA Weather Radio transmitters cover a given point, so you know what frequency to tune an emergency radio to.

Emergency managers and preparedness sites telling people which channel to program.

Worked example

Worked example

https://api.weather.gov/points/39.7456,-97.0892/radio

cURL

curl "https://api.weather.gov/points/39.7456,-97.0892/radio" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/points/{latitude},{longitude}/stations

The observation stations nearest a given latitude and longitude, closest first. Handy when you want “what is it doing right now near me” rather than a forecast.

App developers who need a current-conditions station for an arbitrary point.

Worked example

Worked example

https://api.weather.gov/points/39.7456,-97.0892/stations

cURL

curl "https://api.weather.gov/points/39.7456,-97.0892/stations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Forecasts

The forecast itself, in two flavours: the fine-grained grid a forecast office actually edits, and the zone-level text forecast written for the public.

GET https://api.weather.gov/gridpoints/{wfo}/{x},{y}

The raw forecast grid behind the readable forecast: dozens of separate variables — temperature, dewpoint, wind speed and direction, sky cover, probability of precipitation, snowfall amount, wave height and more — each as its own time series. Nothing here is written as prose; it is the underlying numbers.

Researchers, hobbyists building custom visualisations, and anyone who wants a variable the plain forecast does not mention.

Worked example

Worked example

https://api.weather.gov/gridpoints/TOP/32,81

cURL

curl "https://api.weather.gov/gridpoints/TOP/32,81" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/gridpoints/{wfo}/{x},{y}/forecast

The familiar day-by-day forecast — “Tonight: Partly cloudy, low around 54” — for one square of a forecast office’s grid. Each square is roughly 2.5 km across. This is generated from the same grid a human forecaster edits, so it is the closest thing to “the official forecast” in machine-readable form.

The single most-used endpoint on the API. Anyone showing a forecast on a website, dashboard or e-ink display.

2 parameters
Name In Required Notes
Feature-Flags header no Enable future and experimental features (see documentation for more info): * forecast_temperature_qv: Represent temperature as QuantitativeValue * forecast_wind_speed_qv: Represent wind speed as QuantitativeValue array
units query no Use US customary or SI (metric) units in textual output
Worked example

Worked example

https://api.weather.gov/gridpoints/TOP/32,81/forecast

The grid square returned by the /points example above.

cURL

curl "https://api.weather.gov/gridpoints/TOP/32,81/forecast" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/gridpoints/{wfo}/{x},{y}/forecast/hourly

The same forecast broken into hour-by-hour steps rather than day and night periods. Useful when timing matters — when exactly the rain arrives, or how cold it gets at 6am.

Anyone planning around timing: event organisers, cyclists, farmers, schedulers.

2 parameters
Name In Required Notes
Feature-Flags header no Enable future and experimental features (see documentation for more info): * forecast_temperature_qv: Represent temperature as QuantitativeValue * forecast_wind_speed_qv: Represent wind speed as QuantitativeValue array
units query no Use US customary or SI (metric) units in textual output
Worked example

Worked example

https://api.weather.gov/gridpoints/TOP/32,81/forecast/hourly

cURL

curl "https://api.weather.gov/gridpoints/TOP/32,81/forecast/hourly" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/gridpoints/{wfo}/{x},{y}/stations

The observation stations associated with a particular forecast grid square.

Developers pairing a forecast with nearby current conditions.

Worked example

Worked example

https://api.weather.gov/gridpoints/TOP/32,81/stations

cURL

curl "https://api.weather.gov/gridpoints/TOP/32,81/stations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/{type}/{zoneId}/forecast

The zone forecast — the older, coarser style of forecast written for a whole named area rather than a grid square. Zones are how NWS talked about the weather before gridded forecasts, and they are still how many warnings and public statements are scoped.

Broadcasters and anyone who wants the forecast phrased the way it appears in a public statement.

Worked example

Worked example

https://api.weather.gov/zones/forecast/KSZ009/forecast

cURL

curl "https://api.weather.gov/zones/forecast/KSZ009/forecast" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Alerts & Warnings

Watches, warnings and advisories. This is the life-safety feed — for real decisions use official channels, but this is where the data lives.

GET https://api.weather.gov/alerts

The same alert data, but searchable through time rather than only right now. You can ask for alerts issued during a past window, which makes it the endpoint for “what was warned, and when”.

Researchers studying warning performance; journalists reconstructing an event timeline.

17 parameters
Name In Required Notes
active query no List only active alerts (use /alerts/active endpoints instead) boolean
start query no Start time string (date-time)
end query no End time string (date-time)
status query no Status (actual, exercise, system, test, draft) array
message_type query no Message type (alert, update, cancel) array
event query no Event name array
code query no Event code array
area query no State/territory code or marine area code This parameter is incompatible with the following parameters: point, region, region_type, zone array
point query no Point (latitude,longitude) This parameter is incompatible with the following parameters: area, region, region_type, zone
region query no Marine region code This parameter is incompatible with the following parameters: area, point, region_type, zone array
region_type query no Region type (land or marine) This parameter is incompatible with the following parameters: area, point, region, zone one of: land, marine
zone query no Zone ID (forecast or county) This parameter is incompatible with the following parameters: area, point, region, region_type array
urgency query no Urgency (immediate, expected, future, past, unknown) array
severity query no Severity (extreme, severe, moderate, minor, unknown) array
certainty query no Certainty (observed, likely, possible, unlikely, unknown) array
limit query no Limit integer
cursor query no Pagination cursor string
Worked example

Worked example

https://api.weather.gov/alerts?area=KS&limit=20

cURL

curl "https://api.weather.gov/alerts?area=KS&limit=20" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/{id}

One specific watch, warning or advisory, fetched by its identifier — the full text, affected area and timing for a single alert.

Anyone following a link from another alert response.

GET https://api.weather.gov/alerts/active

Every watch, warning and advisory currently in effect anywhere in the United States, as structured data with the affected area attached. You can filter by point, area, zone, severity, urgency and event type.

Emergency managers, newsrooms, and anyone building a severe weather map or notification service.

12 parameters
Name In Required Notes
status query no Status (actual, exercise, system, test, draft) array
message_type query no Message type (alert, update, cancel) array
event query no Event name array
code query no Event code array
area query no State/territory code or marine area code This parameter is incompatible with the following parameters: point, region, region_type, zone array
point query no Point (latitude,longitude) This parameter is incompatible with the following parameters: area, region, region_type, zone
region query no Marine region code This parameter is incompatible with the following parameters: area, point, region_type, zone array
region_type query no Region type (land or marine) This parameter is incompatible with the following parameters: area, point, region, zone one of: land, marine
zone query no Zone ID (forecast or county) This parameter is incompatible with the following parameters: area, point, region, region_type array
urgency query no Urgency (immediate, expected, future, past, unknown) array
severity query no Severity (extreme, severe, moderate, minor, unknown) array
certainty query no Certainty (observed, likely, possible, unlikely, unknown) array
Worked example

Worked example

https://api.weather.gov/alerts/active?area=KS

All alerts currently active in Kansas. Swap the state code for anywhere else.

cURL

curl "https://api.weather.gov/alerts/active?area=KS" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/active/area/{area}

Active alerts for a whole state or marine area, by two-letter code.

Statewide emergency management and state-level news coverage.

Worked example

Worked example

https://api.weather.gov/alerts/active/area/KS

cURL

curl "https://api.weather.gov/alerts/active/area/KS" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/active/count

Just the numbers: how many alerts are active right now, broken down by region, area and zone. A cheap way to check whether anything is happening without pulling every alert.

Dashboards and monitoring systems that poll frequently.

Worked example

Worked example

https://api.weather.gov/alerts/active/count

cURL

curl "https://api.weather.gov/alerts/active/count" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/active/region/{region}

Active alerts for one of the large marine regions — Atlantic north and south, Pacific north and south, Gulf of Mexico.

Marine forecasting and shipping.

Worked example

Worked example

https://api.weather.gov/alerts/active/region/GL

cURL

curl "https://api.weather.gov/alerts/active/region/GL" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/active/zone/{zoneId}

Active alerts for one specific forecast zone or county.

Sites scoped to a single community.

Worked example

Worked example

https://api.weather.gov/alerts/active/zone/KSZ009

cURL

curl "https://api.weather.gov/alerts/active/zone/KSZ009" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/alerts/types

The full list of alert event names NWS can issue — everything from “Tornado Warning” to “Ashfall Advisory”. Useful for building a filter UI without hard-coding a list that goes stale.

Developers building alert filters or legends.

Worked example

Worked example

https://api.weather.gov/alerts/types

cURL

curl "https://api.weather.gov/alerts/types" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Observations & Stations

What the weather is doing right now, as measured by thousands of ground stations — mostly at airports.

GET https://api.weather.gov/stations

The full directory of observation stations: identifier, name, coordinates, elevation and time zone. It is a long list — thousands of entries — so it is paginated.

Developers building a station picker or map.

4 parameters
Name In Required Notes
id query no Filter by observation station ID array
state query no Filter by state/marine area code array
limit query no Limit integer
cursor query no Pagination cursor string
Worked example

Worked example

https://api.weather.gov/stations?limit=10

cURL

curl "https://api.weather.gov/stations?limit=10" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/stations/{stationId}

Metadata for one station: where it is, how high it sits, and what it is called.

Anyone who has a station ID and wants to know what and where it is.

Worked example

Worked example

https://api.weather.gov/stations/KTOP

cURL

curl "https://api.weather.gov/stations/KTOP" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/stations/{stationId}/observations

A history of observations from one station over a time range — the raw material for “how did today actually go”.

Researchers, insurance and legal work, and anyone charting recent conditions.

4 parameters
Name In Required Notes
start query no Start time string (date-time)
end query no End time string (date-time)
cursor query no Pagination cursor string
limit query no Limit integer
Worked example

Worked example

https://api.weather.gov/stations/KTOP/observations?limit=5

cURL

curl "https://api.weather.gov/stations/KTOP/observations?limit=5" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/stations/{stationId}/observations/{time}

The observation from one station at one exact timestamp.

Anyone reconstructing conditions at a specific moment — an accident, a flight, a game.

1 parameter
Name In Required Notes
time path yes Timestamp of requested observation string (date-time)
GET https://api.weather.gov/stations/{stationId}/observations/latest

The most recent observation from one station: temperature, dewpoint, wind, pressure, visibility and present weather. Most of these stations sit at airports and report automatically about once an hour, sometimes more often when conditions change quickly.

Anyone showing “current conditions”. Also pilots, and anyone verifying whether a forecast actually verified.

1 parameter
Name In Required Notes
require_qc query no Require QC boolean
Worked example

Worked example

https://api.weather.gov/stations/KTOP/observations/latest

Topeka Regional Airport, Kansas.

cURL

curl "https://api.weather.gov/stations/KTOP/observations/latest" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/forecast/{zoneId}/observations

Recent observations from all the stations inside one forecast zone.

Local sites that want a picture of conditions across a whole community, not one airport.

3 parameters
Name In Required Notes
start query no Start date/time string (date-time)
end query no End date/time string (date-time)
limit query no Limit integer
Worked example

Worked example

https://api.weather.gov/zones/forecast/KSZ009/observations

cURL

curl "https://api.weather.gov/zones/forecast/KSZ009/observations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/forecast/{zoneId}/stations

Which observation stations fall inside a given forecast zone.

Developers assembling a local observation network view.

Worked example

Worked example

https://api.weather.gov/zones/forecast/KSZ009/stations

cURL

curl "https://api.weather.gov/zones/forecast/KSZ009/stations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Radar

Metadata about the NEXRAD radar network: where the radars are, whether they are healthy, and how their data is flowing.

GET https://api.weather.gov/radar/profilers/{stationId}

Data from a wind profiler — a radar that points straight up and measures wind at many heights continuously, filling gaps between twice-daily balloon launches.

Aviation meteorologists and researchers studying the boundary layer.

2 parameters
Name In Required Notes
time query no Time interval
interval query no Averaging interval
GET https://api.weather.gov/radar/queues/{host}

The processing queue for a radar host — how much data is backed up waiting to be handled.

Anyone diagnosing radar data lag.

8 parameters
Name In Required Notes
limit query no Record limit integer
arrived query no Range for arrival time
created query no Range for creation time
published query no Range for publish time
station query no Station identifier string
type query no Record type string
feed query no Originating product feed string
resolution query no Resolution version integer
GET https://api.weather.gov/radar/servers

Health of the servers that collect and distribute radar data. Deeply internal, and interesting precisely because it is normally invisible.

Infrastructure watchers and anyone investigating a radar data outage.

1 parameter
Name In Required Notes
reportingHost query no Show records from specific reporting host string
Worked example

Worked example

https://api.weather.gov/radar/servers

cURL

curl "https://api.weather.gov/radar/servers" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radar/servers/{id}

Status of a single radar distribution server — whether it is online, which radars it is handling and how current its data is.

Infrastructure watchers, and anyone tracing why one region’s radar data went quiet.

1 parameter
Name In Required Notes
reportingHost query no Show records from specific reporting host string
GET https://api.weather.gov/radar/spgds

Metadata about supplemental precipitation gauge data used to calibrate radar rainfall estimates.

Hydrologists and anyone working with radar-derived rainfall totals.

1 parameter
Name In Required Notes
published query no Range for publish time
Worked example

Worked example

https://api.weather.gov/radar/spgds

cURL

curl "https://api.weather.gov/radar/spgds" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radar/stations

Every radar site NWS operates, with location and station type. This is the NEXRAD network — the roughly 160 big dishes whose data becomes the radar loop you see on TV.

Anyone mapping radar coverage or building a radar site picker.

3 parameters
Name In Required Notes
stationType query no Limit results to a specific station type or types array
reportingHost query no Show RDA and latency info from specific reporting host string
host query no Show latency info from specific LDM host string
Worked example

Worked example

https://api.weather.gov/radar/stations

cURL

curl "https://api.weather.gov/radar/stations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radar/stations/{stationId}

Detailed status for one radar: where it is, and a surprisingly deep health readout including transmitter performance and when it last reported.

Radar enthusiasts, and developers who want to know whether a site is actually up before showing its data.

2 parameters
Name In Required Notes
reportingHost query no Show RDA and latency info from specific reporting host string
host query no Show latency info from specific LDM host string
Worked example

Worked example

https://api.weather.gov/radar/stations/KTWX

The radar covering the example point, near Topeka.

cURL

curl "https://api.weather.gov/radar/stations/KTWX" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radar/stations/{stationId}/alarms

Active alarms for one radar — the site’s own report of what is wrong with it, from minor warnings to “this radar is down”.

Anyone debugging why radar imagery for an area looks stale or missing.

Worked example

Worked example

https://api.weather.gov/radar/stations/KTWX/alarms

cURL

curl "https://api.weather.gov/radar/stations/KTWX/alarms" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Aviation

Products written for pilots and dispatchers: airport forecasts, in-flight hazard advisories, and the centres that issue them.

GET https://api.weather.gov/aviation/cwsus/{cwsuId}

Metadata about a Center Weather Service Unit — small teams of NWS meteorologists embedded inside FAA air traffic control centres to advise controllers directly.

Aviation weather nerds and anyone curious how NWS and the FAA actually work together.

1 parameter
Name In Required Notes
cwsuId path yes NWS CWSU ID
Worked example

Worked example

https://api.weather.gov/aviation/cwsus/ZKC

cURL

curl "https://api.weather.gov/aviation/cwsus/ZKC" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/aviation/cwsus/{cwsuId}/cwas

Center Weather Advisories — short-fuse warnings issued by those embedded meteorologists when something is about to disrupt air traffic in their centre’s airspace.

Dispatchers and controllers; also useful for explaining a sudden ground stop.

1 parameter
Name In Required Notes
cwsuId path yes NWS CWSU ID
Worked example

Worked example

https://api.weather.gov/aviation/cwsus/ZKC/cwas

cURL

curl "https://api.weather.gov/aviation/cwsus/ZKC/cwas" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/aviation/cwsus/{cwsuId}/cwas/{date}/{sequence}

One specific Center Weather Advisory, fetched by centre, date and sequence number — the short-fuse warning text itself.

Anyone following a link from a CWA listing.

3 parameters
Name In Required Notes
cwsuId path yes NWS CWSU ID
date path yes Date (YYYY-MM-DD format)
sequence path yes Sequence number integer
GET https://api.weather.gov/aviation/sigmets

SIGMETs — advisories about weather genuinely hazardous to aircraft: severe turbulence, icing, thunderstorm areas, volcanic ash, dust storms.

Pilots and flight planners; also anyone curious what the sky looks like from 30,000 feet.

5 parameters
Name In Required Notes
start query no Start time string (date-time)
end query no End time string (date-time)
date query no Date (YYYY-MM-DD format)
atsu query no ATSU identifier
sequence query no SIGMET sequence number
Worked example

Worked example

https://api.weather.gov/aviation/sigmets

cURL

curl "https://api.weather.gov/aviation/sigmets" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/aviation/sigmets/{atsu}

In-flight hazard advisories issued by one air traffic service unit, so you can follow the airspace you actually fly through.

Flight planners working a specific region.

1 parameter
Name In Required Notes
atsu path yes ATSU identifier
Worked example

Worked example

https://api.weather.gov/aviation/sigmets/KKCI

cURL

curl "https://api.weather.gov/aviation/sigmets/KKCI" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/aviation/sigmets/{atsu}/{date}

SIGMETs from one air traffic service unit on a particular date.

Post-flight analysis and incident investigation.

2 parameters
Name In Required Notes
atsu path yes ATSU identifier
date path yes Date (YYYY-MM-DD format)
GET https://api.weather.gov/aviation/sigmets/{atsu}/{date}/{time}

One specific in-flight hazard advisory, fetched by its issuing unit, date and time. Useful when another response links to it.

Anyone following a link from a SIGMET listing.

3 parameters
Name In Required Notes
atsu path yes ATSU identifier
date path yes Date (YYYY-MM-DD format)
time path yes Time (HHMM format). This time is always specified in UTC (Zulu) time.
GET https://api.weather.gov/stations/{stationId}/tafs

Terminal Aerodrome Forecasts for an airport: a tightly-coded forecast of exactly the things that matter for flying — ceiling, visibility, wind and significant weather — usually covering the next 24 to 30 hours.

Pilots, dispatchers, and anyone who has watched a flight get delayed and wondered why.

1 parameter
Name In Required Notes
stationId path yes Observation station ID string
Worked example

Worked example

https://api.weather.gov/stations/KTOP/tafs

cURL

curl "https://api.weather.gov/stations/KTOP/tafs" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/stations/{stationId}/tafs/{date}/{time}

One specific airport forecast as issued at a particular time — what the forecast said then, not what it says now.

Anyone auditing what a forecast said at a particular moment.

3 parameters
Name In Required Notes
stationId path yes Observation station ID string
date path yes Date (YYYY-MM-DD format)
time path yes Time (HHMM format). This time is always specified in UTC (Zulu) time.

Text Products

The raw text bulletins NWS has issued for decades — forecast discussions, administrative messages, statements. Hundreds of product types, all searchable.

GET https://api.weather.gov/products

Search recent text products across types, offices and time.

Researchers and anyone monitoring a particular kind of bulletin.

7 parameters
Name In Required Notes
location query no Location id array
start query no Start time string (date-time)
end query no End time string (date-time)
office query no Issuing office array
wmoid query no WMO id code array
type query no Product code array
limit query no Limit integer
Worked example

Worked example

https://api.weather.gov/products?type=AFD&limit=5

cURL

curl "https://api.weather.gov/products?type=AFD&limit=5" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/{productId}

One text product in full, including its raw text exactly as it was transmitted. The text is the real payload — fixed-width, uppercase in places, and unchanged in style for decades.

Anyone who wants to read the actual bulletin rather than a summary of it.

GET https://api.weather.gov/products/locations

Every office and centre that issues text products, by identifier.

Developers mapping office codes to names.

Worked example

Worked example

https://api.weather.gov/products/locations

cURL

curl "https://api.weather.gov/products/locations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/locations/{locationId}/types

Every product type a given office publishes. A good way to discover what your local forecast office actually puts out beyond the forecast.

Anyone exploring one office’s output.

Worked example

Worked example

https://api.weather.gov/products/locations/TOP/types

cURL

curl "https://api.weather.gov/products/locations/TOP/types" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/types

The catalogue of every text product type NWS issues — over 300 three-letter codes, from AFD (the forecaster’s reasoning) to ADM (administrative messages from the Senior Duty Meteorologist). This is the index to decades of institutional writing.

Anyone exploring what NWS actually publishes beyond the forecast.

Worked example

Worked example

https://api.weather.gov/products/types

cURL

curl "https://api.weather.gov/products/types" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/types/{typeId}

Recent products of one type, from every office that issues it.

Anyone tracking one product type nationally.

Worked example

Worked example

https://api.weather.gov/products/types/AFD

cURL

curl "https://api.weather.gov/products/types/AFD" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/types/{typeId}/locations

Which offices and national centres issue a given product type — the list of places to look for that kind of bulletin.

Developers building a product browser.

Worked example

Worked example

https://api.weather.gov/products/types/AFD/locations

cURL

curl "https://api.weather.gov/products/types/AFD/locations" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/types/{typeId}/locations/{locationId}

Recent products of one type from one office — for example every Area Forecast Discussion from Topeka, or every administrative message from the Senior Duty Meteorologist.

This is the endpoint behind this site’s SDM translator. Also anyone following their local office’s forecast discussion.

Worked example

Worked example

https://api.weather.gov/products/types/ADM/locations/SDM

The Senior Duty Meteorologist’s administrative messages — the feed this site translates.

cURL

curl "https://api.weather.gov/products/types/ADM/locations/SDM" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/products/types/{typeId}/locations/{locationId}/latest

Just the newest product of a given type from a given office, without listing the rest.

Anyone polling for “has a new one come out yet”.

Worked example

Worked example

https://api.weather.gov/products/types/AFD/locations/TOP/latest

cURL

curl "https://api.weather.gov/products/types/AFD/locations/TOP/latest" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Zones & Geography

The shapes NWS divides the country into: forecast zones, counties, fire weather zones and marine areas.

GET https://api.weather.gov/zones

Every zone NWS uses, of every kind. Zones are the areas warnings and public forecasts are written for — and there are several overlapping systems, which is the single most confusing thing about NWS geography.

Mapmakers and developers who need to match a place to an NWS area.

8 parameters
Name In Required Notes
id query no Zone ID (forecast or county) array
area query no State/marine area code array
region query no Region code array
type query no Zone type array
point query no Point (latitude,longitude)
include_geometry query no Include geometry in results (true/false) boolean
limit query no Limit integer
effective query no Effective date/time string (date-time)
Worked example

Worked example

https://api.weather.gov/zones?limit=10

cURL

curl "https://api.weather.gov/zones?limit=10" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/{type}

Zones of one kind: forecast zones (public forecasts), county zones (many warnings), fire weather zones (fire danger), or marine zones (coastal and offshore waters). The same ground can belong to a different-shaped area in each system.

Anyone who has wondered why a warning covers a different shape than the forecast.

8 parameters
Name In Required Notes
id query no Zone ID (forecast or county) array
area query no State/marine area code array
region query no Region code array
type query no Zone type array
point query no Point (latitude,longitude)
include_geometry query no Include geometry in results (true/false) boolean
limit query no Limit integer
effective query no Effective date/time string (date-time)
Worked example

Worked example

https://api.weather.gov/zones/forecast?area=KS

cURL

curl "https://api.weather.gov/zones/forecast?area=KS" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/{type}/{zoneId}

One zone in detail, including its boundary as GeoJSON so you can draw it on a map.

Mapmakers.

1 parameter
Name In Required Notes
effective query no Effective date/time string (date-time)
Worked example

Worked example

https://api.weather.gov/zones/forecast/KSZ009

cURL

curl "https://api.weather.gov/zones/forecast/KSZ009" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/zones/{type}/{zoneId}/radio

Which NOAA Weather Radio transmitters serve a given zone.

Emergency managers checking radio coverage.

Worked example

Worked example

https://api.weather.gov/zones/county/MDC013/radio

Only county zones work here. A forecast or fire zone returns 404, and the error names the enumeration it wanted — verified across six states. Both identifiers arrive in the same /points response, under forecastZone and county, so reaching for the wrong one is easy. Note also that the list repeats each transmitter once per area it serves: 128 entries here are two actual stations.

cURL

curl "https://api.weather.gov/zones/county/MDC013/radio" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Offices & Outreach

The 122 local Weather Forecast Offices, plus the briefings and graphics they publish.

GET https://api.weather.gov/offices/{officeId}

Details about one of the 122 local Weather Forecast Offices: address, phone number, the counties it covers and its parent region. Every forecast in the country is written by one of these offices.

Anyone who wants to know who actually forecasts for their area — and how to reach them.

Worked example

Worked example

https://api.weather.gov/offices/TOP

NWS Topeka, the office covering the example point.

cURL

curl "https://api.weather.gov/offices/TOP" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/offices/{officeId}/briefing

Briefing packages an office has prepared, typically slide decks aimed at emergency managers before a significant event.

Emergency managers and partners who receive these directly.

GET https://api.weather.gov/offices/{officeId}/briefing/download/{briefingId}

Download one specific briefing package file — usually a slide deck an office prepared for emergency managers ahead of an event.

Emergency managers.

GET https://api.weather.gov/offices/{officeId}/briefing/download/latest

Download the most recent briefing package from an office.

Emergency managers.

GET https://api.weather.gov/offices/{officeId}/headlines

Notices an office has posted to the top of its own web page — usually about significant upcoming weather.

Local news and anyone following one office closely.

Worked example

Worked example

https://api.weather.gov/offices/TOP/headlines

cURL

curl "https://api.weather.gov/offices/TOP/headlines" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/offices/{officeId}/headlines/{headlineId}

One specific notice an office posted to its own web page, with the full text rather than just the summary line.

Anyone following a link from a headline listing.

GET https://api.weather.gov/offices/{officeId}/weatherstories

The “weather story” graphic — the single annotated image an office publishes to explain the main weather concern of the day in one picture.

Broadcasters, social media accounts, and anyone who wants the day’s story at a glance.

Worked example

Worked example

https://api.weather.gov/offices/TOP/weatherstories

cURL

curl "https://api.weather.gov/offices/TOP/weatherstories" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/offices/{officeId}/weatherstories/download/{imageId}

The image file behind a weather story graphic, for embedding the office’s own annotated summary of the day.

Anyone displaying the graphic.

NOAA Weather Radio

The transmitter network that broadcasts weather around the clock on VHF — the one your emergency radio picks up.

GET https://api.weather.gov/radio

Every NOAA Weather Radio transmitter: call sign, frequency, location and power. This is the network behind the weather radio that wakes you up at 3am when a tornado warning is issued.

Preparedness sites, radio hobbyists, and emergency managers.

Worked example

Worked example

https://api.weather.gov/radio

cURL

curl "https://api.weather.gov/radio" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radio/{callSign}

Details for one weather radio transmitter, including which areas it covers.

Anyone checking coverage for a specific community.

Worked example

Worked example

https://api.weather.gov/radio/KEC83

Call signs carry digits — KEC83, WZ2521 — which is worth knowing if you are validating them. The sameCodes list is what an alerting receiver matches on to decide whether a broadcast is for your county.

cURL

curl "https://api.weather.gov/radio/KEC83" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/radio/{callSign}/broadcast

The area a given NOAA Weather Radio transmitter is broadcasting to, and the zones its broadcast covers.

Radio hobbyists.

Worked example

Worked example

https://api.weather.gov/radio/KEC83/broadcast

Not JSON. This answers in SSML, the speech synthesis markup that drives the synthesised voice on the radio, so what comes back is the broadcast script rather than data about it.

cURL

curl "https://api.weather.gov/radio/KEC83/broadcast" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"

Icons, Imagery & Extras

Supporting pieces: weather icons, satellite thumbnails and the official NWS glossary.

GET https://api.weather.gov/glossary

The official NWS glossary — hundreds of terms defined by the agency itself. If you want to know exactly what NWS means by “severe thunderstorm” or “virga”, this is the authoritative answer.

Students, writers, and anyone decoding a forecast discussion.

Worked example

Worked example

https://api.weather.gov/glossary

One large response — the whole glossary arrives at once, with no paging and no way to ask for a single term.

cURL

curl "https://api.weather.gov/glossary" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/icons

The list of weather icon codes and what each one depicts — the legend you need to map forecast conditions to imagery.

Developers building an icon legend.

Worked example

Worked example

https://api.weather.gov/icons

cURL

curl "https://api.weather.gov/icons" \
  -H "User-Agent: (myweatherapp.example.com, me@example.com)"
GET https://api.weather.gov/icons/{set}/{timeOfDay}/{first}

The weather icons NWS uses in its own forecasts, generated on demand for a given condition and time of day. Being deprecated, but still widely used.

Developers who want their forecast display to match the official one.

GET https://api.weather.gov/icons/{set}/{timeOfDay}/{first}/{second}

An icon representing two conditions at once — for a period that starts rainy and ends snowy, say.

Developers rendering forecast periods.

GET https://api.weather.gov/thumbnails/satellite/{area}

Small satellite preview images for a region — thumbnails rather than full-resolution imagery, meant for quick display.

Anyone building a lightweight satellite view.