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 SEA76FYC54Accident · Serious injuriesClosedPiper PA-25 · Rickreall, ORNTSB FTW76DPG56Accident · No injuriesClosedCessna 172 · Bald Knob, ARNTSB IAD76DID28Accident · No injuriesClosedCessna 305 · Waynesboro, VANTSB FTW76DRA41Accident · No injuriesClosedBeech 35 · Bryan, TXNTSB MIA76DLA48Accident · No injuriesClosedBell 47D-1 · Lake Butler, FLNTSB FTW76FPJ34Accident · No injuriesClosedBell 47G · Oklahoma City, OKNTSB DEN76DTC34Accident · No injuriesClosedPiper PA-18 · Worland, WYNTSB MIA76AM084Accident · No injuriesClosedCurtiss C-46F · Miami, FLNTSB CHI76FEV39Accident · No injuriesClosedCessna 150M · Springfield, ILNTSB FTW76FRG54Accident · 1 fatalClosedBeech D18S · Mcallen, TXNTSB SEA76FYC49Accident · Minor injuriesClosedEnstrom F-28A · Prairie City, ORNTSB OAK76DJA11Accident · No injuriesClosedBoeing A75N1 · Koloa, HINTSB DEN76DTM35Accident · No injuriesClosedCessna 188B · New Castle, UTNTSB FTW76FRD43Accident · No injuriesClosedCessna 180 · Port Sulphur, LANTSB FTW76FPM21Accident · No injuriesClosedPiper PA-25 · Caddo, OKNTSB OAK76FVM36Accident · Minor injuriesClosedCessna 310D · San Carlos, CANTSB CHI76FEM40Accident · No injuriesClosedCessna 150 · Lamont, MINTSB NYC76DNC49Accident · No injuriesClosedCessna A188B · W Cornwall, VTNTSB MIA76FKG62Accident · No injuriesClosedBeech 95-A55 · Atlanta, GANTSB MKC76DTK25Accident · No injuriesClosedAeronca 15AC · Union Center, SDNTSB ANC76AA083Accident · No injuriesClosedCessna 180 · Bethel, AKNTSB SEA76DYG51Accident · No injuriesClosedChampion 7GCBC · Dayton, WANTSB OAK76FXQ40Accident · No injuriesClosedBellanca 7GCBC · Reno, NVNTSB OAK76FVA59Accident · Serious injuriesClosedPiper PA-28 · Salida, CANTSB CHI76DEV35Accident · No injuriesClosedPiper PA-28 · Fairbury, ILNTSB MKC76DER65Accident · No injuriesClosedWittman W-8 · Hutchinson, MNNTSB CHI76DEE56Accident · No injuriesClosedCesnna 172 · Wheeling, ILNTSB NYC76FNA36Accident · No injuriesClosedMooney M20F · New Shoreham, RINTSB MIA76FKG58Accident · Serious injuriesClosedPiper PA-23 · Jonesboro, GANTSB NYC76DFJ22Accident · No injuriesClosedCessna 172 · Niagara Falls, NYNTSB SEA76DYG47Accident · Minor injuriesClosedHiller Acft UH-12E · Worley, IDNTSB MKC76DCG46Accident · No injuriesClosedBeagle B121-2 · Wichita, KSNTSB SEA76DYG44Accident · No injuriesClosedBell 47G-3B · Palouse, WANTSB FTW76FPD36Accident · No injuriesClosedCessna 182 · Ft.Worth, TXNTSB CHI76FEM37Accident · Minor injuriesClosedEvangel 4500 · Grand Haven, MINTSB IAD76AI067Accident · 1 fatalClosedCessna T337C · Williamstown, WVNTSB MIA76FLD39Accident · No injuriesClosedDehavilland DHC-2 · Cedar Lake, MINTSB LAX76FUJ72Accident · No injuriesClosedCessna TU206E · Mesa, AZNTSB NYC76FNC39Accident · No injuriesClosedCessna 120 · Wiscasset, MENTSB OAK76O0002Accident · No injuriesClosedBeech 35 · Punta Pscadro, MexicoNTSB LAX76FUG45Accident · No injuriesClosedCessna 150 · Chino, CANTSB SEA76DYG41Accident · No injuriesClosedPiper PA-22 · Sunnyside, WANTSB ANC76AA080Accident · Serious injuriesClosedCessna 180 · Kwigillingok, AKNTSB CHI76FEC37Accident · Minor injuriesClosedCessna 188 · Ypsilanti, MINTSB MKC76OK004Accident · No injuriesClosedCessna 210 · Manila, RPNTSB SEA76FYC38Accident · Minor injuriesClosedHiller Acft UH-12E · Corvallis, ORNTSB ANC76DAH10Accident · No injuriesClosedCessna 170B · Talkeetna, AKNTSB NYC76DNA33Accident · No injuriesClosedMooney M20C · Bedford, MANTSB FTW76DRD35Accident · No injuriesClosedGrumman G-164 · Oakdale, LANTSB MIA76IM074Incident · No injuriesClosedDouglas DC-10 · Miami, FL