Base URL: https://api.wxalerts.org
Everything below is public, unauthenticated and CORS-enabled, because this site is built static and calls the same endpoints from the browser. No key, and none of it is exempt from the Terms of Service; the clauses that decide what you may build are collected at the bottom.
Stats
GET /stats/summary
Active alert counts and the lightning window.
{
"server_time": "2026-08-17T18:04:11Z",
"alerts": { "active": 142, "with_geometry": 138 },
"lightning": {
"flashes": 1243891,
"window_seconds": 10800,
"rate_per_minute": 1021,
"retention_hours": 3,
"covers_full_day": false
}
}
Branch on covers_full_day rather than assuming the window means “today”,
GLM retention is a few hours, so a daily total usually does not exist.
Alerts
GET /alerts/highest-severity?limit=3
GET /alerts/in-bounds?west=&south=&east=&north=
GET /alerts/focus?limit=25&strategy=auto
in-bounds returns GeoJSON: a FeatureCollection whose features carry the
warning polygon and the alert properties. focus picks a viewport for you when
you do not have one, which is useful for a kiosk or a screenshot bot, and says why in
focus.reason.
Each alert carries both a CAP severity and a VTEC significance. Colour by
significance: it is the axis the NWS asks people to read, and CAP severity puts
every Special Weather Statement at Moderate, which is not a watch.
significance |
Meaning |
|---|---|
W |
Warning: occurring or imminent |
A |
Watch: conditions favourable |
Y |
Advisory: less serious |
S |
Statement |
SPC outlooks
GET /outlooks
GET /outlooks/{product}/geojson
The Storm Prediction Center’s convective outlooks: Day 1 to Day 3 categorical,
and the Day 1 tornado, hail and wind probabilities. /outlooks lists what is
currently issued without geometry, and is what a product picker should be built
from, since it says which outlooks have actually been fetched and when.
Each feature carries SPC’s own stroke and fill. Use them: the colours of a
convective outlook are the product, and readers already know how to read them.
Features come back lowest risk first, which is also the order to draw them, since
a Slight Risk area sits inside the General Thunderstorms area it is part of.
significant: true marks the hatched 10% significant-severe area. Hatch it
rather than filling it. It is a second statement about ground the probabilities
have already coloured (“of those storms, 10% or more would be EF2 or stronger”),
and a solid fill reads as a higher probability than SPC issued.
An outlook with nothing to draw returns zero features and is not an error. The
summary’s empty_label carries the forecaster’s own phrasing, usually
"Less Than 5% All Areas", which is how a client tells no risk from no data.
Locations
GET /locations/search?q=denton&limit=8
States, counties, cities and ZIPs. Results carry a centroid and a suggested
zoom rather than a bounding box, so the API does not have to invent an extent
for a point.
Rate limits
Unauthenticated clients get 60 requests per minute. Past that a client is presumptively unreasonable and may be throttled or blocked, per Terms §3.
Enforcement is coarser than that figure: it keys on source IP at a much higher ceiling, because one IP behind carrier-grade NAT or an office is many clients and metering it at 60 would cut all of them off together. /limits has the current numbers and the reasoning. The gap is not headroom: 60 is still the limit your client is held to, and the response to sitting above it is a mail asking you to stop.
Sixty is more than this data justifies anyway. Alerts change on the order of minutes and the stats summary on the order of seconds, so cache what you can and poll on the interval your display actually refreshes at. If you have a case for more, say hello in Discord before you start rather than after you are blocked.
Keyed API access and authenticated MQTT are governed separately, under the API Terms of Use and the limits set at issuance (Terms §20). Nothing on this page needs a key.
Terms
The full text is at /terms. Three clauses decide whether what you are building is allowed:
- Personal, educational and research use. The licence covers those (§4.1). Reselling the feed, redistributing it for gain, or building a commercial service on top of it needs written permission first (§3). The endpoints being open is not that permission; ask first.
- Attribute, and do not imply endorsement. NWS and NOAA data stays theirs:
do not claim it as your own, do not present it as official government output,
and do not imply NOAA or the NWS endorses what you built
(§4.3, §3). The derived
products (processed GLM, ML nowcasts, anything under
focus) are ours, and are not official NWS products either. Credit both: NWS/NOAA for the alert, WxAlerts for the processing. - No EAS or WEA tones. You may not reproduce, transmit or simulate the WEA attention signal, the EAS Attention Signal or EAS header codes, or anything substantially similar, from API output, including as a notification sound (§3.1). This one is FCC rule, not house style.
