NTSB investigations, PR
101 cases where the phase of flight was Landing.
Cases per year
| 1964 | 10 |
|---|---|
| 1965 | 14 |
| 1966 | 9 |
| 1967 | 8 |
| 1968 | 3 |
| 1969 | 6 |
| 1970 | 3 |
| 1971 | 2 |
| 1972 | 2 |
| 1973 | 2 |
| 1974 | 1 |
| 1975 | 3 |
| 1976 | 2 |
| 1977 | 2 |
| 1978 | 2 |
| 1979 | 3 |
| 1980 | 3 |
| 1981 | 4 |
| 2001 | 2 |
| 2003 | 1 |
| 2004 | 2 |
| 2006 | 2 |
| 2009 | 1 |
| 2010 | 2 |
| 2011 | 1 |
| 2012 | 1 |
| 2014 | 1 |
| 2015 | 2 |
| 2016 | 1 |
| 2020 | 2 |
| 2022 | 3 |
| 2025 | 1 |
Latest cases
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.\"eventStateOrRegion\" = 'PR' AND c.\"eventCountry\" = 'USA'
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 550)
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."eventStateOrRegion" = 'PR' AND c."eventCountry" = 'USA'
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 550)
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 DCA25LA184Incident · No injuriesClass 3 · LimitedPreliminary reportAirbus A321-271NX · San Juan, PROn April 15, 2025, about 2140, Atlantic daylight time (ADT), Frontier Airlines, flight 3506, an Airbus A321-271NX, N607FR, sustained nose wheel and engine damage during an attempted landing at the Luis Munoz Marin International Airport (SJU), San Juan, Puerto…NTSB ERA23LA090Accident · No injuriesClass 4 · LimitedFinal reportCirrus Design SR22 · San Juan, PRThe pilot’s improper recovery from a bounced landing which resulted in a loss of control and subsequent runway excursion.NTSB ERA22LA219Accident · No injuriesClass 4 · LimitedFinal reportShort Bros SD3-60 · San Juan, PRThe flight crew’s failure to extend the landing gear before landing.NTSB ERA22LA123Accident · No injuriesClass 3 · LimitedFinal reportBritten-Norman BN-2A-9 · Culebra, PRThe flight crew’s failure to arrest the descent rate during the non-standard approach, which resulted in a hard landing and failure of the right-wing structure. Contributing was the flight instructor’s selection of a challenging approach for initial training.NTSB ERA20LA221Accident · No injuriesClass 3 · LimitedFinal reportGulfstream 150 · San Juan, PRThe pilot’s loss of control during landing on a wet runway after encountering standing water.NTSB ERA20CA073Accident · No injuriesData collectionFinal reportBeech Hawker 900XP · San Juan, PRThe pilot's failure to maintain a proper descent rate during landing, which resulted in a hard landing short of the runway.NTSB ERA16LA323Accident · No injuriesLimited investigationFinal reportLearjet 25 · San Juan, PRThe pilot’s improper decision to land the airplane on a wet runway, in heavy rain, with tires worn beyond safe limits, which resulted in a hydroplaning condition and subsequent loss of directional control.NTSB ERA15LA125Accident · No injuriesLimited investigationFinal reportCessna 402C · Isla de Vieques, PRThe pilot's failure to maintain directional control during the landing roll with a strong crosswind, which resulted in a runway excursion.NTSB ERA15CA089Accident · Minor injuriesData collectionFinal reportRobinson Helicopter R44 II · Barranquitas, PRThe pilot's failure to maintain control of the helicopter while landing which resulted in a tailrotor ground strike and collision with terrain.NTSB ERA14CA140Accident · Minor injuriesData collectionFinal reportPiper PA 18-150 · Mayaguez, PRThe pilot's loss of directional control of the airplane during landing, which resulted in a runway excursion.NTSB ERA12CA211Accident · No injuriesData collectionFinal reportCessna 172M · Mayaquez, PRThe pilot did not maintain control of the airplane while landing in crosswind conditions.NTSB ERA11CA433Accident · No injuriesData collectionFinal reportEurocopter AS 350 B3 · Humacao, PRThe pilot's failure to maintain clearance from a building during landing.NTSB ERA10IA384Incident · No injuriesIncident investigationFinal reportCessna 402C · San Juan, PRThe airplane manufacturer’s inadequate inspection procedures, resulting in the undetected fatigue cracking of the right upper barrel and trunnion assembly.NTSB ERA10LA158Accident · 1 fatalLimited investigationFinal reportMonroig Pedro J Rans S-6S · Mayaguez, PRThe sport pilot's failure to maintain adequate airspeed during landing in crosswind conditions resulting in an aerodynamic stall.NTSB ERA10CA051Accident · Minor injuriesData collectionFinal reportRobinson Helicopter R44 · Morovis, PRThe pilot’s delayed attempt to go around.NTSB DCA06FA068Accident · No injuriesField investigationFinal reportBoeing B757-232 · San Juan, PRthe first officer's inadvertent application of full nose-up trim during a prolonged flare, resulting in an excessive pitch angle during landing and subsequent tailstrike. Contributing to the accident was the flight crew's failure to correct the airplane's…NTSB MIA06CA059Accident · No injuriesData collectionFinal reportPiper PA-18 · SanJuan, PRThe pilot's failure to maintain directional control during landing.NTSB MIA05CA009Accident · Serious injuriesData collectionFinal reportRobinson R-22 · Vega Baja, PRThe pilot's failure to select a suitable landing area resulting in a tangled skid with vegetation during an aborted landing and subsequent dynamic roll over.NTSB DCA04MA045Accident · Serious injuriesClass 1 · MajorFinal reportATR 72 · San Juan, PRthe captain's failure to execute proper techniques to recover from the bounced landings and his subsequent failure to execute a go-around.NTSB MIA03LA075Accident · Serious injuriesLimited investigationFinal reportBeech V35B · Humacao, PRthe pilot's failure to maintain directional control during the landing roll, which resulted in the airplane departing the left side of the runway, and impacting with a ditch. Factors in this accident were; the pilot did not follow the procedures, and…NTSB ATL02LA028Accident · Minor injuriesLimited investigationFinal reportPioneer 85 · Lajas, PRThe pilot's decision to attempt a go-around after a hard landing that resulted in the overload failure of the flight control brackets and the loss of flight control. The airplane collided with a building during the attempted go-around.NTSB ATL01LA086Accident · No injuriesLimited investigationFinal reportCessna R172-K · Culebras Island, PRPilots improper flare which resulted in a hard landing.NTSB MIA82DA026Accident · No injuriesClosedCurtis-Wrt C-46 · San Juan, PRNTSB MIA81FKA06Accident · No injuriesClosedCessna 182 · Cabo Rojo, PRNTSB MIA81FKA04Accident · No injuriesClosedPiper PA-34 · Coamo, PRNTSB MIA81FA041Accident · No injuriesClosedBeech G18S · San Juan, PRNTSB MIA81DKA02Accident · No injuriesClosedPiper PA-34 · Colosso Cntral, PRNTSB MIA81FKA01Accident · Serious injuriesClosedCessna 337 · Aguadilla, PRNTSB MIA80FKA11Accident · No injuriesClosedPiper PA-23 · Barceloneta, PRNTSB MIA79FKA10Accident · No injuriesClosedPiper PA-28 · Mayaguez, PRNTSB MIA79FKA08Accident · No injuriesClosedBeech E18S · San Juan, PRNTSB MIA79FKA04Accident · Minor injuriesClosedAerostar 600A · Ponce, PRNTSB MIA79FKA03Accident · No injuriesClosedCessna A185F · Aguadilla, PRNTSB MIA78FA047Accident · No injuriesClosedDouglas DC-6B · San Juan, PRNTSB MIA78DKA04Accident · No injuriesClosedCessna 172 · Utuado, PRNTSB MIA77FA058Accident · No injuriesClosedGrumman G-73 · San Juan, PRNTSB MIA77DKA02Accident · No injuriesClosedGrum Amer AA-1B · Manati, PRNTSB MIA76DKA08Accident · No injuriesClosedCessna 310 · Vieques, PRNTSB MIA76AM035Accident · No injuriesClosedDouglas DC-6B · San Juan, PRNTSB MIA76DKA02Accident · No injuriesClosedCessna 188 · Guayama, PRNTSB MIA75FKA05Accident · Serious injuriesClosedCessna 150 · Adjuntas, PRNTSB MIA74FKA08Accident · No injuriesClosedPiper PA-28 · Culebra, PRNTSB MIA74AM042Accident · No injuriesClosedBeech E18S · San Juan, PRNTSB FTW73AF051Incident · No injuriesClosedLockheed 1011 · San Juan, PRNTSB MIA72IM097Incident · No injuriesClosedConvair 640 · San Juan, PRNTSB MIA72AM090Accident · No injuriesClosedDehavilland DH104 · San Juan, PRNTSB MIA72FKA06Accident · No injuriesClosedPiper PA-23 · Culebra Town, PRNTSB MIA71DM066Accident · No injuriesClosedHiller UH12E4 · Naguabo, PRNTSB MIA71FKA04Accident · No injuriesClosedCessna 177 · San Sebastian, PRNTSB MIA70AM096Accident · No injuriesClosedDouglas DC-3C · San Juan, PR