Skip to content

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NOTAM API — Real-Time Notices to Air Missions

RapidAPIFree TierPythonJavaScript

Get active NOTAMs for any airport via the FAA SWIM real-time feed. Returns raw NOTAM text plus fully parsed fields — NOTAM ID, type, location, effective time, expiration time, and body. No polling of government portals required.

The SkyLink NOTAM API taps directly into the FAA SWIM FNS (Flight Notification Service) real-time Solace messaging system, delivering NOTAMs the moment they are issued — no scraping, no delays, no polling aviationweather.gov or the ICAO NOTAM portal.


What Are NOTAMs?

NOTAM (Notice to Air Missions) is a notice distributed to pilots and airline operations containing essential information about temporary changes to airspace, runways, navigation aids, and hazards. Every preflight check requires reviewing active NOTAMs for the planned route and destination. Examples:

  • Runway closures and surface conditions
  • ILS/VOR/ATIS out of service
  • TFRs (Temporary Flight Restrictions) — VIP movements, disasters, special events
  • Airspace closures and military operations
  • Construction cranes and obstacles near airports
  • Bird hazards and wildlife activity

Features

  • Real-time data from FAA SWIM FNS (Solace AMQP messaging / AIXM 5.1)
  • Zero polling delay — NOTAMs delivered as issued, not on a timer
  • Fully parsed fields — NOTAM ID, type (N/R/C), location, effective time, expiration time, body text
  • Raw text preserved alongside parsed data — for display or manual review
  • All active NOTAMs for a given airport in a single call
  • Supports all ICAO airport codes worldwide

Endpoint

GET /v3/notams/{icao}
# Examples:
GET /v3/notams/KJFK # JFK International, New York
GET /v3/notams/EGLL # Heathrow, London
GET /v3/notams/KLAX # Los Angeles International
GET /v3/notams/KSFO # San Francisco International
GET /v3/notams/EDDM # Munich Airport
GET /v3/notams/RJTT # Tokyo Haneda

Quick Start

Get Your Free API Key

Sign up at RapidAPI — SkyLink API — 1,000 free requests/month, no credit card required.

Python — Fetch Active NOTAMs

importrequestsheaders= {
"x-rapidapi-key": "YOUR_API_KEY",
"x-rapidapi-host": "skylink-api.p.rapidapi.com"
}
r=requests.get(
"https://skylink-api.p.rapidapi.com/v3/notams/KJFK",
headers=headers
)
data=r.json()
print(f"{data['total_count']} active NOTAMs for {data['icao']}")
fornotamindata["notams"][:5]:
print(f"\n[{notam['notam_id']}] Type: {notam['type']}")
print(f" Effective: {notam['effective']}{notam['expiration']}")
print(f" {notam['body']}")

Python — Filter NOTAMs by Keyword

r=requests.get(
"https://skylink-api.p.rapidapi.com/v3/notams/KJFK",
headers=headers
)
notams=r.json()["notams"]
# Filter for runway-related NOTAMsrunway_notams= [nforninnotamsif"RWY"inn["body"] or"RUNWAY"inn["body"]]
print(f"{len(runway_notams)} runway NOTAMs active at KJFK")
forninrunway_notams:
print(f" [{n['notam_id']}] {n['body'][:120]}")
# Filter for ILS out of serviceils_notams= [nforninnotamsif"ILS"inn["body"] or"LOC"inn["body"]]
print(f"\n{len(ils_notams)} ILS/LOC NOTAMs")

Python — NOTAM Watcher (Diff New vs. Previously Seen)

importrequests, time, jsonheaders= {
"x-rapidapi-key": "YOUR_API_KEY",
"x-rapidapi-host": "skylink-api.p.rapidapi.com"
}
icao="KJFK"seen_ids=set()
whileTrue:
r=requests.get(
f"https://skylink-api.p.rapidapi.com/v3/notams/{icao}",
headers=headers
)
notams=r.json()["notams"]
current_ids= {n["notam_id"] forninnotams}
new_notams= [nforninnotamsifn["notam_id"] notinseen_ids]
expired=seen_ids-current_idsifnew_notams:
print(f"NEW NOTAMs for {icao}:")
forninnew_notams:
print(f" + [{n['notam_id']}] {n['body'][:100]}")
ifexpired:
print(f"EXPIRED: {expired}")
seen_ids=current_idstime.sleep(600) # check every 10 minutes

JavaScript (Node.js)

constaxios=require('axios');constheaders={'x-rapidapi-key': 'YOUR_API_KEY','x-rapidapi-host': 'skylink-api.p.rapidapi.com'};const{ data }=awaitaxios.get('https://skylink-api.p.rapidapi.com/v3/notams/EGLL',{ headers });console.log(`${data.total_count} active NOTAMs at EGLL`);data.notams.forEach(n=>{console.log(`[${n.notam_id}] ${n.body}`);console.log(` Expires: ${n.expiration}`);});

cURL

curl -X GET "https://skylink-api.p.rapidapi.com/v3/notams/KJFK" \
-H "x-rapidapi-key: YOUR_API_KEY" \
-H "x-rapidapi-host: skylink-api.p.rapidapi.com"

Response Schema

{
"icao": "KJFK",
"total_count": 23,
"notams": [
{
"notam_id": "1/0001",
"type": "N",
"location": "KJFK",
"effective": "2026-03-29T12:00:00Z",
"expiration": "2026-04-15T23:59:00Z",
"body": "RWY 04L/22R CLSD DAILY 2200-0600 LOCAL DUE TO CONSTRUCTION",
"raw": "!JFK 03/001 JFK RWY 04L/22R CLSD 2203292200-2204150600",
"source": "FAA SWIM FNS"
}
]
}

NOTAM types:

  • N — New NOTAM
  • R — Replace (supersedes previous NOTAM)
  • C — Cancel

Use Cases

  • EFB (Electronic Flight Bag) NOTAM briefing section — display parsed and categorized NOTAMs
  • Preflight planning apps — integrate NOTAMs alongside weather for a complete briefing
  • TFR (Temporary Flight Restriction) monitoring — track VIP movements and special events
  • Drone/UAS BVLOS pre-flight checks — ensure no TFRs or closed airspace on planned route
  • AI flight briefing pipelines — feed NOTAM data to LLMs alongside METAR/TAF
  • Dispatch system integration — alert dispatchers to runway or navaid outages

Related Repositories


GitHub Topics

notamfaaaviation-apifaa-swimairspaceefbpythonjavascriptrest-apinotamstfrfree-apiaviation


Part of SkyLink API — The All-In-One Aviation Data API

All features are included in a single SkyLink API subscription. No juggling 5 different providers. One key, one schema, one bill.

About

Get active NOTAMs for any airport via the FAA SWIM real-time feed. Returns raw NOTAM text plus fully parsed fields — NOTAM ID, type, location, effective time, expiration time, and body. No polling of government portals required.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors