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 OAK75DVA14Accident · No injuriesClosedBoeing B75N1 · Tranquility, CANTSB MKC75FCJ19Accident · Serious injuriesClosedCessna 188A · Summerfield, KSNTSB CHI75IC016Incident · No injuriesClosedBeech B95A · West Chicago, ILNTSB CHI75DEM05Accident · No injuriesClosedCessna 177 · Dewitt, MINTSB FTW75FPG13Accident · 1 fatalClosedPiper PA-25 · Fresno, ARNTSB FTW75FPG14Accident · Serious injuriesClosedCessna 188 · Dermott, ARNTSB MKC75DCJ17Accident · No injuriesClosedCessna 188 · York, NENTSB IAD75DLQ06Accident · No injuriesClosedCessna 188 · Owensboro, KYNTSB NYC75FHA13Accident · No injuriesClosedBeech D95A · Pittstown, NJNTSB MIA74DKJ09Accident · No injuriesClosedCessna A150L · Meridianville, ALNTSB CHI75AC014Accident · No injuriesClosedBeech D18S · Detroit, MINTSB MIA75DKQ05Accident · No injuriesClosedBoeing A75N1 · Greenville, MSNTSB ANC75AA011Accident · No injuriesClosedDehavilland DHC-3 · Bethel, AKNTSB NYC75FHJ06Accident · No injuriesClosedEnstrom F-28A · Garden City, NYNTSB MIA75FKQ04Accident · No injuriesClosedCessna 188B · Bruce, MSNTSB CHI75FEE11Accident · No injuriesClosedBaby GR Lak 1SP · Midlothian, ILNTSB OAK75FVD05Accident · Serious injuriesClosedChampion 7AC · Farmington, CANTSB MKC75FCA08Accident · No injuriesClosedCessna 177 · Garwood, MONTSB ANC75AA009Accident · Serious injuriesClosedSikorski S58ST · Umiat, AKNTSB FTW75DRG09Accident · No injuriesClosedAeronca 11AC · San Antonio, TXNTSB SEA75DYA07Accident · No injuriesClosedHiller Acft UH-12E · Bliss, IDNTSB MIA74FKG10Accident · Minor injuriesClosedEnstrom F-28A · Atlanta, GANTSB FTW75FPG10Accident · No injuriesClosedHughes 269A · W.Memphis, ARNTSB DEN75FTE10Accident · Minor injuriesClosedNaval Fcty N3N-3 · La Salle, CONTSB FTW75FPA05Accident · No injuriesClosedCessna 150 · Addison, TXNTSB CHI75FEE15Accident · No injuriesClosedCessna 172 · Ottawa, ILNTSB DEN75FQD06Accident · No injuriesClosedBell 47G3B2 · Mesquite, NMNTSB MIA75FKG07Accident · Minor injuriesClosedCessna 182J · Cumming, GANTSB LAX75OL007Accident · 1 fatalClosedCessna 337 · Chiconcuac, MexicoNTSB MIA75DKG09Accident · No injuriesClosedPiper PA-24 · Americus, GANTSB SEA75DYA06Accident · No injuriesClosedCessna 180 · Heyburn, IDNTSB LAX75OL012Accident · No injuriesClosedBeech 35-B33 · Bahia De L.A., MexicoNTSB MKC75FTG06Accident · No injuriesClosedCessna 188 · Cummings, NDNTSB FTW75FPG06Accident · Minor injuriesClosedJeanies Teenie · Carlisle, ARNTSB OAK75FVM03Accident · No injuriesClosedWeatherly 201A · Soledad, CANTSB ANC75DAG05Accident · No injuriesClosedCessna 180 · Bethel, AKNTSB NYC75IN006Incident · No injuriesClosedDassault Falcon · Buffalo, NYNTSB MIA74FLG04Accident · No injuriesClosedErco 415-C · Carlisle, SCNTSB NYC75FNC05Accident · Minor injuriesClosedPiper PA-16 · Bowdoinham, MENTSB NYC75FHD05Accident · No injuriesClosedHelicorp D · Trenton, NJNTSB NYC75FGT03Accident · Minor injuriesClosedBensen B-8-VW · Harrisburg, PANTSB LAX75DVA04Accident · No injuriesClosedGrumman G-164A · Ducor, CANTSB FTW75DRA03Accident · No injuriesClosedCessna 188 · Wadsworth, TXNTSB ANC75DAD01Accident · No injuriesClosedDehavilland DHC-2 · Sitka, AKNTSB NYC75FNC04Accident · Minor injuriesClosedGrumman TR-2 · Twin Mountain, NHNTSB NYC75FFJ08Accident · No injuriesClosedStinson 108-2 · Niagara Falls, NYNTSB LAX75DUJ10Accident · Minor injuriesClosedCessna 150 · Chandler, AZNTSB CHI75FEG03Accident · No injuriesClosedPiper PA-28 · Oxford, OHNTSB NYC75FHA01Accident · No injuriesClosedBell 206B · Allentown, PANTSB MIA75FLD01Accident · No injuriesClosedCessna 310C · Vero Beach, FL