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 LAX78FUA23Accident · Minor injuriesClosedHughes 269B · Long Beach, CANTSB NYC78FHJ20Accident · No injuriesClosedCessna T210M · Mattituck, NYNTSB DEN79DQA10Accident · No injuriesClosedPiper PA-25 · Dexter, NMNTSB OAK78DVG70Accident · No injuriesClosedCessna 150 · Auburn, CANTSB OAK78DVA65Accident · No injuriesClosedPiper PA-25 · Raisin City, CANTSB MKC78DCG54Accident · No injuriesClosedPiper PA-28R · Bethany, MONTSB IAD78FLT08Accident · Minor injuriesClosedCessna 152 · Memphis, TNNTSB FTW78DPJ33Accident · No injuriesClosedCessna 172 · Beaver, OKNTSB CHI78FEX27Accident · Serious injuriesClosedCessna 402B · Indianapolis, INNTSB OAK78DVA63Accident · No injuriesClosedPiper PA-28 · Coalinga, CANTSB IAD78DID16Accident · No injuriesClosedCessna 172 · Augusta Spring, VANTSB OAK78DVG68Accident · No injuriesClosedSikorsky H-19 · Gerber, CANTSB MKC78DCJ33Accident · No injuriesClosedCessna 188B · Liberty, NENTSB ANC78DAH04Accident · No injuriesClosedHelio Acft 391B · Iliamna, AKNTSB NYC78FFJ31Accident · No injuriesClosedBeech B23 · Reading Center, NYNTSB OAK78DVG65Accident · No injuriesClosedBell 47G-3B · Angwin, CANTSB LAX78DVA62Accident · No injuriesClosedBoeing B75N1 · Wasco, CANTSB FTW78DPD26Accident · Minor injuriesClosedCessna 150J · Iowa Park, TXNTSB ANC78FA057Accident · Minor injuriesClosedHiller UH12E3 · Livengood, AKNTSB OAK78DVG64Accident · No injuriesClosedStearman A75-1 · Pleasant Grove, CANTSB OAK78DVA61Accident · No injuriesClosedBoeing A75 · Chowchilla, CANTSB MIA78DKQ24Accident · No injuriesClosedCessna A188B · Choctaw, MSNTSB IAD78FIG13Accident · No injuriesClosedPiper PA-18 · Gaithersburg, MDNTSB FTW78DPG67Accident · No injuriesClosedGrumman G-164B · Walnut Ridge, ARNTSB DEN78DTM29Accident · No injuriesClosedCessna 185 · Green River, UTNTSB SEA78FTI24Accident · Minor injuriesClosedPiper PA-18 · Waterloo, MTNTSB MIA78FKT64Accident · No injuriesClosedCessna 172 · Key Largo, FLNTSB CHI78DEP46Accident · No injuriesClosedCessna 150 · Kewaunee, WINTSB OAK78DVG62Accident · No injuriesClosedWeatherly 201B · Davis, CANTSB LAX78DUM31Accident · No injuriesClosedPiper PA-36 · Calexico, CANTSB IAD78FID14Accident · No injuriesClosedPiper PA-32R · Richmond, VANTSB ANC78FAA28Accident · Minor injuriesClosedCessna 206 · Unalakleet, AKNTSB CHI78FEX25Accident · Serious injuriesClosedGrumman AA5B · Bedford, INNTSB OAK78DXQ33Accident · No injuriesClosedCessna 180 · Yerington, NVNTSB CHI78FEI29Accident · No injuriesClosedBell 476-2 · Jeromesville, OHNTSB ANC78FA049Accident · Minor injuriesClosedCessna 185 · Kotzebue, AKNTSB CHI78FEV42Accident · No injuriesClosedHughes 269A · Williamsfield, ILNTSB CHI78DEP44Accident · No injuriesClosedPiper PA-28 · Gleason, WINTSB ANC78FA046Accident · No injuriesClosedCessna U206 · Anchorage, AKNTSB CHI78FEP41Accident · No injuriesClosedPiper PA-32 · Lakewood, WINTSB NYC78FNA35Accident · Serious injuriesClosedEnstrom F28C · So.Dennis, MANTSB FTW78DRA32Accident · No injuriesClosedCessna 411 · Tomball, TXNTSB MIA78DKT62Accident · No injuriesClosedCessna 172XP · Ft.Lauderdale, FLNTSB CHI78FEM23Accident · Minor injuriesClosedCessna 172 · Lowell, MINTSB ANC78DAG85Accident · No injuriesClosedPiper PA-18 · Skwentna, AKNTSB MKC78DCG43Accident · No injuriesClosedCessna 150 · Green Castle, MONTSB IAD78FLJ16Accident · No injuriesClosedCessna 172 · Aulander, NCNTSB NYC78FNC35Accident · No injuriesClosedPiper PA-28 · Swans Island, MENTSB MKC78FA051Accident · 1 fatalClosedN American SNJ-4 · Gravois Mills, MONTSB MKC78DCQ28Accident · Minor injuriesClosedPiper PA-28R · Smith Center, KS