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 MIA81FA124Accident · 2 fatalClosedPiper PA-23 · Daytona Beach, FLNTSB DEN81FTG21Accident · No injuriesClosedCessna 150 · Lidgerwood, NDNTSB DEN81FTE73Accident · No injuriesClosedPiper PA-24 · Parker, CONTSB FTW81FRG67Accident · No injuriesClosedPiper PA-38 · Gillette, TXNTSB ANC81DAG95Accident · Minor injuriesClosedCessna 150 · Seward, AKNTSB LAX81FA133Accident · 1 fatalClosedCessna 152 · Carlsbad, CANTSB LAX81DUK08Accident · Minor injuriesClosedCessna 177 · Winslow, AZNTSB ATL81FIA11Accident · Serious injuriesClosedBede BD-5B · Brandy Station, VANTSB FTW81DQD35Accident · Minor injuriesClosedGrum Amer AA-1B · Weed, NMNTSB MIA81FA123Accident · 1 fatalClosedBeech M35 · Lake Worth, FLNTSB CHI81FER71Accident · No injuriesClosedPiper PA-28 · Edgerton, MNNTSB MIA81FA122Accident · 2 fatalClosedCessna 150G · Ponce De Leon, FLNTSB LAX81FUA15Accident · Minor injuriesClosedCessna 150L · Fullerton, CANTSB LAX81FA129Accident · 1 fatalClosedRyan Navion · Firebaugh, CANTSB DEN81FTI20Accident · Serious injuriesClosedBeech 23 · Deer Lodge, MTNTSB DCA81AA027Accident · No injuriesClosedLockheed L-1011 · Colts Neck, NJNTSB MIA81FKU04Accident · No injuriesClosedPiper PA-31 · Miami, FLNTSB ANC81DAG88Accident · Minor injuriesClosedCessna U206B · Gakona, AKNTSB MKC81FA054Accident · No injuriesClosedAerospatle AS350D · Iowa City, IANTSB DCA81AA026Accident · 1 fatalClosedDouglas DC-10 · N Atlantic Ocean (Atlantic Ocean)NTSB CHI81FEK30Accident · Minor injuriesClosedBellanca 17-30A · Newark, OHNTSB ANC81DA115Accident · 2 fatalClosedAeronca 11AC · Haines, AKNTSB NYC81FHA23Accident · No injuriesClosedCessna 177 · Stillwater, NJNTSB MIA81DKT97Accident · No injuriesClosedCessna 414A · Homestead, FLNTSB CHI81FEG16Accident · Minor injuriesClosedBellanca 7ECA · Cedarville, OHNTSB MIA81DKA08Accident · No injuriesClosedCessna 310 · Culebra, PRNTSB MIA81DA119Accident · 1 fatalClosedPiper PA-23 · Cuba (Atlantic Ocean)NTSB LAX81FXQ36Accident · 1 fatalClosedLa Lee W-18 · Reno, NVNTSB LAX81FVD44Accident · Minor injuriesClosedCessna 152 · Richmond, CANTSB LAX81DUG51Accident · Serious injuriesClosedPiper PA-28 · Mt Baldy, CANTSB FTW81FPA22Accident · Minor injuriesClosedCessna 177 · Sulphur Spgs, TXNTSB ANC81DA114Accident · 5 fatalClosedBeech B50 · Cape Yakataga, AKNTSB NYC81FNE31Accident · No injuriesClosedErco 415-D · Danbury, CTNTSB NYC81FFA25Accident · Serious injuriesClosedBellanca 7GCBC · Ancramdale, NYNTSB MIA81DLA34Accident · Minor injuriesClosedPiper PA-22 · High Springs, FLNTSB CHI81FET14Accident · 1 fatalClosedPDQ 2D · Goshen, INNTSB CHI81DEP47Accident · No injuriesClosedBensen B-8M · Manitowoc, WINTSB LAX81FVM29Accident · Serious injuriesClosedBell 206B · Nipomo, CANTSB FTW81DQD34Accident · No injuriesClosedBensen B8M · Carlsbad, NMNTSB ATL81FID21Accident · No injuriesClosedBell 47G-2A · Charles City, VANTSB ATL81FA114Accident · 2 fatalClosedHughes 269C · Falls Mill, WVNTSB ATL81DA113Incident · No injuriesClosedBoeing 727 · Birmingham, ALNTSB FTW81FRA57Accident · Minor injuriesClosedCessna 150 · Tomball, TXNTSB LAX81FUM19Accident · Serious injuriesClosedCessna 180 · El Cajon, CANTSB NYC81FA081Accident · 1 fatalClosedPiper PA-28R · Randolph, NJNTSB NYC81FA082Accident · 2 fatalClosedGulf Amer AA-1B · Richmond, NHNTSB MIA81DLD63Accident · Minor injuriesClosedAero Comdr 100 · Ft Pierce, FLNTSB LAX81FVM28Accident · Serious injuriesClosedPiper PA-44 · San Jose, CANTSB LAX81DUG48Accident · Minor injuriesClosedCessna 150 · Daggett, CANTSB FTW81DRG64Accident · No injuriesClosedCessna T210L · Austin, TX