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: showibonav.aerowherever this data is displayed
Data sources: FAA NOTAM Management Service.
Last updated: 21 OCT 2026About 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-snapshotand 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, withfirorad), or link to one record with itsid. - 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
/search
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,CENTEREDorMERKEZ…, and - a radius keyword:
RADIUSorYARICAP…, 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: ….UseisInternational,Nationaland/orMilitary;Remarkis 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 |