Skip to content

SkyLink-API/notam-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOTAM API — Real-Time Notices to Air Missions

RapidAPI Free Tier Python JavaScript

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

import requests

headers = {
    "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']}")
for notam in data["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 NOTAMs
runway_notams = [n for n in notams if "RWY" in n["body"] or "RUNWAY" in n["body"]]
print(f"{len(runway_notams)} runway NOTAMs active at KJFK")
for n in runway_notams:
    print(f"  [{n['notam_id']}] {n['body'][:120]}")

# Filter for ILS out of service
ils_notams = [n for n in notams if "ILS" in n["body"] or "LOC" in n["body"]]
print(f"\n{len(ils_notams)} ILS/LOC NOTAMs")

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

import requests, time, json

headers = {
    "x-rapidapi-key": "YOUR_API_KEY",
    "x-rapidapi-host": "skylink-api.p.rapidapi.com"
}

icao = "KJFK"
seen_ids = set()

while True:
    r = requests.get(
        f"https://skylink-api.p.rapidapi.com/v3/notams/{icao}",
        headers=headers
    )
    notams = r.json()["notams"]
    current_ids = {n["notam_id"] for n in notams}

    new_notams = [n for n in notams if n["notam_id"] not in seen_ids]
    expired = seen_ids - current_ids

    if new_notams:
        print(f"NEW NOTAMs for {icao}:")
        for n in new_notams:
            print(f"  + [{n['notam_id']}] {n['body'][:100]}")

    if expired:
        print(f"EXPIRED: {expired}")

    seen_ids = current_ids
    time.sleep(600)  # check every 10 minutes

JavaScript (Node.js)

const axios = require('axios');

const headers = {
  'x-rapidapi-key': 'YOUR_API_KEY',
  'x-rapidapi-host': 'skylink-api.p.rapidapi.com'
};

const { data } = await axios.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

notam faa aviation-api faa-swim airspace efb python javascript rest-api notams tfr free-api aviation


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

License

Stars

Watchers

Forks

Releases

No releases published

Packages