FAA NAS Status API
Free official FAA feed with no key: live ground stops, ground delay programmes, arrival and departure delays and airport closures across US airspace. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the FAA NAS Status API?
The FAA NAS Status feed is a free, key-free XML endpoint publishing the current operational state of the United States National Airspace System: ground stops, ground delay programmes, airspace flow programmes, arrival and departure delays, and airport closures with their reasons and expected reopening times.
Every ground stop and airport closure in American airspace surfaces here first. It is the machine-readable twin of the FAA's own operations status page, and the authoritative source for why American flights are being held. When a ground stop is issued at Newark, it appears here with the reason and the expected end time before any consumer flight-tracking app reflects it — which makes it the right feed for delay alerting rather than a scraped secondary source.
Two practical points. The response is XML, not JSON, and there is no JSON variant, so you will need a parser; the structure is shallow enough that this is a small cost. And the feed is genuinely sparse — on a clear morning it may list nothing but a couple of overnight runway closures, which is correct rather than broken. The `Reason` field carries raw NOTAM text, abbreviations and all, so `AD AP CLSD EXC HEL` means the aerodrome is closed except to helicopters.
Quick facts
- Base URL
https://nasstatus.faa.gov/api- Authentication
- No key or account. US federal government service; the data is in the public domain.
- Rate limit
- No published quota. The feed is regenerated every few minutes, so polling faster than that gains nothing.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the FAA NAS Status API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch current US airport delays and closures
GET https://nasstatus.faa.gov/api/airport-status-information
curl 'https://nasstatus.faa.gov/api/airport-status-information'const res = await fetch("https://nasstatus.faa.gov/api/airport-status-information");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://nasstatus.faa.gov/api/airport-status-information", timeout=20)
res.raise_for_status()
print(res.json())<AIRPORT_STATUS_INFORMATION><Update_Time>Fri Aug 21 08:00:28 2026 GMT</Update_Time><Dtd_File>http://www.fly.faa.gov/AirportStatus.dtd</Dtd_File><Delay_type><Name>Airport Closures</Name><Airport_Closure_List><Airport><ARPT>LGA</ARPT><Reason>!LGA 08/423 LGA AD AP CLSD EXC HEL 30MIN 
PPR 718-533-3700 2608210618-2608211000</Reason><Start>Aug 21 at 06:18 UTC.</Start><Reopen>Aug 21 at 10:00 UTC.</Reopen></Airport><Airport><ARPT>MRY</ARPT><Reason>!MRY 08/029 MRY AD AP CLSD EXC HEL 2608210715-2608211200</Reason><Start>Aug 21 at 07:15 UTC.</Start><Reopen>Aug 21 at 12:00 UTC.</Reopen></Airport></Airport_Closure_List></Delay_type><Delay_type><Name>Airport Closures</Name><Airport_Closure_List><Airport><ARPT>ASE</ARPT><Reason>!ASE 08/060 ASE AD AP CLSD EXC LIFE FLT HEL AND SAR HEL 30 MIN PPR 970-379-8406 2608210500-2608211300</Reason><Start>Aug 21 at 05:00 UTC.</Start><Reopen>Aug 21 at 13:00 UTC.</Reopen></Airport></Airport_Closure_List></Delay_type></AIRPORT_STATUS_INFORMATION>Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(no parameters) | path | Required | `/airport-status-information` returns the entire current national picture in one document. airport-status-information |
Response fields
Update_Timestring- When the feed was generated, in UTC. Compare it against your clock to detect a stalled feed.
Delay_typeelement- Repeating block, one per category of disruption. `Name` says which — "Airport Closures", "Ground Stop", "Ground Delay", "Arrival/Departure Delay".
Airport_Closure_List / Airportelement- Airports affected within a Delay_type block.
ARPTstring- Three-letter FAA airport identifier — LGA, MRY, ASE. Note this is the FAA code, not always the ICAO one.
Reasonstring- Raw NOTAM or operational text explaining the restriction, complete with aviation abbreviations.
Start / Reopenstring- When the restriction began and when it is expected to lift, as human-readable UTC strings rather than ISO timestamps.
(delay blocks) Arrival_Departure, Avg, Maxelement- For delay categories: whether arrivals or departures are affected and the average and maximum delay reported.
What you can build with the FAA NAS Status API
- Alert travellers when a ground stop is issued at their departure airport
- Surface the official reason for a delay rather than a guess
- Feed an operations dashboard tracking US airspace disruption
- Correlate historical delay data with FAA programmes when archived over time
- Warn crew or dispatch of an airport closure and its expected reopening
Common errors and how to fix them
A nearly empty document
There are genuinely no active delays or closures.
Fix: This is the normal state on a quiet day. Treat an empty `AIRPORT_STATUS_INFORMATION` element as good news, not a failed request.
XML where you expected JSON
The feed is XML only; there is no JSON representation.
Fix: Parse the XML, or convert it once server-side. The structure is shallow and stable, so a small transform is enough.
Times will not parse as ISO 8601
`Start` and `Reopen` are human-readable strings like "Aug 21 at 06:18 UTC."
Fix: Parse them with an explicit format, and note they carry no year — infer it from `Update_Time`.
Airport code does not match your database
`ARPT` is the FAA three-letter identifier, which diverges from ICAO and occasionally from IATA.
Fix: Map FAA identifiers explicitly. For most large US airports the ICAO code is the FAA code with a K prefix, but the exceptions are real.
FAA NAS Status API — frequently asked questions
Is the FAA delay feed free?
Yes, free with no key or account. It is a US federal government service and the data is in the public domain, so you can store and redistribute it.
What is a ground stop?
It is an FAA order halting departures bound for a specific airport, usually because of weather, a runway closure or air traffic control capacity. Aircraft already airborne continue; those on the ground wait until the stop lifts.
How often does the feed update?
Every few minutes. Because entries appear and disappear as programmes are issued and cancelled, polling every two to five minutes is the sensible cadence for alerting.
Does it cover airports outside the United States?
No. It describes the US National Airspace System only. Other countries publish equivalent information through their own air navigation service providers, in incompatible formats.
Tools that pair with this API
XML to JSON Converter
Convert XML to JSON online. Elements become objects, attributes are prefixed with @, text is preserved, and parse errors are reported clearly — in-browser.
XML Formatter
Format and beautify XML online with proper indentation, or minify it to a single line. Parse errors are reported clearly — free, fast and fully private.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
FAA NAS Status is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.