NTSB investigations
35,889 cases where the phase of flight was Enroute.
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.\"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."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 MIA79FKG06Accident · No injuriesClosedCessna 150 · Madison, GANTSB CHI79DET01Accident · No injuriesClosedCessna 150 · Peru, INNTSB NYC79DFA01Accident · Minor injuriesClosedBellanca 7ACA · Tupper Lake, NYNTSB DEN79FTE01Accident · No injuriesClosedPiper PA-22 · Olney Springs, CONTSB MIA79FKG04Accident · No injuriesClosedCessna 337G · Chamblee, GANTSB IAD79FIA02Accident · Serious injuriesClosedPiper PA-28R · Morganza, MDNTSB CHI79FEE04Accident · No injuriesClosedErco 415-D · Savanna, ILNTSB LAX79FUJ02Accident · No injuriesClosedVarga 2150 · Chandler, AZNTSB LAX79DUG01Accident · No injuriesClosedAmateur 700XP · Lake Matthews, CANTSB FTW79DRJ03Accident · No injuriesClosedWeatherly 201C · Columbia, LANTSB ANC79DAG13Accident · Minor injuriesClosedPiper PA-12 · Willow, AKNTSB FTW79FRJ01Accident · Serious injuriesClosedPiper PA-24 · Longview, TXNTSB NYC79FA004Accident · 2 fatalClosedEnstrom F-28A · Bakertown, PANTSB IAD79FA004Accident · Minor injuriesClosedPiper PA-32R · White Gate, VANTSB OAK79DA001Accident · 1 fatalClosedCessna 182 · Monterey, CANTSB CHI79FEP03Accident · No injuriesClosedBeech V-35A · Richland Cntr, WINTSB OAK79FJA01Accident · Minor injuriesClosedBell 206L · Waimea Cnyn, HINTSB MKC79FCJ01Accident · Minor injuriesClosedPiper PA-22 · Merriman, NENTSB CHI79FEV01Accident · No injuriesClosedPiper PA-36 · Metropolis, ILNTSB OAK79FVM02Accident · No injuriesClosedErco 415-C · King City, CANTSB IAD79DA007Accident · No injuriesClosedSchemp Hirt Cirrus · Cresaptown, MDNTSB CHI78FEM03Accident · No injuriesClosedHiller UH12A · Muskegon, MINTSB ANC79FA002Accident · 2 fatalClosedBell 205A-1 · Kenai, AKNTSB ANC79DAG22Accident · No injuriesClosedBellanca 7GCBC · Beluga, AKNTSB OAK79DVA02Accident · No injuriesClosedHughes 369D · Clovis, CANTSB MIA79FLA02Accident · Serious injuriesClosedCessna 310 · Tallahassee, FLNTSB LAX79FUJ03Accident · No injuriesClosedCessna 140 · Mesa, AZNTSB MKC79DCD01Accident · No injuriesClosedCessna 150 · Council Bluffs, IANTSB FTW79FRD01Accident · No injuriesClosedAerospatial SA 350 · Patoutville, LANTSB ANC79FA001Accident · 1 fatalClosedCessna 180H · Anchorage, AKNTSB MKC79FCQ01Accident · No injuriesClosedCessna 152 · Oakley, KSNTSB MIA79FLD01Accident · Serious injuriesClosedBeech B35 · Odessa, FLNTSB IAD79FA001Accident · 5 fatalClosedPiper PA-31P · Lexington, KYNTSB DEN79FQG01Accident · Serious injuriesClosedPiper PA-28 · Lovington, NMNTSB CHI79DA001Incident · No injuriesClosedConvair CV-600 · Cleveland, OHNTSB CHI78IA002Incident · No injuriesClosedCessna 421B · Mt Vernon, OHNTSB NYC79FFJ01Accident · Minor injuriesClosedCessna 182 · Jamestown, NYNTSB FTW79FPG01Accident · Serious injuriesClosedCessna TU206 · Kirby, ARNTSB OAK78FVM01Accident · Serious injuriesClosedCessna 150 · Watsonville, CANTSB NYC79FHD01Accident · Serious injuriesClosedBeech 35 · Wrightstown, NJNTSB NYC79DNC01Accident · No injuriesClosedCessna 150 · Lowell, VTNTSB IAD79FA018Accident · 1 fatalClosedCessna 152 · Linden, TNNTSB FTW79DQG01Accident · No injuriesClosedMooney M20D · Borger, TXNTSB DEN79FA001Accident · 1 fatalClosedSikorsky S58ET · Steamboat Spgs, CONTSB CHI79FCA01Accident · 2 fatalClosedReplica 1 · Pierron, ILNTSB IAD78DKM27Accident · Minor injuriesClosedPiper PA-28 · Mt Mitchell, NCNTSB SEA78FYP54Accident · Minor injuriesClosedCessna 150 · Coeur D'Alene, IDNTSB MIA78DLD80Accident · No injuriesClosedCessna 172 · Chiefland, FLNTSB NYC79FFJ40Accident · 1 fatalClosedVarieze CN-VEZ · Angola, NYNTSB MIA78DLA52Accident · No injuriesClosedFairchild KR-21 · St.Augustine, FL