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 MIA76FLA16Accident · Minor injuriesClosedPitts S-1 · Jacksonville, FLNTSB IAD76FIG05Accident · No injuriesClosedHelio Acft H395 · Martinsburg, WVNTSB MKC76DCQ21Accident · No injuriesClosedGreat Lakes S-BABY · Phillipsburg, KSNTSB FTW76FPJ13Accident · No injuriesClosedPiper PA-28 · Hennessey, OKNTSB LAX76DUJ36Accident · No injuriesClosedCessna 188 · Glendale, AZNTSB FTW76FRD10Accident · No injuriesClosedBoeing A75 · Lake Charles, LANTSB SEA76FTI12Accident · No injuriesClosedTaylorcraft BC12-D · Hamilton, MTNTSB MIA76FLD22Accident · Minor injuriesClosedBeech D18S · Cedar Key, FLNTSB ANC76AA042Accident · No injuriesClosedHelio Acft H-250 · Teller, AKNTSB NYC76AN036Accident · No injuriesClosedDassault Falcon · Warwick, RINTSB DEN7LFQA16Accident · Serious injuriesClosedBreigleib BG-12A · Moriarity, NMNTSB DCA76AZ005Accident · 6 fatalClosedCanadair CL-44 · Miami, FLNTSB ANC76AA040Accident · No injuriesClosedDehavilland DHC-3 · Kuskokwim Rvr, AKNTSB SEA76FYC20Accident · No injuriesClosedHiller Acft UH-12B · Brownsville, ORNTSB MIA76DLD18Accident · Minor injuriesClosedPiper PA-28 · Windermere, FLNTSB CHI76DEA09Accident · No injuriesClosedAmer Avco AA1-A · Anderson, INNTSB IAD76DIA04Accident · Minor injuriesClosedHughes 369 · Mechanicsville, MDNTSB ANC76AA038Accident · No injuriesClosedCessna A185E · Twin Lakes, AKNTSB FTW76FPM07Accident · No injuriesClosedCessna 170B · Tahlequah, OKNTSB SEA7LDYE16Accident · No injuriesClosedHiller Acft UH-12E · Randle, WANTSB OAK76DXQ20Accident · No injuriesClosedAeronca 11AC · Fallon, NVNTSB ANC76DAG38Accident · No injuriesClosedPiper PA-18 · Egegik, AKNTSB CHI76IC025Incident · No injuriesClosedBoeing 747 · London, United KingdomNTSB MKC76FCG23Accident · Serious injuriesClosedBell 47G2A · St Elizabeth, MONTSB CHI76FET14Accident · Minor injuriesClosedCessna A188B · Nappanee, INNTSB NYC76AN031Accident · No injuriesClosedRaven S55A · Greenwich, CTNTSB SEA76DYG15Accident · No injuriesClosedBell 47G5 · Basin City, WANTSB MKC76AER24Accident · No injuriesClosedCessna 170A · Carlos, MNNTSB NYC76DFA12Accident · No injuriesClosedCessna 172 · Otter Lake, NYNTSB MIA76AM022Accident · No injuriesClosedBeech D18S · Jacksonville, FLNTSB SEA76FYE13Accident · No injuriesClosedDehavilland DHC-3 · Auburn, WANTSB OAK76AP008Accident · 3 fatalClosedMooney M20G · Truckee, CANTSB NYC76FGM05Accident · No injuriesClosedHiller Acft UH-12B · Beaver Falls, PANTSB MKC76FER23Accident · No injuriesClosedBeech H35 · Blaine, MNNTSB SEA76DYI06Accident · No injuriesClosedPiper PA-32 · Redmond, ORNTSB SEA76DYC14Accident · No injuriesClosedPiper PA-32 · Enterprise, ORNTSB OAK76DXQ13Accident · No injuriesClosedStinson 108-3 · Winnemucca, NVNTSB MIA76DKT15Accident · Minor injuriesClosedCessna 210L · Fort Meyers, FLNTSB MKC76DTK04Accident · No injuriesClosedWaco UPF-7 · N Sioux City, SDNTSB ANC76DAG65Accident · No injuriesClosedLuscombe 8E · Mccarthy, AKNTSB MIA76FKQ11Accident · No injuriesClosedCessna A188B · Minter City, MSNTSB ANC76DAG29Accident · Minor injuriesClosedPiper PA-12 · Kenai, AKNTSB NYC76AN028Accident · Serious injuriesClosedDouglas DC-10 · Jamaica, NYNTSB OAK7LDVD05Accident · Serious injuriesClosedErco 415-C · Sonoma, CANTSB LAX76DUJ24Accident · No injuriesClosedCessna 180 · Page, AZNTSB FTW76DRD06Accident · Serious injuriesClosedLuscombe 8A · Gonzales, LANTSB ANC76DAG42Accident · No injuriesClosedCessna 185 · Farewell, AKNTSB OAK76AP006Accident · No injuriesClosedDouglas DC-3C · Middletown, CANTSB DEN76AD012Accident · No injuriesClosedGates Lear 24 · Englewood, CONTSB ANC76DAA11Accident · No injuriesClosedCessna 180 · Delta Junction, AK