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 CHI75AC004Accident · Minor injuriesClosedBeech D18S · Hillsboro, OHNTSB ANC75AA002Accident · Serious injuriesClosedCessna 180B · Kwinhagak, AKNTSB MKC75FCD01Accident · No injuriesClosedPiper PA-25 · Southerland, IANTSB CHI75FEC04Accident · No injuriesClosedBeech D18 · Utica, MINTSB SEA75DYC01Accident · No injuriesClosedAmer Avco AA1-A · Sandy, ORNTSB MIA75FLA01Accident · No injuriesClosedBeech B18S · Panama City, FLNTSB DEN75FQA08Accident · No injuriesClosedPiper PA-11 · Los Lunas, NMNTSB MIA74DKJ64Accident · Minor injuriesClosedBensen B8M · Fairhope, ALNTSB OAK74DVA80Accident · No injuriesClosedCessna 172 · Turlock, CANTSB DEN74DTE87Accident · No injuriesClosedStinson 108-2 · Holyoke, CONTSB DEN74DTC40Accident · Minor injuriesClosedChampion 7GCBC · Lingle, WYNTSB FTW75OF005Accident · No injuriesClosedCessna 210E · Punta Chivato, MexicoNTSB CHI74FEA48Accident · Minor injuriesClosedTaylor Mono · Noblesville, INNTSB NYC74DHD42Accident · No injuriesClosedBrantly B-2B · Vincentown, NJNTSB MIA74DLE03Accident · No injuriesClosedPiper J3C · Plymouth, FLNTSB MIA74DLA46Accident · No injuriesClosedLuscombe 8A · Jacksonville, FLNTSB SEA74DTI26Accident · No injuriesClosedCessna 172 · Swan Lake, MTNTSB NYC74FHA34Accident · Serious injuriesClosedPiper PA-24 · Andreas, PANTSB NYC74FGT23Accident · No injuriesClosedCessna 172M · Lewisburg, PANTSB LAX74DVM31Accident · No injuriesClosedCessna 195 · Paso Robles, CANTSB ANC74DAH09Accident · No injuriesClosedCessna 170B · Anchorage, AKNTSB MKC74DTK19Accident · No injuriesClosedPiper PA-28 · Bryant, SDNTSB DEN74DTC38Accident · No injuriesClosedPiper PA-18 · Laramie, WYNTSB ANC75AA080Accident · No injuriesClosedHughes 369C · Wrangell, AKNTSB FTW74DRD49Accident · No injuriesClosedBoeing A75N1 · Edgerly, LANTSB CHI74FEE85Accident · No injuriesClosedCessna 310G · Joliet, ILNTSB ANC74AA079Accident · No injuriesClosedCessna 185 · Fairbanks, AKNTSB NYC74FHJ31Accident · No injuriesClosedBell 47G-2 · Garden City, NYNTSB NYC74FGM37Accident · No injuriesClosedPiper PA-12 · Mt Pleasant, PANTSB MIA74DKG82Accident · No injuriesClosedAero Comdr A-9 · Smithville, GANTSB FTW74FRD50Accident · No injuriesClosedBoeing A75N1 · Elton, LANTSB FTW74DPG71Accident · No injuriesClosedGrumman G-164A · West Memphis, ARNTSB ANC74FAA38Accident · No injuriesClosedCessna 180 · Fairbanks, AKNTSB ANC74DAH15Accident · No injuriesClosedPiper PA-18 · Slana, AKNTSB CHI74FEK29Accident · No injuriesClosedPiper PA-28 · Ostrander, OHNTSB NYC74DFJ35Accident · No injuriesClosedBell 47D1 · Palermo, NYNTSB MKC74FTG18Accident · Serious injuriesClosedPiper PA-25 · Ayr, NDNTSB FTW74FRG95Accident · Minor injuriesClosedVolksplane VP-1 · Cibolo, TXNTSB MIA74DLD90Accident · No injuriesClosedPiper J-3 · Lake Placid, FLNTSB MKC74DCG40Accident · No injuriesClosedCessna 120 · Monett, MONTSB FTW74FRD46Accident · No injuriesClosedGrumman G-164A · Delcambre, LANTSB FTW74DPG70Accident · No injuriesClosedCessna 188B · Mccrory, ARNTSB MKC74DER52Accident · No injuriesClosedBeech A23 · Sleepy Eye, MNNTSB NYC75DGT20Accident · No injuriesClosedCessna 172 · Mill Creek, PANTSB MIA74FLD93Accident · No injuriesClosedPiper PA-24 · Nw Smyrna Bch, FLNTSB MIA74DLD94Accident · No injuriesClosedCessna 310 · Titusville, FLNTSB LAX74OL080Accident · Minor injuriesClosedBeech E33A · Bahia De L.A., MexicoNTSB CHI74FEI42Accident · No injuriesClosedCessna 120 · N Bass Islnd, OHNTSB IAD74DLQ36Accident · Minor injuriesClosedErco 415-C · Centertown, KYNTSB DEN74DTE81Accident · No injuriesClosedCessna 180 · Crestd Butte, CO