NTSB investigations
14,038 cases where the phase of flight was Takeoff.
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 = 300)
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 = 300)
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 SEA75DTI20Accident · No injuriesClosedPiper PA-18 · Adel, MTNTSB NYC75FHJ26Accident · No injuriesClosedAeronca 11AC · Amityville, NYNTSB OAK75AP035Accident · Serious injuriesClosedBritish AC 1-11 · So Lake Tahoe, CANTSB DEN75DQA32Accident · No injuriesClosedHughes 269A · Gallup, NMNTSB FTW75FRG55Accident · No injuriesClosedBellanca 17-30A · Freer, TXNTSB NYC75FFA27Accident · Serious injuriesClosedPiper PA-28 · Wallkill, NYNTSB LAX75DUJ60Accident · No injuriesClosedAmer Avco AA5 · Quartzsite, AZNTSB CHI75FEV21Accident · No injuriesClosedCessna 172F · St Joseph, ILNTSB CHI75DEM26Accident · Serious injuriesClosedPiper J-3 · Midland, MINTSB MIA75FKG57Accident · No injuriesClosedCessna 150G · Folkston, GANTSB MIA75FLD50Accident · No injuriesClosedCessna 177B · Tarpon Springs, FLNTSB SEA75DYC25Accident · No injuriesClosedCessna 180 · Wamic, ORNTSB ANC75AA052Accident · No injuriesClosedCurtiss-Wrt C-46F · Arctic Village, AKNTSB NYC75AN081Accident · No injuriesClosedVolpar TC45J · Norwood, MANTSB NYC75FHA28Accident · No injuriesClosedEnstrom F-28A · New Hope, PANTSB MKC75FER40Accident · No injuriesClosedCessna 172M · Eden Prairie, MNNTSB IAD75FLT08Accident · No injuriesClosedLake LA4200 · Dyersburg, TNNTSB CHI75FEE42Accident · Minor injuriesClosedPiper PA-22 · Schaumburg, ILNTSB MKC75FCD32Accident · Minor injuriesClosedPiper PA-28 · Estherville, IANTSB MIA75FKT44Accident · Serious injuriesClosedEnstrom F28 · Ft Lauderdale, FLNTSB FTW75DRG50Accident · No injuriesClosedPiper PA-18 · Castroville, TXNTSB DEN75DTM10Accident · No injuriesClosedPiper PA-28 · Provo, UTNTSB FTW75FRD25Accident · No injuriesClosedBell 206B · Gulf Of Mexico (Gulf of Mexico)NTSB DEN75FTE45Accident · No injuriesClosedBell 206B · Granby, CONTSB MKC75DCQ27Accident · No injuriesClosedBeech C23 · Stafford, KSNTSB LAX75AL033Accident · Minor injuriesClosedDouglas DC-4B · Dvs-Mnthn Afb, AZNTSB CHI75FEP37Accident · No injuriesClosedAeronca 11AC · Waupaca, WINTSB SEA75DYI19Accident · No injuriesClosedCessna 177 · Sunriver, ORNTSB MKC75FCD29Accident · No injuriesClosedHughes 269A · Bettendorf, IANTSB MIA75OKT40Accident · No injuriesClosedAero Comdr 500 · Walker Cay, Burkina FasoNTSB LAX75FUJ51Accident · No injuriesClosedHelio Acft H-295 · Carefree, AZNTSB ANC75AA048Accident · No injuriesClosedSud Aviatn SA341G · Coldfoot, AKNTSB CHI75DEC29Accident · No injuriesClosedMcculloch J2 · Otisville, MINTSB ANC75DAG62Accident · No injuriesClosedCessna 120 · Kodiak, AKNTSB CHI75DEE35Accident · No injuriesClosedCessna 150 · Richton Park, ILNTSB MIA75FLA26Accident · No injuriesClosedPiper PA-24 · Jacksonville, FLNTSB DEN75FQA24Accident · Serious injuriesClosedBell 47G3B2 · Albuquerque, NMNTSB DEN75ATM08Accident · No injuriesClosedBell 47G-3B · Kamas, UTNTSB IAD75DLQ10Accident · No injuriesClosedCessna 150 · Paducah, KYNTSB DEN75AD030Accident · No injuriesClosedBeech 18 · Denver, CONTSB NYC75FNE22Accident · Serious injuriesClosedCessna 180 · New Milford, CTNTSB MIA75FLD46Accident · No injuriesClosedAero Comdr S2R · Ft Pierce, FLNTSB DEN75DTM07Accident · No injuriesClosedCessna 170B · Morgan, UTNTSB CHI75FEE40Accident · No injuriesClosedBellanca 8GCBC · Morris, ILNTSB ANC76FAA24Accident · Minor injuriesClosedMitsubishi MU-2J · Deadhorse, AKNTSB CHI75FEK15Accident · Serious injuriesClosedCessna 421B · Mt Vernon, OHNTSB OAK75DVG38Accident · No injuriesClosedChampion 7AC · Manton, CANTSB MIA75DKG49Accident · Minor injuriesClosedBell 205A1 · Homerville, GANTSB LAX75DUJ46Accident · No injuriesClosedBellanca 17-30 · Show Low, AZNTSB NYC75ON007Accident · Serious injuriesClosedBoeing 707 · Beirut, LE