NOAA National Weather Service API
Free US National Weather Service API with no key: official forecasts, active severe weather alerts, radar stations and observations. Government source. Tested.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the NOAA National Weather Service API?
The NOAA National Weather Service API is a free, key-free US government API providing official weather forecasts, active severe weather alerts and warnings, station observations and radar data for the United States.
This is the authoritative source for US weather — the same data behind official warnings — and it is entirely free with no key. Its severe weather alerts endpoint is the one that matters most: tornado, flood and hurricane warnings straight from the issuing authority.
The API is discovery-based, which surprises people. You do not request a forecast by coordinates directly; you call `/points/{lat},{lon}` first, and it returns URLs for that location's forecast, hourly forecast and observation stations. Two requests, always.
Quick facts
- Base URL
https://api.weather.gov- Authentication
- No API key. NWS asks for a User-Agent with contact details so they can reach you about problems.
- Rate limit
- No published hard limit; a reasonable use policy applies.
- Pricing
- Free public domain US government data.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the NOAA National Weather Service API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Look up forecast endpoints for coordinates
GET https://api.weather.gov/points/39.7456,-97.0892
curl 'https://api.weather.gov/points/39.7456,-97.0892'const res = await fetch("https://api.weather.gov/points/39.7456,-97.0892");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.weather.gov/points/39.7456,-97.0892", timeout=20)
res.raise_for_status()
print(res.json()){
"@context": [
"https://geojson.org/geojson-ld/geojson-context.jsonld",
{
"@version": "1.1",
"wx": "https://api.weather.gov/ontology#",
"s": "https://schema.org/",
"geo": "http://www.opengis.net/ont/geosparql#",
"unit": "http://codes.wmo.int/common/unit/",
"@vocab": "https://api.weather.gov/ontology#",
"geometry": {
"@id": "s:GeoCoordinates",
"@type": "geo:wktLiteral"
},
"city": "s:addressLocality",
"state": "s:addressRegion",
"distance": {
"@id": "s:Distance",
"@type": "s:QuantitativeValue"
},
"bearing": {
"@type": "s:QuantitativeValue"
},
"value": {
"@id": "s:value"
},
"unitCode": {
"@id": "s:unitCode",
"@type": "@id"
},
"forecastOffice": {
"@type": "@id"
},
"forecastGridData": {
"@type": "@id"
},
"publicZone": {
"@type": "@id"
},
"county": {
"@type": "@id"
}
}
],
"id": "https://api.weather.gov/points/39.7456,-97.0892",
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-97.0892,
39.7456
]
},
"properties": {
"@id": "https://api.weather.gov/points/39.7456,-97.0892",
"@type": "wx:Point",
"cwa": "TOP",
"type": "land",
"forecastOffice": "https://api.weather.gov/offices/TOP",
"gridId": "TOP",
"gridX": 32,
"gridY": 81,
"forecast": "https://api.weather.gov/gridpoints/TOP/32,81/forecast",
"forecastHourly": "https://api.weather.2. Fetch active severe weather alerts for a state
GET https://api.weather.gov/alerts/active?area=CA
curl 'https://api.weather.gov/alerts/active?area=CA'const res = await fetch("https://api.weather.gov/alerts/active?area=CA");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.weather.gov/alerts/active?area=CA", timeout=20)
res.raise_for_status()
print(res.json()){
"@context": [
"https://geojson.org/geojson-ld/geojson-context.jsonld",
{
"@version": "1.1",
"wx": "https://api.weather.gov/ontology#",
"@vocab": "https://api.weather.gov/ontology#"
}
],
"type": "FeatureCollection",
"features": [
{
"id": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.32e04cdec4d5b16ce14c437133eb30c06db6345c.002.1",
"type": "Feature",
"geometry": null,
"properties": {
"@id": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.32e04cdec4d5b16ce14c437133eb30c06db6345c.002.1",
"@type": "wx:Alert",
"id": "urn:oid:2.49.0.1.840.0.32e04cdec4d5b16ce14c437133eb30c06db6345c.002.1",
"areaDesc": "Central Siskiyou County Including Shasta Valley; Siskiyou County from the Cascade Mountains East and South to Mt Shasta; Modoc County Except for the Surprise Valley",
"geocode": {
"SAME": [
"006093",
"006049"
],
"UGC": [
"CAZ281",
"CAZ284",
"CAZ285"
]
},
"affectedZones": [
"https://api.weather.gov/zones/fire/CAZ281",
"https://api.weather.gov/zones/fire/CAZ284",
"https://api.weather.gov/zones/fire/CAZ285"
],
"references": [],
"sent": "2026-08-19T11:53:00-07:00",
"effective": "2026-08-19T11:53:00-07:00",
"onset": "2026-08-21T14:00:00-07:00",
"expires": "2026-08-20T00:00:00-07:00",
"ends": "2026-08-21T21:00:00-07:00",
"status": "Actual",
"messageType"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
points/<lat>,<lon> | path | Required | Entry point — returns URLs for that location's data. points/39.7456,-97.0892 |
alerts/active | path | Optional | All active weather alerts, filterable by area. alerts/active?area=TX |
gridpoints/<office>/<x>,<y>/forecast | path | Optional | The forecast URL returned by /points. gridpoints/TOP/31,80/forecast |
User-Agent | header | Optional | Contact details, requested by NWS policy. MyApp (you@example.com) |
Response fields
properties.forecaststring- URL for the multi-day forecast for this location.
properties.forecastHourlystring- URL for the hourly forecast.
properties.observationStationsstring- URL listing nearby observation stations.
properties.gridId / gridX / gridYstring|integer- The NWS forecast grid cell for these coordinates.
properties.relativeLocationobject- Nearest named place, useful for display.
(alerts) properties.severity / eventstring- Alert severity and event type such as Tornado Warning.
What you can build with the NOAA National Weather Service API
- Display official US forecasts and severe weather warnings
- Trigger alerting when a warning is issued for a user's area
- Access raw observation data from NWS stations
- Build emergency preparedness tools with authoritative data
Common errors and how to fix them
404 on /points
Coordinates are outside US territory.
Fix: The NWS API covers the United States and its territories only.
Expected a forecast but got URLs
The /points endpoint is a discovery step.
Fix: Follow properties.forecast to the actual forecast — it always takes two requests.
Excessive coordinate precision rejected
NWS truncates to four decimal places.
Fix: Round coordinates before requesting.
NOAA National Weather Service API — frequently asked questions
Is the National Weather Service API free?
Yes, completely free with no API key. It is US government public domain data, and NWS only asks that you send a User-Agent with contact details.
Why doesn't /points return a forecast?
It is a discovery endpoint. It returns the URLs for that location's forecast, hourly forecast and stations, which you then follow — so a forecast always takes two requests.
Can I get severe weather alerts?
Yes, /alerts/active returns current warnings and watches, filterable by state or zone. This is the official source used for public warnings.
Does it cover outside the US?
No. Coverage is the United States and its territories. Use MET Norway or Open-Meteo for global forecasts.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Alternatives to NOAA National Weather Service API
If NOAA National Weather Service does not fit, these weather apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Open-Meteo | Free weather forecast API with no API key and no signup. Hourly and daily forecasts worldwide, free for commercial use. Working curl example and live response. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Air Quality | Free air quality API with no key: PM2.5, PM10, ozone, nitrogen dioxide, European and US AQI plus pollen forecasts worldwide. Tested curl example included. | No key | Yes | 19 Aug 2026 |
| wttr.in | wttr.in is a free console-oriented weather API with no key. Get weather as plain text, ASCII art, PNG or full JSON with one curl command. Live example included. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Geocoding | Free geocoding API with no key: convert a city or place name into latitude and longitude, with population, country and timezone. Tested curl example and live JSON. | No key | Yes | 19 Aug 2026 |
| openSenseMap | Free citizen weather station API with no key: read any senseBox's sensors and their latest measurements, from temperature and humidity to particulates. Tested example included. | No key | Yes | 21 Aug 2026 |
| RainViewer | Free weather radar API with no key: a manifest of past and forecast radar frames worldwide, each resolving to standard map tiles you can overlay. Tested example included. | No key | Yes | 21 Aug 2026 |
NOAA National Weather Service is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.