Next free-source hunt
We check for new free data every weekday.
Datasets / Transport & Shipping
nasstatus.faa.gov/

FAA NAS Status airport API

Freeauth: noneProvider terms#transport-shipping#event-data#real-time#risk#flows✓ verified Nov 1, 2026

FAA NAS Status airport API

The Federal Aviation Administration's NAS Status endpoint returns a keyless XML snapshot of airport traffic-management events. Records can include ground stops, ground-delay programs, arrival or departure delays and airport closures with airport code, reason, time window, delay range and trend fields.

Coverage

The endpoint covers current airport events affecting the U.S. National Airspace System and includes a GMT update timestamp. The fetched snapshot contained nine events across three event types; volume varies, and the provider states no history window, retention period, polling interval or numeric query cap.

Verdict

A live disruption signal for airport closures, traffic-management constraints and material arrival or departure delays. It can flag operational pressure around airports, airlines and connected routes, but it is a current snapshot rather than a flight-status feed or archive. Event text, reasons and end times can change or disappear, so persist retrieval time and source update time. FAA disclaims completeness and accuracy for its site information, and a missing airport must not be interpreted as normal operations.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load FAA NAS airport events into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/faa-nas-status-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "faa-nas-status-api"}.

Access

  • No account or key. The legacy airport-status endpoint returns XML.
  • The payload is a current snapshot and includes its own GMT update timestamp.

Request

bash
curl 'https://nasstatus.faa.gov/api/airport-status-information'

Format

XML rooted at AIRPORT_STATUS_INFORMATION, grouped by delay type. Event elements provide airport code, reason and type-specific fields such as start, reopen, end time, delay minimum, delay maximum and trend.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""FAA NAS airport-status XML -> pandas -> Parquet."""
import requests
import pandas as pd
import xml.etree.ElementTree as ET

URL = "https://nasstatus.faa.gov/api/airport-status-information"
r = requests.get(URL, timeout=60)
r.raise_for_status()
root = ET.fromstring(r.content)
columns = ["update_time", "event_type", "airport", "reason", "start",
           "reopen", "end_time", "delay_type", "delay_min", "delay_max", "trend"]
rows = []
for group in root.findall("Delay_type"):
    event_type = group.findtext("Name")
    for node in group.findall(".//Program") + group.findall(".//Delay") + group.findall(".//Airport"):
        direction = node.find("Arrival_Departure")
        rows.append({
            "update_time": root.findtext("Update_Time"), "event_type": event_type,
            "airport": node.findtext("ARPT"), "reason": node.findtext("Reason"),
            "start": node.findtext("Start"), "reopen": node.findtext("Reopen"),
            "end_time": node.findtext("End_Time"),
            "delay_type": direction.get("Type") if direction is not None else None,
            "delay_min": node.findtext("Arrival_Departure/Min"),
            "delay_max": node.findtext("Arrival_Departure/Max"),
            "trend": node.findtext("Arrival_Departure/Trend"),
        })
df = pd.DataFrame(rows, columns=columns)
df.to_parquet("faa_nas_airport_status.parquet", index=False)
print(len(df), "airport events", df["event_type"].nunique(), "event types",
      "updated", root.findtext("Update_Time"))

Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 9 airport events 3 event types updated Mon Nov 2 02:22:11 2026 GMT

Limits

  • Rate limit: Not stated.
  • The endpoint exposes a current snapshot; no archive window is documented.
  • The provider does not state a fixed refresh or polling interval.

Quirks

  • Different event categories use different XML child elements, so absent fields are expected.
  • Update_Time is GMT text; normalize it separately from event-local end-time strings.
  • The payload links an HTTP DTD, but the example does not dereference external entities.
  • An empty snapshot is valid and should produce an empty frame with the expected columns.

Terms and attribution

  • FAA public-site information may be distributed or copied.
  • FAA disclaims accuracy, completeness, adequacy and liability for errors or omissions.
  • No separate API licence or attribution requirement was stated.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer