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 CHI73FEA38Accident · Serious injuriesClosedBeech 23 · Lanesville, INNTSB OAK73FVA64Accident · No injuriesClosedBeech M35 · Modesto, CANTSB FTW73FPG57Accident · No injuriesClosedCessna 170A · Conway, ARNTSB LAX73OL014Accident · 3 fatalClosedLockheed 1049G · Casey, CanadaNTSB CHI73FET24Accident · No injuriesClosedCessna 170B · New Paris, INNTSB CHI73FEI46Accident · No injuriesClosedCessna 172L · Kellys Is, OHNTSB SEA73DYC34Accident · No injuriesClosedPiper PA-12 · Sandy, ORNTSB NYC73DGM34Accident · No injuriesClosedGreat Lakes 2T-1AE · Saltsburg, PANTSB CHI73DEA37Accident · No injuriesClosedBell 47D-1 · Bloomfield, INNTSB DEN73DQA45Accident · No injuriesClosedRaven S-55A · Albuquerque, NMNTSB ANC73DAG98Accident · Minor injuriesClosedMaule M4-220 · Glennallen, AKNTSB FTW73FPG54Accident · No injuriesClosedCessna A188B · Tryonza, ARNTSB DEN73FTE82Accident · Serious injuriesClosedCessna 205 · Ft.Collins, CONTSB FTW73DPJ20Accident · No injuriesClosedHiller UH-12B · Guymon, OKNTSB MKC73AK071Accident · 1 fatalClosedBeech 95-B55 · Wichita, KSNTSB CHI73DEM62Accident · No injuriesClosedPiper PA-28 · Battle Creek, MINTSB MIA73DLD86Accident · No injuriesClosedPiper PA-32 · Oviedo, FLNTSB FTW73DRA31Accident · No injuriesClosedBoeing IB75A · Winnie, TXNTSB MIA73FKA10Accident · Minor injuriesClosedPiper PA-32 · Humacao, PRNTSB MIA73DKJ62Accident · No injuriesClosedPiper PA-30 · Fairhope, ALNTSB FTW73FPM11Accident · No injuriesClosedCessna A188 · Tulsa, OKNTSB ANC73DAG96Accident · Minor injuriesClosedPiper PA-28 · Anchorage, AKNTSB MKC73DCQ32Accident · No injuriesClosedCessna 182A · Yates Center, KSNTSB IAD73DKM42Accident · No injuriesClosedBerg-Aero 19181A · Archdale, NCNTSB MKC73DTG13Accident · No injuriesClosedCessna 172 · Grace City, NDNTSB OAK73DXQ32Accident · Minor injuriesClosedCessna 175 · Cedarville, CANTSB MKC73FCQ34Accident · No injuriesClosedCessna 182L · Scandia, KSNTSB FTW73DRG82Accident · No injuriesClosedLockheed 18 · Sota L.Marina, MexicoNTSB OAK73FXQ31Accident · Minor injuriesClosedCessna 182 · Elko, NVNTSB MIA73DKT99Accident · No injuriesClosedCessna 172G · Belle Glade, FLNTSB MKC73DCQ31Accident · No injuriesClosedGrumman G-164A · Mccune, KSNTSB FTW73DRA30Accident · No injuriesClosedBoeing E75N1 · Alvin, TXNTSB SEA73FYG31Accident · Minor injuriesClosedDehavilland DH104 · Moses Lake, WANTSB NYC73FNE33Accident · No injuriesClosedCessna 150L · Northamton, MANTSB MIA73AM101Accident · 2 fatalClosedPiper PA-28 · Troy, ALNTSB FTW73DRG97Accident · No injuriesClosedCessna 310 · Menard, TXNTSB FTW73FRD25Accident · No injuriesClosedGrumman G-164 · Cade, LANTSB CHI73DEI42Accident · Minor injuriesClosedLuscombe 8E · Belleville, OHNTSB NYC73FFA32Accident · No injuriesClosedStinson 108-3 · Indian Lake, NYNTSB CHI73FEI40Accident · Minor injuriesClosedBeech 35 · Ratlesnake I, OHNTSB ANC73DAG87Accident · No injuriesClosedAeronca O-58B · Anchorage, AKNTSB IAD73DKM38Accident · No injuriesClosedGlobe GC-1B · Mocksville, NCNTSB ANC73DAG86Accident · No injuriesClosedCessna 180A · Anchorage, AKNTSB UNK73X0113Accident · No injuriesClosedPiper PA-31 · Chihuahua Cty, MexicoNTSB FTW73FRD19Accident · Minor injuriesClosedBeech B23 · St.Francisvlle, LANTSB FTW73DPG46Accident · No injuriesClosedCessna 305A · Springdale, ARNTSB CHI73DEV27Accident · No injuriesClosedCessna 172I · Danville, ILNTSB MKC73DCJ36Accident · No injuriesClosedPiper PA-18 · Ogallala, NENTSB MIA73FKT89Accident · Minor injuriesClosedPiper PA-23 · Fort Meyers, FLNTSB FTW73DRA23Accident · No injuriesClosedAero Comdr 520 · Stan C, HO