NTSB investigations, Outside the U.S.
596 cases where the phase of flight was Approach.
Cases, newest first
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 = 500)
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 = 500)
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 DCA25WA202IncidentClass 5 · ForeignBoeing 737-8 Max · Warsaw, PolandNTSB GAA25WA133Accident · 1 fatalClass 4 · ForeignPiper PA32 · Rondonopolis, BrazilNTSB GAA25WA135Accident · No injuriesClass 5 · ForeignCessna 150 · 9 de Julio, ArgentinaNTSB GAA25WA131Accident · No injuriesClass 5 · ForeignCozy MK IV · Gloucester, United KingdomNTSB DCA25WA165OccurrenceClass 5 · ForeignEmbraer 190 · The Granites, AustraliaNTSB GAA25WA100Accident · No injuriesClass 5 · ForeignGrumman AA5 · Zell am See, AustriaNTSB GAA25WA121Accident · No injuriesClass 5 · ForeignPiper PA46 · Aarhus, DenmarkNTSB DCA25WA157Occurrence · No injuriesClass 5 · ForeignEmbraer ERJ190 · Eaton, AustraliaNTSB DCA25WA153IncidentClass 5 · ForeignEmbraer 190LR · Olympic Dam, AustraliaNTSB DCA25WA122Occurrence · No injuriesClass 5 · ForeignEmbraer ERJ190 · Olympic Dam, AustraliaNTSB GAA25WA076AccidentClass 5 · ForeignRobinson R22 · Workingham, Berkshire, United KingdomNTSB GAA25WA142Accident · Serious injuriesClass 3 · ForeignPilatus PC6 · Maripasoula, French GuianaNTSB GAA25WA069Accident · 2 fatalClass 5 · ForeignPiper PA18 · Les Allues, FranceNTSB GAA25WA063Accident · No injuriesClass 5 · ForeignCirrus SR22 · state of Rio Grande do Sul, RS, BrazilNTSB GAA25WA046Accident · Minor injuriesClass 5 · ForeignPiper PA28 · Émerainville, FranceNTSB DCA25WA049IncidentClass 5 · ForeignAirbus A320-214 · Bogota, ColombiaNTSB GAA25WA027Accident · Serious injuriesClass 5 · ForeignPiper PA-23-250 · Freeport, BahamasNTSB DCA25WA031Accident · No injuriesClass 3 · ForeignBoeing 737 · Sao Paulo, BrazilNTSB GAA25WA016Accident · Serious injuriesClass 4 · ForeignCessna 340A · Saint-Denis-de-l'Hôtel, FranceNTSB GAA25WA015Accident · 8 fatalClass 5 · ForeignSikorsky S76 · Port Harcourt, NigeriaNTSB GAA24WA285Accident · 2 fatalClass 4 · ForeignPiper PA-23-250 · Nassau, BahamasNTSB GAA24WA284Accident · Minor injuriesClass 4 · ForeignCessna 182 · Mitu, ColombiaNTSB GAA25WA020IncidentClass 5 · ForeignCessna U206F · Moora, AustraliaNTSB DCA24WA334IncidentClass 5 · ForeignBoeing 757-224 · Brussels, BelgiumNTSB DCA24WA261IncidentClass 5 · ForeignBoeing 737 · Helsinki, FinlandNTSB DCA24WA333Incident · No injuriesClass 3 · ForeignATR ATR72 · Bhubaneswar, IndiaNTSB GAA24WA245Accident · 2 fatalClass 5 · ForeignLearjet 35 · Matupa, BrazilNTSB GAA24WA225AccidentClass 5 · ForeignBriten-Norman BN2A-20 · Bouffa, VanuatuNTSB GAA24WA222Accident · No injuriesClass 5 · ForeignCessna P206 · Cozumel, MexicoNTSB GAA24WA212Accident · No injuriesClass 5 · ForeignPiper PA23 · Norman's Cay, BahamasNTSB GAA24WA308Accident · No injuriesClass 5 · ForeignPiper PA28 · Leeds, United KingdomNTSB DCA24WA222Incident · No injuriesClass 5 · ForeignBoeing 737 · Minabe, JapanNTSB ENG24WA023Accident · 1 fatalClass 5 · ForeignCessna 208B · Spa, Belgium, BelgiumNTSB ENG24WA029IncidentClass 3 · ForeignBAE Jetstream 3100 · Santo António, São Tomé & PríncipeNTSB DCA24WA207Incident · No injuriesClass 5 · ForeignBoeing 727 · Cardiff, United KingdomNTSB GAA24WA179Accident · 2 fatalClass 5 · ForeignPiper PA-34-200T · Santa Rosa, EcuadorNTSB DCA24WA184IncidentClass 5 · ForeignEmbraer ERJ190 · Brisbane Airport, AustraliaNTSB DCA24WA225IncidentClass 5 · ForeignBoeing 737-823 · Ladyville, BelizeNTSB GAA24WA154Accident · 2 fatalClass 5 · ForeignCessna 340 · Puerto Cabelio, VenezuelaNTSB GAA24WA150Accident · Minor injuriesClass 5 · ForeignCessna 208 · Gap-tallard, FranceNTSB DCA24WA292IncidentClass 5 · ForeignDornier 328 · Zurich, SwitzerlandNTSB DCA24WA214OccurrenceClass 5 · ForeignBoeing 737 · London, United KingdomNTSB DCA24WA177Incident · No injuriesClass 5 · ForeignBoeing 737 · Miho, JapanNTSB GAA24WA127Accident · Minor injuriesClass 5 · ForeignRobinson Helicopter 22 · Candoi, BrazilNTSB GAA24WA129Accident · Minor injuriesClass 5 · ForeignPiper PA28 · Genk/Zwartberg, BelgiumNTSB GAA24WA109Accident · Serious injuriesClass 5 · ForeignCessna 206 · Macas, EcuadorNTSB DCA24WA216OccurrenceClass 5 · ForeignBoeing 737 · London, United KingdomNTSB GAA24WA115Accident · No injuriesClass 4 · ForeignCessna 172S · Guna, IndiaNTSB DCA24WA102Accident · Serious injuriesClass 5 · ForeignBoeing 767-332 · Bogotá, ColombiaNTSB GAA24WA131Accident · 9 fatalClass 5 · ForeignBeech E90 · Lote Ocho, Mexico