NTSB investigations, Outside the U.S.
171 cases where the phase of flight was Taxi.
Cases per year
| 1964 | 2 |
|---|---|
| 1965 | 3 |
| 1966 | 2 |
| 1967 | 1 |
| 1968 | 1 |
| 1970 | 4 |
| 1971 | 2 |
| 1972 | 4 |
| 1973 | 4 |
| 1974 | 1 |
| 1975 | 2 |
| 1976 | 3 |
| 1977 | 2 |
| 1978 | 3 |
| 2008 | 1 |
| 2010 | 2 |
| 2011 | 2 |
| 2012 | 4 |
| 2013 | 7 |
| 2014 | 2 |
| 2015 | 7 |
| 2016 | 7 |
| 2017 | 6 |
| 2018 | 8 |
| 2019 | 4 |
| 2020 | 6 |
| 2021 | 12 |
| 2022 | 12 |
| 2023 | 16 |
| 2024 | 11 |
| 2025 | 18 |
| 2026 | 12 |
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.\"eventCountry\" <> 'USA'
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 250)
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."eventCountry" <> 'USA'
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 250)
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 DCA26WA373IncidentClass 5 · ForeignAirbus A330 · Tunis, TunisiaNTSB DCA26WA345IncidentClass 5 · ForeignBoeing 787 · Singapore, SingaporeNTSB GAA26WA307Accident · No injuriesClass 5 · ForeignBeech C90 · Belo Horizonte, BrazilNTSB DCA26WA325Occurrence · No injuriesForeign investigationBoeing 737 · Chisinau, MoldovaNTSB DCA26WA344IncidentForeign investigationBoeing 737 · Mascot, AustraliaNTSB DCA26WA330Accident · Serious injuriesClass 5 · ForeignAirbus A321 · Mascot, AustraliaNTSB DCA26WA275IncidentClass 5 · ForeignBoeing 737 · Dorval, CanadaNTSB DCA26WA273Accident · No injuriesClass 5 · ForeignDouglas DC9 · Dachi Su, KyrgyzstanNTSB DCA26WA272IncidentClass 5 · ForeignBoeing 787 · Pasay City, PhilippinesNTSB DCA26WA260Incident · No injuriesClass 5 · ForeignBoeing 767-34AF · Singapore, SingaporeNTSB DCA26WA140IncidentClass 5 · ForeignBombardier CL-600-2C10 · North Eleuthera, BahamasNTSB DCA26WA119Accident · No injuriesClass 3 · ForeignBoeing 737 · Antalya, TürkiyeNTSB GAA26WA032Accident · No injuriesClass 5 · ForeignPilatus PC24 · Lago Sul, BrazilNTSB DCA26WA034IncidentClass 5 · ForeignBoeing 787 · Pasay City, PhilippinesNTSB GAA26WA011Accident · No injuriesClass 4 · ForeignCessna 172 · Morona Santiago, EcuadorNTSB DCA26WA010Incident · No injuriesClass 5 · ForeignBoeing 767 · Ezeiza, ArgentinaNTSB GAA26WA054Accident · No injuriesClass 4 · ForeignCessna 185 · Rafaela, ArgentinaNTSB GAA25WA277Accident · No injuriesClass 4 · ForeignPiper PA46 · Bibai City, JapanNTSB DCA25WA335IncidentClass 5 · ForeignEmbraer ERJ190 · Gran Canaria, SpainNTSB DCA25WA311Incident · No injuriesClass 5 · ForeignBoeing 787 · Helsinki, FinlandNTSB GAA25WA231AccidentClass 5 · ForeignPiper PA-28-181 · Gloucestershire, United KingdomNTSB ENG25WA041Incident · No injuriesClass 5 · ForeignAirbus A320 · Pudahuel, ChileNTSB DCA25WA280Incident · No injuriesClass 5 · ForeignBoeing 777 · Singapore, SingaporeNTSB GAA25WA174Incident · No injuriesClass 5 · ForeignPiper PA34 · Karachi, PakistanNTSB DCA25WA224IncidentClass 5 · ForeignBoeing 737 · Singapore, SingaporeNTSB DCA25WA204OccurrenceClass 5 · ForeignEmbraer 145-LR · Port Royal, BahamasNTSB DCA25WA158IncidentClass 5 · ForeignBoeing 737-8MAX 200 · Marrakesh, MadagascarNTSB GAA25WA106Incident · No injuriesClass 4 · ForeignSling LSA · Melbourne, AustraliaNTSB DCA25WA086Accident · No injuriesClass 5 · ForeignBoeing 737 · Copenhagen, DenmarkNTSB GAA25WA071Accident · No injuriesClass 5 · ForeignSocata TB9 · Visby, SwedenNTSB GAA25WA092Accident · Minor injuriesClass 5 · ForeignMD Helicopter 500 · Uppsala, SwedenNTSB DCA25WA011Incident · No injuriesClass 4 · ForeignBoeing 737 · Deli Serdang, IndonesiaNTSB DCA24WA315Incident · No injuriesClass 5 · ForeignBoeing 737 · Buenos Aires, ArgentinaNTSB DCA24WA260IncidentClass 4 · ForeignBoeing 767-322 · Geneva, SwitzerlandNTSB DCA24WA226IncidentClass 5 · ForeignBoeing 777 · Ho Chi Minh, VietnamNTSB DCA24WA248IncidentClass 5 · ForeignBoeing 737 · Nouaceur, MoroccoNTSB GAA24WA172AccidentClass 4 · ForeignCessna 206 · Sentvid pri Sticni, SloveniaNTSB ENG24WA025Incident · No injuriesClass 5 · ForeignATR ATR42 · San Andrés, ColombiaNTSB GAA24WA243Accident · No injuriesClass 5 · ForeignPiper PA28R · County Durham, United KingdomNTSB DCA24WA070IncidentClass 5 · ForeignBoeing 737 · Copenhagen, DenmarkNTSB DCA24WA057OccurrenceClass 5 · ForeignBoeing 737 · Dhaka, BangladeshNTSB GAA24WA068Accident · 4 fatalClass 5 · ForeignCessna 210 · Guayaibi, ParaguayNTSB DCA24WA031Incident · No injuriesClass 5 · ForeignBombardier CL600 2D24 · Okiyakpu, NigeriaNTSB DCA24WA009IncidentClass 5 · ForeignBoeing 737 · Marrakesh, MoroccoNTSB DCA24WA004OccurrenceClass 5 · ForeignBoeing 737 · London, United KingdomNTSB DCA23WA461Incident · No injuriesClass 5 · ForeignEmbraer S A ERJ 190-200 IGW · Nairobi, KenyaNTSB DCA23WA449Incident · No injuriesClass 5 · ForeignBoeing 737 · Lahore, PakistanNTSB DCA23WA431AccidentClass 5 · ForeignAirbus A330-941 · Paris, FranceNTSB GAA23WA240IncidentClass 4 · ForeignPiper PA-31-350 · North Eleuthera, BahamasNTSB DCA23WA393Incident · No injuriesClass 5 · ForeignBoeing 767 · São Tomé, São Tomé & Príncipe