---
name: faa-nas-status-api-ingestion
description: "How to get FAA NAS Status airport API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load FAA NAS airport events into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/faa-nas-status-api
Provider: https://nasstatus.faa.gov/api/airport-status-information
Checked against the provider's documentation: 2026-11-01

## 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.
- Terms page: https://www.faa.gov/documentlibrary/media/order/faa_order_1370.79a.pdf

## Sources
- https://nasstatus.faa.gov/: "The Federal Aviation Administration's National Airspace System (NAS) dashboard"
- https://nasstatus.faa.gov/api/airport-status-information: "<AIRPORT_STATUS_INFORMATION>"
- https://www.faa.gov/documentlibrary/media/order/faa_order_1370.79a.pdf: "Information presented on the FAA public website is considered public information and may be distributed or copied."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
