NTSB investigations, Outside the U.S.
1,772 cases where the phase of flight was Enroute.
Cases per year
| 1962 | 3 |
|---|---|
| 1963 | 2 |
| 1964 | 23 |
| 1965 | 21 |
| 1966 | 18 |
| 1967 | 26 |
| 1968 | 9 |
| 1969 | 22 |
| 1970 | 15 |
| 1971 | 11 |
| 1972 | 19 |
| 1973 | 16 |
| 1974 | 14 |
| 1975 | 19 |
| 1976 | 3 |
| 1977 | 8 |
| 1978 | 8 |
| 1979 | 4 |
| 1981 | 2 |
| 1982 | 3 |
| 1984 | 3 |
| 1986 | 1 |
| 1987 | 1 |
| 1988 | 6 |
| 1989 | 1 |
| 1990 | 1 |
| 1991 | 2 |
| 1994 | 1 |
| 1997 | 2 |
| 1998 | 1 |
| 2000 | 1 |
| 2002 | 2 |
| 2003 | 2 |
| 2004 | 1 |
| 2007 | 1 |
| 2008 | 10 |
| 2009 | 30 |
| 2010 | 31 |
| 2011 | 39 |
| 2012 | 53 |
| 2013 | 57 |
| 2014 | 51 |
| 2015 | 71 |
| 2016 | 89 |
| 2017 | 77 |
| 2018 | 100 |
| 2019 | 124 |
| 2020 | 71 |
| 2021 | 119 |
| 2022 | 105 |
| 2023 | 112 |
| 2024 | 152 |
| 2025 | 138 |
| 2026 | 71 |
Latest cases
Query with SQL
duckdb -csv -c "WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e.\"tier1Number\" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e.\"isDefiningEvent\", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e.\"tier1Number\" GLOB '[1-9][0-9]*'
AND (e.\"isDefiningEvent\" OR e.case_mkey IN (SELECT \"mKey\" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE \"isPre1982\"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o.\"phaseOfFlightCode\", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o.\"phaseOfFlightCode\"
WHERE o.aircrafts_position = 1 AND o.\"occurrenceNumber\" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c.\"eventDate\", c.\"highestInjuryLevel\" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c.\"eventDate\" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
SELECT c.\"ntsbNumber\", c.\"eventDate\", c.\"eventType\", c.\"eventCity\", c.\"eventStateOrRegion\", a.n_number, a.\"aircraftMake\", a.\"aircraftModel\", c.\"highestInjuryLevel\", c.\"totalFatal\", c.\"completionStatus\", c.report_url
FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c.\"mKey\" AND a.position = 1
WHERE c.\"eventCountry\" <> 'USA'
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
ORDER BY c.\"eventDate\" DESC, c.\"ntsbNumber\" DESC"Prints the whole list as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.
WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e."tier1Number" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e."isDefiningEvent", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e."tier1Number" GLOB '[1-9][0-9]*'
AND (e."isDefiningEvent" OR e.case_mkey IN (SELECT "mKey" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE "isPre1982"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o."phaseOfFlightCode", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o."phaseOfFlightCode"
WHERE o.aircrafts_position = 1 AND o."occurrenceNumber" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c."eventDate", c."highestInjuryLevel" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c."mKey" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c."eventDate" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
SELECT c."ntsbNumber", c."eventDate", c."eventType", c."eventCity", c."eventStateOrRegion", a.n_number, a."aircraftMake", a."aircraftModel", c."highestInjuryLevel", c."totalFatal", c."completionStatus", c.report_url
FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c."mKey" AND a.position = 1
WHERE c."eventCountry" <> 'USA'
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
ORDER BY c."eventDate" DESC, c."ntsbNumber" DESCRun it at the DuckDB prompt, or in any tool that reads Parquet over HTTPS. More ways to query the release are on Use the data.
NTSB GAA27WA017Accident · No injuriesClass 5 · ForeignTecnam P-Mentor · North Cat Cay, BahamasNTSB DCA27WA018Incident · No injuriesClass 5 · ForeignBoeing 767 · Chalhuanca, PeruNTSB DCA27WA009Incident · No injuriesClass 5 · ForeignAirbus A320-214 · Kingston, JamaicaNTSB DCA26WA368Incident · Minor injuriesClass 5 · ForeignBoeing 737 · Tabuk, Saudi ArabiaNTSB ENG26WA042Incident · No injuriesClass 5 · ForeignBoeing 737 · Naha, JapanNTSB ENG26WA045Incident · No injuriesClass 5 · ForeignAirbus A321 · Mérida, MexicoNTSB GAA26WA323Incident · No injuriesClass 5 · ForeignBAE Jetstream 3100 · Maiquetía, VenezuelaNTSB DCA26WA375IncidentClass 5 · ForeignBoeing 777 · Schiphol, NetherlandsNTSB DCA26WA371Incident · No injuriesClass 5 · ForeignBoeing 787 · Pacific Ocean, VietnamNTSB DCA26WA365Incident · No injuriesClass 5 · ForeignBoeing 737 · Comalapa, El SalvadorNTSB GAA26WA315Accident · No injuriesClass 5 · ForeignPiper PA32RT · Pulcallpa, PeruNTSB ENG26WA043Incident · No injuriesClass 5 · ForeignAirbus A321-271N · Parque Industrial Mazatlán, MexicoNTSB DCA26WA353AccidentClass 5 · ForeignDouglas DC8 · Kinshasa, Congo - KinshasaNTSB DCA26WA376IncidentClass 5 · ForeignBoeing 737 · La Chinita, VenezuelaNTSB ENG27WA003IncidentForeign investigationAirbus A330 · Sainte-Marie, RéunionNTSB DCA26WA349Incident · No injuriesClass 5 · ForeignBoeing 747 · Sharjah, United Arab EmiratesNTSB DCA26WA338Accident · Serious injuriesClass 5 · ForeignBoeing 737 · Hongseong, South KoreaNTSB GAA26WA285Accident · 7 fatalClass 5 · ForeignEurocopter EC130 · Ewaso Nyiro, KenyaNTSB DCA26WA334Incident · No injuriesClass 5 · ForeignAirbus A330 · Lubumbashi, Congo - KinshasaNTSB DCA26WA337Incident · No injuriesClass 5 · ForeignBoeing 737 · El Prat de Llobregat, SpainNTSB DCA26WA331IncidentClass 5 · ForeignAirbus A321 · Royal National Park, AustraliaNTSB DCA26WA341IncidentClass 5 · ForeignBoeing 747 · Changzhi, ChinaNTSB DCA26WA328Accident · Serious injuriesClass 5 · ForeignBoeing 737 · Higashiizu, JapanNTSB ENG26WA031Incident · No injuriesClass 5 · ForeignAirbus A321 · Hermosillo, MexicoNTSB DCA26WA280Incident · No injuriesClass 5 · ForeignBoeing 767 · Manta, EcuadorNTSB DCA26WA297IncidentClass 5 · ForeignBoeing 737 · Barcelona, SpainNTSB GAA26WA249Accident · 10 fatalClass 3 · ForeignCessna 402C · Nicholls Town, BahamasNTSB DCA26WA284IncidentClass 5 · ForeignAirbus A321 · San Andrés, SpainNTSB DCA26FA274Accident · Serious injuriesClass 3 · FieldPreliminary reportBoeing 737 · Polykastro, GreeceMalta Air, doing business as Ryanair flight 1879, a Boeing 737-8AS, registration 9H-QEU, experienced a No. 2 (right) engine fan-blade-out (FBO) failure during climb out from the Thessaloniki International Airport (SKG), Thessaloniki, Greece. Engine fragments…NTSB DCA26WA276IncidentClass 5 · ForeignBoeing 767 · enroute, FranceNTSB DCA26WA267Accident · No injuriesClass 3 · ForeignBoeing 737 · Arabian Sea, PakistanNTSB DCA26WA268Accident · Serious injuriesClass 5 · ForeignBoeing 737 · Catania, ItalyNTSB DCA26WA254Incident · No injuriesClass 5 · ForeignBoeing 787 · Ar Rumays, OmanNTSB DCA26WA241Occurrence · No injuriesClass 5 · ForeignBoeing 787-9 · Singapore, SingaporeNTSB GAA26WA221Accident · No injuriesClass 5 · ForeignPiper PA24 · General Roca, ArgentinaNTSB DCA26WA234Incident · No injuriesClass 5 · ForeignEmbraer ERJ190 · Connellan, AustraliaNTSB GAA26WA214Accident · No injuriesClass 5 · ForeignBeech 200 · Vitoria, BrazilNTSB ENG26WA024Incident · No injuriesClass 5 · ForeignGulfstream Aerospace G-IV · Dushanbe, TajikistanNTSB DCA26WA238IncidentClass 5 · ForeignBoeing 737 · Sidi Errabia, AlgeriaNTSB DCA26WA221OccurrenceClass 5 · ForeignAirbus A321 · Stuarts Creek, AustraliaNTSB GAA26WA211Accident · No injuriesClass 5 · ForeignNew Glasair Glasair Super II · Aquidauana, BrazilNTSB DCA26WA216IncidentClass 5 · ForeignBoeing 737-8 · Liberia, Costa RicaNTSB DCA26WA233Incident · No injuriesClass 5 · ForeignBoeing 737 · Gwaska, NigeriaNTSB GAA26WA298Accident · No injuriesClass 5 · ForeignScheibe SF25 · Speyer, GermanyNTSB DCA26WA228Incident · No injuriesClass 5 · ForeignBombardier CL600 2E25 · Manises, SpainNTSB DCA26WA192IncidentClass 5 · ForeignBoeing 777 · London, United KingdomNTSB GAA26WA169Accident · No injuriesClass 5 · ForeignCessna 207 · Trinidad-Beni, BoliviaNTSB DCA26WA177Accident · Serious injuriesClass 4 · ForeignAirbus A320-232 · Punta Cana, Dominican RepublicNTSB DCA26WA169Incident · No injuriesClass 5 · ForeignAirbus A350-941 · Antogafasta, ChileNTSB DCA26WA171Accident · Minor injuriesClass 5 · ForeignBoeing 737 · Reus, Spain