BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://nasstatus.faa.gov/api/airport-status-information'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://nasstatus.faa.gov/api/airport-status-information", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
<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 &#xd;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

ParameterTypeRequiredDescription
(no parameters)pathRequired`/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

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.