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 MKC77DER62Accident · No injuriesClosedBellanca 7GCBC · Grand Lake, MNNTSB IAD77FIG27Accident · Minor injuriesClosedCessna 172C · Stevensville, MDNTSB LAX77DUJ81Accident · No injuriesClosedCessna 172 · Flagstaff, AZNTSB CHI77FEE33Accident · Minor injuriesClosedBoeing E75 · Lockport, ILNTSB MKC77DER60Accident · No injuriesClosedCessna 180 · Grand Rapids, MNNTSB MIA77FKG52Accident · No injuriesClosedPiper PA-25 · Sylvania, GANTSB MIA77DLG22Accident · No injuriesClosedBeech 95-A55 · Greenville, SCNTSB CHI77DEX40Accident · No injuriesClosedStearman PT-17 · Converse, INNTSB LAX77FUJ72Accident · No injuriesClosedBell 206B · Grand Canyon, AZNTSB ANC77FAG81Accident · No injuriesClosedCessna 172 · Eagle River, AKNTSB ANC77DAG84Accident · No injuriesClosedPiper PA-12 · Slop Bucket Lk, AKNTSB LAX77FUG53Accident · No injuriesClosedHiller Acft UH-12E · Blythe, CANTSB MIA77DKJ57Accident · No injuriesClosedPiper PA18 · Alabaster, ALNTSB FTW77DQG44Accident · No injuriesClosedAero-Commdr S-2R · Sterling City, TXNTSB FTW77FRD38Accident · No injuriesClosedCessna 150K · Gillis, LANTSB MIA77DLD75Accident · No injuriesClosedCessna 150 · Anclote Island, FLNTSB MKC77FCD33Accident · No injuriesClosedAmer Avco AA-5A · Osage, IANTSB MKC77FCA26Accident · Minor injuriesClosedBell 47G-2 · Chesterfield, MONTSB DEN77DTE63Accident · No injuriesClosedPiper PA-18 · Silver Cliff, CONTSB ANC77DAG89Accident · No injuriesClosedPiper J-3 · Homer, AKNTSB FTW77FPA16Accident · No injuriesClosedCessna 177RG · Dallas, TXNTSB MKC77DCJ27Accident · No injuriesClosedBell 47G5A · Red Cloud, NENTSB MKC77DCD37Accident · No injuriesClosedHughes 269B · Hawkeye, IANTSB CHI77FEE30Accident · No injuriesClosedHughes 269 · Woodstock, ILNTSB ANC77DAG78Accident · No injuriesClosedCessna 170B · Drill Creek, AKNTSB OAK77FVG43Accident · Serious injuriesClosedGrumman AA-5B · Chico, CANTSB CHI77FEC39Accident · No injuriesClosedMcculloch J-2 · Flint, MINTSB OAK77DVA39Accident · No injuriesClosedLuscombe 8E · Fresno, CANTSB MIA77DKJ51Accident · No injuriesClosedCessna 150H · Birmingham, ALNTSB OAK77DVG45Accident · No injuriesClosedPiper PA-18 · Shingle Spgs, CANTSB SEA77FYE28Accident · No injuriesClosedCessna 180 · Alderwood Mnr, WANTSB CHI77FEC33Accident · No injuriesClosedCessna 150 · Ann Arbor, MINTSB ANC77DAA30Accident · No injuriesClosedPiper PA-18 · Salcha River, AKNTSB MKC77DER50Accident · No injuriesClosedLuscombe 8E · Apple Valley, MNNTSB CHI77FEK25Accident · Minor injuriesClosedCessna 152 · Columbus, OHNTSB OAK77DVG42Accident · No injuriesClosedPiper PA-28 · Pope Valley, CANTSB IAD77FID21Accident · No injuriesClosedAerostar 600 · South Hill, VANTSB FTW77FRD36Accident · No injuriesClosedCessna 180 · New Orleans, LANTSB MIA77FKG37Accident · Serious injuriesClosedSchweizer L-34 · Williamson, GANTSB MIA77DKG47Accident · No injuriesClosedEnstrom F28A · Flovilla, GANTSB LAX77DUQ35Accident · No injuriesClosedGrum Amer AA5-A · Oxnard, CANTSB ANC77DAA29Accident · No injuriesClosedPiper PA-18 · Paxson, AKNTSB IAD77FIA18Accident · Serious injuriesClosedMaule M-4 · Woodbridge, VANTSB OAK77DVW26Accident · No injuriesClosedCessna 170 · Keeler, CANTSB MIA77KK019Accident · No injuriesClosedLuscombe 8A · Louisville, MSNTSB NYC77FA066Accident · 2 fatalClosedCessna 172K · Nantucket, MANTSB MIA77FKG34Accident · No injuriesClosedCessna A188A · Cairo, GANTSB IAD77FLJ20Accident · Minor injuriesClosedPiper PA-28R · Chapel Hill, NCNTSB MKC77DTK25Accident · No injuriesClosedStinson 108-2 · Ft Thompson, SDNTSB ANC77DAG66Accident · No injuriesClosedPiper J-3 · Kenai, AK