NOTAM API

Required roles: AIS PIB API, AIS PIB API Data via Cloud — Roles
Base endpoint: https://ais-pib-api.ibosoft.net.tr:2087/notam
Reference documents: ICAO Annex 15, Ed. 16 (Amend. 41) (8/11/18) · ICAO Doc 10066 PANS-AIM, Ed. 1, Amend. 3 (28/11/24) · ICAO Doc 8126 Aeronautical Information Services Manual, Ed. 7, Amend. 1 (30/07/24) · ICAO Doc 8400 PANS-ABC, Ed. 9, Amend. 33 (8/11/18)
Attribution: show ibonav.aero wherever this data is displayed
Data sources: FAA NOTAM Management Service.
Last updated: 21 OCT 2026

About the reference documents: Related Documents and Resources
Depending on your use, the original data sources may also need to be credited.

Worldwide NOTAMs (also SNOWTAM and ASHTAM): search with detailed filters, a light GeoJSON layer for maps, single NOTAM records with the full AIXM, and reference lists for NOTAM codes and NOTAM series. Updated every few minutes.

  • Raw data: the whole NOTAM database of this API can be downloaded as an SQLite file: NOTAM Data in Files / Raw Data via Cloud.
  • AIXM mapping: the NOTAMs are received from the source as AIXM 5.1; which AIXM element each stored field comes from is given in NOTAM AIXM Mapping.

What you can build with it

  • Pre-flight briefing (PIB): list the NOTAMs of the departure, destination and alternate aerodromes (ad=) and of the FIRs on the route (fir=), limited to the flight time (validFrom / validTo) and flight level band (lowerFL / upperFL). Leave out what is not relevant with the qualifiers: e.g. only IFR traffic (traffic=I), only en-route items (scope=E).
  • NOTAM map: draw the NOTAM areas in the current map view with /geojson?bbox=…, and open the full text with /notam/{id} when a feature is clicked. Poll /latest-snapshot and reload only when it changes.
  • Topic-based search: find, for example, all runway closures (qCode=MR, qCondition=LC), unserviceable VOR, NDB and DME (qCode=NV,NB,ND, qCondition=AS) or activated restricted areas (qCode=RR, qCondition=CA) in a region (fir=LT??).
  • Look up a NOTAM: find a NOTAM by its number (notam=A1234/26, with fir or ad), or link to one record with its id.
  • Display helpers: show the NOTAM code meanings (/notam-code), fill qualifier filter menus (/notam-code/subjects, /conditions), and explain what a FIR's NOTAM series is used for (/series-description).

A typical briefing request:

GET /notam/search?ad=LTFM,EDDF&fir=LTBB,LTAA,LHCC,LOVV,EDMM,EDGG&validFrom=2026-10-17T08:00:00Z&validTo=2026-10-17T14:00:00Z&traffic=I

The NOTAM format is that of PANS-AIM; the NOTAM code (Q-code) meanings come from PANS-ABC. Only NOTAMs in force or still to come are returned; NOTAMs that have ended or been cancelled drop out at the next update. The search, GeoJSON and detail endpoints may be rate-limited per client IP (429: wait and retry).


Endpoints

Endpoint Description
GET /notam/search NOTAM cards matching the filters
GET /notam/geojson Light GeoJSON for a map view
GET /notam/{id} One NOTAM: the full card plus the AIXM XML
GET /notam/latest-snapshot Change token and last update time (poll this)
GET /notam/available Update status and counts
GET /notam/notam-code Decode a NOTAM code
GET /notam/notam-code/subjects All subject codes (letters 2–3)
GET /notam/notam-code/conditions All condition codes (letters 4–5)
GET /notam/series-description Descriptions of one NOTAM series of a FIR
GET /notam/series-descriptions All NOTAM series descriptions

Parameters

At least one of fir, ad, location, atfn, notam, id or bbox is required (otherwise 400). Parameters marked CSV take several comma-separated values (OR). In fir, ad, location and atfn, ? is a single-character wildcard (LT??).

Parameter Description
id (CSV) Unique NOTAM record ID (not the NOTAM number); exact match, for links to one NOTAM
fir (CSV) ICAO location indicator of the affected FIR
ad (CSV) ICAO location indicator of the aerodrome
location (CSV) Any location in item A (FIRs and aerodromes together)
atfn (CSV) 8-character account (originator) ID
notam (CSV) NOTAM number, e.g. B2310/26. Not unique worldwide — the same number can exist in several FIRs; combine with fir/ad/atfn, or use id
type (CSV) international, military, us
messageType (CSV) NOTAM, SNOWTAM, ASHTAM, Other
notamType (CSV) new (N), replacing (R), cancelling (C), other (anything else or none)
series (CSV) Series letter
qCode (CSV) Subject code (NOTAM code letters 2–3); __other__ = a code outside the ICAO list, or none
qCondition (CSV) Condition code (letters 4–5); __other__ as above
traffic (CSV) I, V, K; other = none of these
scope (CSV) A, E, W, K; other = none of these
purpose (CSV) N, B, O, M, K; other = none of these
lowerFL, upperFL Flight level window, against the Q-line lower/upper limits (SFC = 0, UNL = 999); overlap
validFrom, validTo UTC ISO 8601 period; validity overlap. An empty side is unlimited; a permanent NOTAM has no end
bbox minLon,minLat,maxLon,maxLat — NOTAMs whose geometry overlaps the box
limit, offset Paging (default 500, maximum 2000)
searchBy aerodrome, fir or number — a hint from the client; does not filter

/geojson

Parameter Description
bbox minLon,minLat,maxLon,maxLat — the map view
location, type, messageType, qCode, lowerFL, upperFL, validFrom, validTo As in /search
preferredOnly 1: only preferred NOTAMs — those whose area is known (see Preferred NOTAMs)

At most 5000 features are returned, newest updated first; truncated: true means there were more — zoom in or filter.

/notam-code

code=QMXLT (the full five-letter code), or code23=MX&code45=LT.

/series-description, /series-descriptions

Each State decides how it uses the NOTAM series letters, so the use of a series differs by country; it is published in the AIP GEN 3.1 section of that State. The same letter can have a different description in different FIRs (series A is international in most States, but not everywhere).

These endpoints let you show the description of a NOTAM's series in your frontend, for example as a tooltip or popup next to the series of a record, or as a reference list. Use the fir and series of the NOTAM record.

Endpoint Parameters
/series-description fir and series (both required)
/series-descriptions fir (optional; prefix match — LT, LTA and LTAA all work)

The descriptions come from the AIP GEN 3.1 sections of the States and from EUROCONTROL EAD INO (Status: 31 July 2026). The full list is in NOTAM Series List.

Geometry

Each NOTAM gets one geometry, chosen in this order; geometry_source tells which:

Order Source geometry_source Geometry
1 Area (surface) in the AIXM data aixm Polygon / MultiPolygon
2a NOTAM: coordinate list in item E (the longest run of at least 3 consecutive coordinates, DDMMSS[.s]N DDDMMSS[.s]E, hemisphere letters required) text Polygon
2b ASHTAM: volcano position / ash cloud extent ashtam Point / Polygon
3 Q-line position and radius qline Circle (Polygon)
3 Q-line position when the radius is 999, missing, or covers the whole FIR qline_center Point
4 Point in the AIXM data (e.g. aerodrome reference point) aixm_point Point

A NOTAM appears in a bbox query when its whole geometry, not only its centre, overlaps the box.

Circle description in item E

qline, qline_center and aixm_point mark a position derived from the Q-line or the AIXM data. They are treated as a defined area only when item E describes a circle. Item E counts as a circle description when it contains:

  • a centre keyword: CENTRE, CENTRED, CENTER, CENTERED or MERKEZ…, and
  • a radius keyword: RADIUS or YARICAP…, at most 300 characters from the centre keyword, and
  • at least one coordinate with hemisphere letters (DDMM[SS]N DDDMM[SS]E).

The circle drawn is always the Q-line circle; the centre and radius are not read from item E. If item E is empty in the AIXM data, the item E part of the ICAO text is checked.

Preferred NOTAMs (preferredOnly)

A NOTAM is preferred when its geometry can be trusted to show the affected area:

geometry_source Preferred
aixm, text, ashtam Always
qline, qline_center, aixm_point Only when item E describes a circle (see above)

/geojson?preferredOnly=1 returns only preferred NOTAMs. Without it, all NOTAMs with a geometry are returned, including those placed only by their Q-line circle (often a large circle around the FIR or aerodrome) or by the aerodrome reference point.

Recommendation: in a map, request preferredOnly=1 by default and offer a switch to show all NOTAMs. This keeps the map readable and shows the NOTAMs whose area is known. The ibonav.aero Interactive Map works this way: Show only preferred is on by default and can be turned off.

Response

/search

{"total": 128, "count": 128, "limit": 500, "offset": 0, "notams": ["…card…"]}

A card:

Field Description
id Unique record ID
number, type, series NOTAM number, N/R/C, series
classification, type_group Classification, and its group: INTL, MIL, US or Other
message_type NOTAM, SNOWTAM, ASHTAM, Other
fir, ad, airport_name, atfn Affected FIR, aerodrome, aerodrome name, account ID
qualifier q_code, q23, q45, q23_desc, q45_desc, subject (section – subject), condition, tag and color (for display); context = subject (kept for compatibility)
traffic, scope, purpose Decoded letters [{code, label}]
valid_from, valid_to, permanent, estimated Validity (UTC); permanent = PERM; estimated = EST
lower_limit, upper_limit Items F and G as given (GND, SFC, UNL, value and unit)
min_fl, max_fl Q-line lower and upper limits
schedule, schedule_display Item D as given, and a readable form (0600-1400 → 06:00–14:00 UTC, SR → Sunrise, H24 → H24 (all day) …)
message, icao_text, local_text NOTAM text: full, ICAO format, local format
geometry_source See Geometry

/geojson

{"type": "FeatureCollection", "features": ["…"], "truncated": false, "max_features": 5000}

Feature properties (short values only): id, number, fir, message_type, topic, q_code, q_23, q_45, q_tag, q_color, traffic, purpose, scope, lowerLimit, upperLimit, validFrom, validTo, permanent, estimated. Get the full record with /notam/{id}.

/{id}

The card above plus raw_aixm (the AIXM 5.1 XML).

/latest-snapshot

{"snapshot": "…", "last_fetched": "2026-10-17T08:12:04Z"}

snapshot changes whenever the data changes; reload the map layer only then.

/available

{"total": 412345, "active": 398765, "snapshot": "…", "last_fetched": "…",
 "last_full_load_at": "…", "last_delta_at": "…", "delta_interval_minutes": 4, "last_error": null}

/notam-code

{"code23": "MX", "code45": "LT", "subject": {"signification": "Taxiway(s) (specify)", "…": "…"}, "condition": {"signification": "Limited to", "…": "…"}}

subject / condition are null for unknown codes.

/notam-code/subjects, /notam-code/conditions

{"count": 181, "subjects": [{"code": "MX", "signification": "Taxiway(s) (specify)", "section1_code": "AGA", "section1_name": "Aerodromes", "section2_code": "M", "section2_name": "Movement and landing area"}]}

/conditions returns conditions with code, signification, section1_code, section1_name.

/series-description, /series-descriptions

{"count": 1, "descriptions": [{"fir_pattern": "LTxx", "series": "A", "description": "…", "ref": "…"}]}

fir_pattern uses x for any letter (EGxx = all FIRs starting with EG; xxxx = everywhere). A FIR + series can have more than one description: several sources for the same pattern, and the xxxx entries, which match every FIR.

/series-description returns all matching descriptions as a list, in this order: country patterns first, xxxx last; within a pattern, in list order. An empty list means none:

[{"fir_pattern": "NZxx", "series": "T", "description": "NOF ID: NZCH - Use: International - Remark: …", "ref": "…"},
 {"fir_pattern": "xxxx", "series": "T", "description": "Excluded letter in NOTAM series identification.", "ref": "…"}]

description is plain text and can have several lines (\n):

  • From EUROCONTROL EAD INO, one line per NOF that uses the series: NOF ID: EGGN - Use: International - Remark: …. Use is International, National and/or Military; Remark is present only when the source has one.
  • From an AIP GEN 3.1 section, the text as published (it may be in more than one language).

ref is the source of the description. Show the lines as they are (e.g. CSS white-space: pre-line).

Errors

Code Meaning
400 /search without any location, account, number, ID or bbox
404 NOTAM not found (/{id})
429 Too many requests from this IP; wait and retry
503 The service is starting up; retry shortly