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 MKC71FCQ27Accident · No injuriesClosedCessna 421 · Wichita, KSNTSB MIA71FKQ23Accident · No injuriesClosedPiper PA-28 · Glen Allen, MSNTSB MIA71DKT34Accident · No injuriesClosedBell 47G3B2 · Belle Glade, FLNTSB FTW71FRJ27Accident · No injuriesClosedCessna 170 · Tyler, TXNTSB CHI71DBD50Accident · No injuriesClosedCessna 150 · Ringwood, ILNTSB CHI71DDJ38Accident · No injuriesClosedAero Comdr 100 · New Holstein, WINTSB CHI71DBA26Accident · No injuriesClosedCessna 150F · Greentown, INNTSB LAX71FUG37Accident · No injuriesClosedAeronca 7AC · Chino, CANTSB MKC71DCD51Accident · No injuriesClosedCessna 172 · Ottumwa, IANTSB MKC71DCJ41Accident · No injuriesClosedAero Comdr 680FLP · Norfolk, NENTSB DEN71DXA15Accident · Minor injuriesClosedBell 47G3B2 · Saratoga, WYNTSB MIA71FLD44Accident · No injuriesClosedMooney M20E · St Petersburg, FLNTSB IAD71DKM24Accident · No injuriesClosedCessna 180 · Denver, NCNTSB LAX71DUG38Accident · No injuriesClosedBell 47G3B1 · Runing Spgs, CANTSB OAK71DVA50Accident · No injuriesClosedPiper PA-28 · Modesto, CANTSB MKC71FCJ37Accident · No injuriesClosedBeech 95-55 · Omaha, NENTSB MKC71FDM41Accident · No injuriesClosedCessna 150G · Eveleth, MNNTSB LAX71FUG23Accident · Minor injuriesClosedCessna 172 · Corona, CANTSB NYC71FHA26Accident · No injuriesClosedCessna 150K · Manville, NJNTSB MIA71FKW29Accident · No injuriesClosedCessna 150 · Nashville, TNNTSB CHI71DBJ51Accident · No injuriesClosedPiper PA-28 · Harbor Sprgs, MINTSB MKC71DCJ36Accident · No injuriesClosedCessna 172E · Ewing, NENTSB FTW71DRG66Accident · No injuriesClosedBeech D55 · Mountain Home, TXNTSB EU170AYZ03Accident · No injuriesClosedBeech D18S · Benghazi, LibyaNTSB NYC71DFD28Accident · No injuriesClosedThurston TSC-1A · Haverhill, MANTSB OAK71DVW21Accident · No injuriesClosedCessna 150J · Lone Pine, CANTSB CHI71DDW29Accident · No injuriesClosedPiper PA-22 · Pontiac, MINTSB NYC71DFD23Accident · No injuriesClosedCessna 150 · Beverly, MANTSB MKC71DCD43Accident · No injuriesClosedPiper PA-24 · Shenandoah, IANTSB MKC71DDQ21Accident · No injuriesClosedCessna 310D · Mitchell, SDNTSB OAK71DVG43Accident · No injuriesClosedBoeing A75N1 · Sloughouse, CANTSB MKC71DCQ25Accident · No injuriesClosedLuscombe 8E · Hugoton, KSNTSB FTW71DPJ22Accident · No injuriesClosedBeech 23 · Waukomis, OKNTSB MIA71FKG53Accident · No injuriesClosedHiller Acft FH1100 · Columbus, GANTSB IAD71II028Incident · No injuriesClosedBoeing 737 · Lynchburg, VANTSB MIA71FKJ32Accident · No injuriesClosedPiper PA-24 · Wetumpka, ALNTSB NYC71DHA27Accident · No injuriesClosedPiper PA-28 · Morrisville, PANTSB CHI71FGA13Accident · No injuriesClosedCessna 310Q · Cincinnati, OHNTSB SEA71FDG19Accident · No injuriesClosedCessna 120 · Whitewater, MTNTSB DCA71R0005Accident · Minor injuriesClosedBoeing 707 · Tel Aviv, IcelandNTSB MKC71FCA21Accident · No injuriesClosedCessna 170B · Wentzville, MONTSB ANC71DAG53Accident · No injuriesClosedStinson 108-1 · Egegik, AKNTSB DCA71AZ012Accident · 47 fatalClosedDouglas DC-8 · Anchorage, AKNTSB MIA71FKW26Accident · No injuriesClosedTaylorcraft BC12-D · Jasper, TNNTSB MIA71FKT21Accident · No injuriesClosedMooney M20F · Ft.Lauderdale, FLNTSB CHI71DBJ43Accident · No injuriesClosedPiper PA-24 · Lansing, MINTSB ANC71DAG62Accident · No injuriesClosedInterstate S-1B1 · Talkeetna, AKNTSB ANC71DAG49Accident · No injuriesClosedBeech B23 · Palmer, AKNTSB MIA71FLA21Accident · No injuriesClosedPiper PA-23 · Milton, FLNTSB OAK71DVA40Accident · No injuriesClosedBell 47G3B1 · Grant Cove, CA