NTSB investigations, Outside the U.S.
1,170 cases where the phase of flight was Landing.
Cases per year
| 1962 | 1 |
|---|---|
| 1963 | 1 |
| 1964 | 38 |
| 1965 | 37 |
| 1966 | 40 |
| 1967 | 35 |
| 1968 | 24 |
| 1969 | 20 |
| 1970 | 21 |
| 1971 | 18 |
| 1972 | 26 |
| 1973 | 18 |
| 1974 | 22 |
| 1975 | 18 |
| 1976 | 4 |
| 1977 | 6 |
| 1978 | 12 |
| 1979 | 4 |
| 1980 | 2 |
| 1982 | 1 |
| 1991 | 1 |
| 1993 | 1 |
| 1994 | 1 |
| 1996 | 1 |
| 1997 | 4 |
| 1999 | 1 |
| 2000 | 1 |
| 2008 | 1 |
| 2009 | 10 |
| 2010 | 21 |
| 2011 | 23 |
| 2012 | 27 |
| 2013 | 22 |
| 2014 | 21 |
| 2015 | 34 |
| 2016 | 55 |
| 2017 | 51 |
| 2018 | 60 |
| 2019 | 39 |
| 2020 | 48 |
| 2021 | 72 |
| 2022 | 75 |
| 2023 | 83 |
| 2024 | 83 |
| 2025 | 63 |
| 2026 | 24 |
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 = 550)
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 = 550)
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 DCA27WA023Incident · No injuriesClass 5 · ForeignBoeing 737 · Birmingham, United KingdomNTSB DCA27WA012Incident · No injuriesClass 5 · ForeignAirbus A320 · Townsville, AustraliaNTSB DCA26WA369IncidentClass 5 · ForeignBoeing 737 · Aeropuerto de Lanzarote, SpainNTSB DCA26WA363Accident · No injuriesClass 5 · ForeignBoeing 737 · Kindu, Congo - KinshasaNTSB DCA26WA362Incident · No injuriesClass 5 · ForeignBoeing 737 · Tiouilit, MauritaniaNTSB GAA26WA321Accident · No injuriesClass 5 · ForeignTextron C680A · Misrata, LibyaNTSB DCA26WA355Accident · No injuriesClass 3 · ForeignBoeing 767-338 · Guatemala City, GuatemalaNTSB DCA26WA291OccurrenceClass 5 · ForeignBoeing 737 · Mascot, AustraliaNTSB DCA26WA336Incident · No injuriesClass 5 · ForeignBoeing 737 · Kuching, MalaysiaNTSB DCA26WA309Incident · No injuriesClass 5 · ForeignAirbus A320 · Balmaceda, ChileNTSB DCA26WA262Incident · No injuriesClass 4 · ForeignBoeing 737 · Bogotá, ColombiaNTSB DCA26WA248Incident · No injuriesClass 5 · ForeignBoeing 747 · Birmingham, United KingdomNTSB DCA26WA235IncidentClass 5 · ForeignAirbus A321 · Horley, United KingdomNTSB GAA26WA289Accident · No injuriesClass 4 · ForeignBeech B200 · Rio de Janeiro, BrazilNTSB GAA26WA287Incident · No injuriesClass 5 · ForeignCessna 182 · San Antonio, ColombiaNTSB GAA26WA247Accident · No injuriesClass 5 · ForeignPiper PA28 · Roszczep, PolandNTSB DCA26WA198Incident · No injuriesClass 5 · ForeignBoeing 737 · Salvador, BrazilNTSB GAA26WA175Accident · No injuriesClass 5 · ForeignCessna 140 · Región de Antofagasta, ChileNTSB GAA26WA291Accident · No injuriesClass 5 · ForeignPiper PA32R · Nakuru, KenyaNTSB GAA26WA141Accident · No injuriesClass 5 · ForeignEmbraer EMB-145XR · Les Cayes, HaitiNTSB DCA26WA156Accident · No injuriesClass 5 · ForeignBoeing 737 · Phuket, ThailandNTSB GAA26WA104Accident · No injuriesClass 5 · ForeignCessna 510 · Barretos City, BrazilNTSB DCA26WA160Accident · No injuriesClass 5 · ForeignATR ATR42 · Simberi, Papua New GuineaNTSB GAA26WA071Accident · No injuriesClass 5 · ForeignCessna 208 · Nuwara Eliya, Sri LankaNTSB GAA26WA081AccidentClass 5 · ForeignGulfstream G-VSP · Bibi, JapanNTSB GAA26WA069Accident · No injuriesClass 5 · ForeignCessna A188 · Boca de Mao, Dominican RepublicNTSB DCA26WA051Incident · No injuriesClass 5 · ForeignBAE BAE146 · Región de Magallanes y de la Antártica Chilena, ChileNTSB GAA26WA040Accident · No injuriesClass 4 · ForeignBoeing DC3C-S1C3G · Rio Grande, ArgentinaNTSB GAA26WA034Accident · 1 fatalClass 5 · ForeignVans RV7 · New South Wales, AustraliaNTSB DCA26WA052Incident · No injuriesClass 5 · ForeignAirbus A320 · El Aaroui (Nador), MoroccoNTSB DCA26WA045Incident · No injuriesClass 5 · ForeignBoeing 737 · Kuantan, MalaysiaNTSB DCA26WA046IncidentClass 5 · ForeignGeneral Atomics MQ9 · Kitakyushu, JapanNTSB ENG26WA009Accident · No injuriesClass 5 · ForeignEmbraer EMB145 · Kolwezi, Congo - KinshasaNTSB DCA26WA079Accident · No injuriesClass 5 · ForeignBoeing 737 · Val-D'Or, CanadaNTSB GAA26WA028Accident · No injuriesClass 5 · ForeignPiper PA28 · Cambridgeshire, United KingdomNTSB DCA26WA031Incident · No injuriesClass 5 · ForeignBoeing 747 · N'Djamena, ChadNTSB GAA26WA029Accident · No injuriesClass 5 · ForeignPiper PA46 · Santa Cruz, BoliviaNTSB DCA26WA044Incident · No injuriesClass 5 · ForeignBoeing 737 · Riyadh, Saudi ArabiaNTSB DCA26WA017Accident · 2 fatalClass 3 · ForeignBoeing 747 · Hong Kong, Hong Kong SAR ChinaNTSB GAA25WA265Accident · 1 fatalClass 5 · ForeignPiper PA18 · Cham, SwitzerlandNTSB GAA25WA273Accident · No injuriesClass 5 · ForeignBeech A45 · Guatemala City, GuatemalaNTSB DCA25WA328Incident · No injuriesClass 5 · ForeignBoeing 737 · Krakow, PolandNTSB DCA25WA338IncidentClass 5 · ForeignBoeing 737 · Lipjan, KosovoNTSB GAA25WA253AccidentClass 5 · ForeignThrush S2R · Castellón, SpainNTSB DCA25WA320AccidentClass 3 · ForeignBoeing 737 · Simpson Bay, Sint MaartenNTSB DCA25WA319Incident · No injuriesClass 5 · ForeignBoeing 737 · Munster, GermanyNTSB DCA25WA299IncidentClass 5 · ForeignBoeing 737 · Bickenhill, United KingdomNTSB GAA25WA241Accident · No injuriesClass 5 · ForeignMooney M20M · Innsbruck, AustriaNTSB DCA25WA297Incident · No injuriesClass 5 · ForeignBoeing 747-8F · Taipei, TaiwanNTSB GAA25WA235AccidentClass 5 · ForeignRaytheon B36TC · Norwich, United Kingdom