notams.coredoes.dev / api reference
!! NOT FOR OPERATIONAL USE !! data may be stale, incomplete, or wrong
notams.coredoes.dev is a free feed of international NOTAMs from the ICAO distribution network, noncommercial use only.
the point of this project is to make NOTAM data accessible without dealing with the red tape of getting access to government data feeds. i did that part and i'm redistributing the data for free, on the condition that your use is noncommercial.
new notams usually show up within ~30s. some get missed.
all read endpoints under /api/ require an api key, passed as the x-api-key header. keys are free, email notams@coredoes.dev.
if you'd rather have rows pushed to you than poll, that's available too. email notams@coredoes.dev.
authentication:
curl -H "x-api-key: nta_..." https://notams.coredoes.dev/api/notams
endpoints:
GET /api/health public service + intake snapshot GET /api/notams keyed list NOTAMs (filters below) GET /api/notams/:id keyed one NOTAM by CADS id GET /api/notams/by-number/:notam_number keyed all NOTAMs by ICAO number (array), e.g. A0906%2F26 GET /api/notams.geojson keyed FeatureCollection (same filters as /api/notams) GET /notams/:id public HTML detail page GET /notams/by-number/:notam_number public HTML selector when a number matches multiple records GET /notams/:id/aixm.xml public raw AIXM 5.1 XML GET /notams/:id/geojson public GeoJSON Feature (rows with coordinates)
list filters (all optional, combinable):
icao_location=KJFK substring/wildcard match against icao_location (use * as wildcard, e.g. OE*) status=NEW exact match: one of NEW / REPLACE / CANCELLED active=true true = NEW or REPLACE only; false = CANCELLED only q=runway substring/wildcard match against raw_text (same wildcard rules) from=2026-04-09T00:00:00Z lower bound on begin_position (ISO 8601, inclusive) to=2026-04-10T00:00:00Z upper bound on begin_position (ISO 8601, inclusive) limit=50 default 50, max 500 offset=0 for pagination
NotamDto fields:
id i32 CADS NOTAM ID (stable, integer); preferred stable identifier nms_id string CADS message ID; stable and unique, but use id where possible notam_number string? ICAO number, e.g. A0906/26; NOT unique, multiple records can share one status string? NEW / REPLACE / CANCELLED icao_location string? comma-joined ICAO location list raw_text string? upstream NOTAM text icao_text string? ICAO-formatted translation, HTML stripped correlation_id i64? CADS sequence ID latitude f64? decimal degrees longitude f64? decimal degrees radius_nm f64? affected radius, nautical miles has_raw_xml bool true if /notams/:id/aixm.xml will return XML begin_position string? gml:beginPosition, ISO 8601 validity start end_position string? gml:endPosition, ISO 8601 validity end (absent for PERM) replaces_notam_number string? NOTAM number superseded by this REPLACE or CANCEL
caveats:
- rebroadcast latency is ~30s normally, can stretch to a few minutes. - some NOTAMs get missed. gap detection kicks off a resync automatically. - coordinates come from the Q-line and may be missing or off. - not for operational use.
!! NOT FOR OPERATIONAL USE !! data may be stale, incomplete, or wrong
© 2026 coredoes.dev