NTSB investigations
14,041 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 MIA72FKG06Accident · No injuriesClosedAero Comdr 100 · Albany, GANTSB OAK72DVA02Accident · No injuriesClosedCessna 188 · Five Points, CANTSB CHI72FEE06Accident · No injuriesClosedBeech B35 · Hinsdale, ILNTSB CHI72DEI05Accident · Minor injuriesClosedCessna 150G · Luckey, OHNTSB LAX72FUA02Accident · No injuriesClosedBell 47J-2 · Hntngtn Bch, CANTSB FTW72FPG02Accident · Serious injuriesClosedBell 47G · Weiner, ARNTSB FTW72DPD02Accident · No injuriesClosedAmer Avco AA1 · Muenster, TXNTSB SEA72DYC05Accident · No injuriesClosedPiper J3C-65 · Beaverton, ORNTSB MKC72DER13Accident · No injuriesClosedCessna 170B · Tyler, MNNTSB MIA72DKG03Accident · No injuriesClosedCessna 170B · Lithonia, GANTSB FTW72FPA01Accident · Minor injuriesClosedCessna 182A · Garland, TXNTSB DEN72FQA02Accident · No injuriesClosedPiper PA-23 · Albuquerque, NMNTSB CHI72FEI01Accident · Serious injuriesClosedCessna 177 · Milan, OHNTSB IAD72FIG02Accident · Minor injuriesClosedHughes 269B · Bowie, MDNTSB MKC72DCQ03Accident · Minor injuriesClosedCassutt Sport · Newton, KSNTSB OAK71FXQ48Accident · No injuriesClosedChampion 7ECA · Truckee, CANTSB NYC71FNA57Accident · No injuriesClosedMooney M20F · Tewksbury, MANTSB FTW72DRG26Accident · No injuriesClosedCessna 185D · Pueblo Of Sf, MexicoNTSB ANC71IA064Incident · No injuriesClosedCessna 185 · Dillingham, AKNTSB OAK71AP056Accident · 17 fatalClosedDouglas DC-3 · Garberville, CANTSB NYC71FHA54Accident · Serious injuriesClosedCessna 337 · Avoca, PANTSB FTW71DRH34Accident · No injuriesClosedPiper PA-25 · Bartlett, TXNTSB ANC72DAG03Accident · No injuriesClosedPiper J3C-65 · Mcgrath, AKNTSB OAK71DVD53Accident · No injuriesClosedConvair PBY-6A · Santa Rosa, CANTSB MKC71FTG34Accident · No injuriesClosedPiper PA-18 · Langdon, NDNTSB DEN71DTC05Accident · No injuriesClosedCessna 175 · Sheridan, WYNTSB LAX72DUG05Accident · No injuriesClosedPiper PA-28 · Apple Vally, CANTSB IAD71FKM40Accident · No injuriesClosedCessna 411A · Greensboro, NCNTSB CHI71IC092Incident · No injuriesClosedDouglas DC-9 · Indianapolis, INNTSB MIA71FLT18Accident · No injuriesClosedBellanca 17-30 · New Albany, MSNTSB FTW71AF084Accident · No injuriesClosedAero Comdr 500B · Crossett, ARNTSB OAK71DVA94Accident · No injuriesClosedStinson 108-1 · Lone Pine, CANTSB IAD71FIG32Accident · No injuriesClosedBeech 35 · Golts, MDNTSB FTW71FRJ39Accident · Minor injuriesClosedCessna 206 · Ruston, LANTSB DCA71RZ007Accident · No injuriesClosedBoeing 747 · Tokyo, JANTSB SEA71DYA37Accident · No injuriesClosedCallair A-9B · Albion, IDNTSB LAX72DUJ04Accident · No injuriesClosedAmerican AA-1A · Phoenix, AZNTSB IAD71DLJ29Accident · Minor injuriesClosedMooney M20B · Wise, NCNTSB NYC71FNC32Accident · Minor injuriesClosedTaylorcraft DCO-65 · Gorham, MENTSB MKC71FTK33Accident · Serious injuriesClosedPiper PA-25 · Onida, SDNTSB DEN71FTM31Accident · Minor injuriesClosedAero Comdr 100 · Granger, UTNTSB ANC71FAG01Accident · Serious injuriesClosedCessna 180G · Anchorage, AKNTSB SEA71DTA24Accident · No injuriesClosedPiper PA-11 · Alzada, MTNTSB NYC71DNE43Accident · Minor injuriesClosedCessna 172D · Danbury, CTNTSB MKC71FCG77Accident · No injuriesClosedAero Comdr 520 · Independence, MONTSB OAK71DVA85Accident · No injuriesClosedCessna 140 · Columbia, CANTSB MIA71FKG96Accident · No injuriesClosedHughes 269B · Savannah, GANTSB SEA71FYC43Accident · No injuriesClosedCessna 182B · Enterprise, ORNTSB MKC71FCJ73Accident · Minor injuriesClosedCessna 150F · Papillion, NENTSB FTW71FPA35Accident · No injuriesClosedTed Smith 601 · Lancaster, TX