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 CHI77FEP07Accident · No injuriesClosedPiper PA-32R · Ashippun, WINTSB LAX77FUG12Accident · No injuriesClosedCessna 120 · Corona, CANTSB OAK77DXQ02Accident · No injuriesClosedMaule M5 · Battle Mountn, NVNTSB MKC77FCG07Accident · No injuriesClosedCessna 182M · Grain Valley, MONTSB ANC77DAG18Accident · No injuriesClosedCessna 170A · Sutton, AKNTSB FTW77DPG07Accident · Minor injuriesClosedGlobe GC-1B · Blythville, ARNTSB DCA77AA003Accident · Serious injuriesClosedDouglas DC-9 · Denver, CONTSB MKC77DCD03Accident · No injuriesClosedCessna 120 · Forest City, IANTSB ANC77DA008Accident · No injuriesClosedSwearingen SA26AT · King Salmon, AKNTSB CHI77DEG05Accident · No injuriesClosedCessna 180 · Lebanon, OHNTSB ANC77DAA05Accident · No injuriesClosedCessna 185 · Wiseman, AKNTSB SEA77FTI02Accident · No injuriesClosedCessna 172 · Whitefish, MTNTSB LAX77DUJ12Accident · No injuriesClosedMidget Mustan · Wickenburg, AZNTSB FTW77DRA03Accident · No injuriesClosedCessna 150 · Texas City, TXNTSB MIA77DKT07Accident · No injuriesClosedAero Comdr 600S2R · Homestead, FLNTSB MKC77DCG05Accident · Minor injuriesClosedPiper PA-22 · Oskaloosa, KSNTSB DEN77DA006Accident · No injuriesClosedCessna 182J · Alamosa, CONTSB CHI77FEI03Accident · No injuriesClosedPiper PA-24 · Akron, OHNTSB MIA77FKJ03Accident · Serious injuriesClosedCessna 150 · New Brockton, ALNTSB SEA77FYA04Accident · Serious injuriesClosedSchweizer SGU222 · Boise, IDNTSB NYC77DNC03Accident · No injuriesClosedPiper PA-24 · Bangor, MENTSB IAD77FKW05Accident · No injuriesClosedCessna 402 · Erin, TNNTSB DEN77FA003Accident · 4 fatalClosedCessna 210F · Edgerton, WYNTSB NYC77FNE02Accident · Serious injuriesClosedSchweizer SGS233 · Pittsfield, MANTSB IAD77FLQ02Accident · No injuriesClosedCessna 150 · Hopkinsville, KYNTSB MIA77DKJ05Accident · No injuriesClosedBoeing 75 · Montgomery, ALNTSB MIA77DKJ02Accident · No injuriesClosedAero Comdr 690A · Fayette, ALNTSB DEN76FTM05Accident · Minor injuriesClosedCessna T210L · Bullfrog Basin, UTNTSB FTW77FRG02Accident · Serious injuriesClosedBell 47G · Kerrville, TXNTSB NYC77FHJ01Accident · No injuriesClosedCessna 185 · Port Washingtn, NYNTSB NYC76DFA02Accident · Minor injuriesClosedLake LA-4 · Stillwater, NYNTSB LAX77DUQ03Accident · No injuriesClosedPiper J-3 · Newhall, CANTSB ANC77DAH02Accident · No injuriesClosedPiper PA-18 · Gunsight Mtn, AKNTSB SEA77DYA01Accident · No injuriesClosedStinson 108 · Soda Springs, IDNTSB MIA76DLD02Accident · No injuriesClosedEnstrom F-28A · Lake Placid, FLNTSB IAD76FKM01Accident · No injuriesClosedPiper PA-25 · Charlotte, NCNTSB ANC77AAH01Accident · No injuriesClosedTaylorcraft BCS-65 · Palmer, AKNTSB IAD77DKW01Accident · No injuriesClosedCurtis JN4C · Tullahoma, TNNTSB CHI77FEM01Accident · No injuriesClosedJeanies Teenie · Frankfort, MINTSB LAX76DUK16Accident · No injuriesClosedGrumman G-164 · Sun City, AZNTSB FTW76IF127Incident · No injuriesClosedBeech 95-B55 · Temple, TXNTSB MIA76DLA57Accident · Minor injuriesClosedBellanca 17-30A · Vernon, FLNTSB OAK76FJA25Accident · Minor injuriesClosedHughes 369 · Haena Kauai, HINTSB ANC76AA143Accident · No injuriesClosedPiper PA-32 · King Salmon, AKNTSB OAK76FVH18Accident · No injuriesClosedCessna 206 · Angwin, CANTSB ANC76DAH89Accident · No injuriesClosedCessna 180 · Kulik Lake, AKNTSB ANC7LAA137Accident · No injuriesClosedCessna 185 · Bethel, AKNTSB MKC76DCQ77Accident · No injuriesClosedCessna 205 · Winona, KSNTSB FTW76DRA57Accident · No injuriesClosedPiper PA-28R · Chesterville, TXNTSB ANC77DAG15Accident · No injuriesClosedCessna 170B · Tatitlek, AK