Defining event in
95 cases
In the sequence of
104 cases
Fatal cases
5
NTSB code
320

NTSB has coded findings and defining events since 2008. Earlier cases used its older occurrence and cause codes, so they aren’t counted here.

When and where

In green, cases where it was the defining event; in gray, cases where it came elsewhere in the sequence. The map shows the cases where it was the defining event. Events are coded with the final report, so the latest years are incomplete.

Cases per year

2008Defining eventElsewhere in the sequence2026
Cases with Runway incursion veh/AC/person per year: 104 cases
20088
20097
20101
20114
20124
20133
20141
20156
20168
20171
20183
20192
20201
20215
20222
202310
202413
202515
202610
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT e.case_mkey) AS cases,
    count(DISTINCT e.case_mkey) FILTER (WHERE e.\"isDefiningEvent\") AS defining
  FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = e.case_mkey
  WHERE e.\"tier2Number\" = '320' AND e.case_mkey IN (SELECT case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"isDefiningEvent\")
  GROUP BY 1
  ORDER BY 1"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

In these cases

Query with SQL
duckdb -csv -c "WITH defining AS (SELECT * FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"tier2Number\" = '320' AND \"isDefiningEvent\")
  SELECT * FROM (
  SELECT 'Phase of flight' AS kind, e.\"tier1Number\" AS code, max(e.\"eventTier1Name\") AS name, count(DISTINCT e.case_mkey) AS cases
  FROM defining e
  GROUP BY ALL
  UNION ALL
  SELECT 'Finding in the probable cause', left(f.\"findingCode\", 8), max(f.\"tier4Name\"), count(DISTINCT f.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f ON f.case_mkey = e.case_mkey AND f.aircrafts_position = e.aircrafts_position AND f.\"inProbableCause\"
  WHERE f.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT e.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = e.case_mkey AND a.position = e.aircrafts_position
  LEFT JOIN 'https://openairdocs.org/data/latest/faa_aircraft_model.parquet' m ON m.code = a.aircraft_model_code
  WHERE a.aircraft_model_code IS NOT NULL
  GROUP BY ALL
  )
  QUALIFY row_number() OVER (PARTITION BY kind ORDER BY cases DESC) <= 10
  ORDER BY kind, cases DESC"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

Newest cases · 95

NTSB DCA27WA012Incident · No injuriesClass 5 · ForeignAirbus A320 · Townsville, AustraliaOct 7, 2026 · VH-VGO · No damageNTSB DCA26WA369IncidentClass 5 · ForeignBoeing 737 · Aeropuerto de Lanzarote, SpainSep 28, 2026 · EI-IKJ · 2 aircraftNTSB DCA26WA373IncidentClass 5 · ForeignAirbus A330 · Tunis, TunisiaSep 21, 2026 · EC-NCK · 2 aircraftNTSB DCA26WA335IncidentClass 5 · ForeignAirbus A320 · Guarulhos, BrazilAug 15, 2026 · PR-MRM · 3 aircraftNTSB DCA26WA332IncidentClass 5 · ForeignBoeing 737 · Mascot, AustraliaAug 9, 2026 · VH-IJO · 2 aircraftNTSB DCA26WA260Incident · No injuriesClass 5 · ForeignBoeing 767-34AF · Singapore, SingaporeJul 1, 2026 · N314UP · 2 aircraft · No damageNTSB DCA26LA242Incident · No injuriesClass 3 · LimitedPreliminary reportAirbus Industrie A319-114 · Boston, MAOn June 20, 2026, about 1134 eastern daylight time (EDT), Delta Air Lines flight 2351 (DAL2351), an Airbus A319, and American Airlines flight 3161 (AAL3161), a Boeing 737-800, were involved in a runway incursion that resulted in a go-around of DAL2351 at…Jun 20, 2026 · N328NB · 2 aircraft · No damageNTSB DCA26WA220Occurrence · No injuriesClass 5 · ForeignBoeing 737-832 · San Miguel de Cozumel, MexicoMar 25, 2026 · N3734B · 2 aircraft · No damageNTSB DCA26MA161Accident · 2 fatalClass 1 · MajorPreliminary reportMitsubishi CL-600 · New York, NYOn March 22, 2026, at 2337 eastern daylight time, Jazz Aviation LP flight 646 (doing business as Air Canada flight 8646), an MHI (Mitsubishi Heavy Industries) RJ Aviation (formerly Bombardier) CL-600-2D24 (CRJ-900) airplane, registration C-GNJZ, was…Mar 23, 2026 · C-GNJZ · Substantial damageNTSB DCA26WA120Incident · No injuriesClass 5 · ForeignBoeing 737 · Melbourne Airport, AustraliaFeb 16, 2026 · ZK-TXB · No damage
See all 95 cases
Query with SQL
duckdb -csv -c "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 e.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e WHERE e.\"isDefiningEvent\" AND e.\"tier2Number\" = '320')
  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.