FAA Wildlife Strike Database
Every Reported Strike Since 1990 — 341,090 Records
The FAA National Wildlife Strike Database (NWSD) — every wildlife strike reported by airlines, airports, and pilots since 1990. 341,090 records covering 952 species across 2,764 airports. Enriched with ClarityStorm-computed damage severity tiers, species risk scoring, seasonal indicators, and engine ingestion flags. From routine Canada goose strikes on final approach to rare but catastrophic engine ingestion events — the complete picture of wildlife risk in US airspace.
Why not download it from FAA directly?
The FAA wildlife strike database is locked behind a JavaScript-heavy web portal (wildlife.faa.gov) with no public bulk download API. Here's what we handled:
- ✓ Full Access database extracted — downloaded Public.accdb (353 MB) via browser automation; exported the STRIKE_REPORTS table to analysis-ready CSV + Parquet
- ✓ PII removed — reporter name and title fields redacted; FAA redacts most personal info in the public release, remaining PII fields dropped
- ✓ Damage labels decoded — mapped N/M/S/D codes to None / Minor / Substantial / Destroyed with ordinal severity tier (0–3)
- ✓ Aircraft class labels — decoded AC_CLASS codes to Airplane / Helicopter / Glider / etc.
- ✓ Engine type labels — decoded engine type codes to Turbofan / Turboprop / Piston / Turboshaft / etc.
- ✓ FAA region names — mapped 8-character region codes (ACE, AEA, AGL, etc.) to full region names
- ✓ Season computed — added Winter/Spring/Summer/Fall from incident month for seasonal analysis
- ✓ Species risk tier — scored each species by mean damage severity × log(strike count); classified as Low / Medium / High / Critical
- ✓ Engine ingestion flag — aggregated individual engine ingestion flags (ING_ENG1–4) into a single
any_engine_ingestionboolean - ✓ Cost buckets — binned inflation-adjusted repair cost into <$1K / $1K–$10K / etc. tiers for categorical analysis
- ✓ Migratory species flag — classified species as migratory based on common name keywords
- ✓ Parquet output — 42.8 MB vs 207.7 MB CSV; columnar storage for fast filtering across 341K rows
⏱ Skip the Access database extraction, code decoding, and risk tier computation. Ready for analysis in minutes.
341,090
Strike Reports
952
Wildlife Species
2,764
Airports Covered
36+
Years of Data
Damage Distribution
Of 341,090 reported strikes — most cause no aircraft damage, but substantial and destroyed-aircraft events drive the economic and safety tail risk.
198,447
58.2% of strikes
17,209
5.0% of strikes
4,388
1.3% of strikes
88
0.03% of strikes
Note: ~121K records (35.5%) have no damage classification reported. Minor includes Minor (8,762) and Minor-uncertain (8,447).
Use Cases
Score airports and flight corridors by species risk tier, damage rate, and strike frequency. Identify which species pose the highest risk to jet engines versus windshields. Build probabilistic risk models by aircraft type, phase of flight, and season.
Identify airports with the highest strike rates and most damaging species. Analyze seasonal strike spikes driven by migration and local bird populations. Benchmark an airport's wildlife risk profile against peer airports in the same FAA region.
Model wildlife strike loss distributions by aircraft type, operator, and airport. Use inflation-adjusted repair cost distributions and out-of-service hour data to estimate expected annual loss exposure. Identify tails — the rare but catastrophic engine ingestion events.
Correlate strike rates with migratory flyways and seasonal bird movement data. Quantify the economic impact of wildlife strikes on the US aviation system. Support environmental assessments for new airport construction or runway expansion near sensitive habitats.
Analyze engine ingestion events (any_engine_ingestion=True) by engine type, aircraft mass, and species size. Identify which aircraft platforms have the highest ingestion-to-damage conversion rates. Support certification testing data for turbine bird ingestion standards.
Train classifiers to predict damage severity from strike conditions (species size, height, phase of flight, speed). Build anomaly detection models to flag unusual strike clusters by airport or date. Develop geospatial risk heatmaps for wildlife activity near runways.
Schema
Single table — faa_wildlife_strikes — 113 fields delivered as CSV + Parquet. Fields marked computed are derived by ClarityStorm from FAA source data.
| Field | Type | Description |
|---|---|---|
| record_id | int | FAA unique strike record identifier |
| incident_date | string | Date of strike (YYYY-MM-DD) |
| incident_year | int | Year of incident (1990–present) |
| incident_month | int | Month of incident (1–12) |
| season | string | Winter / Spring / Summer / Fall (computed from month) |
| time_local | string | Local time of strike (HHMM) |
| time_of_day | string | Day / Night / Dusk / Dawn |
| airport_id | string | FAA airport identifier (ICAO/IATA) |
| airport | string | Airport name |
| state | string | US state abbreviation |
| faa_region | string | FAA region code (ACE, AEA, AGL, ANE, etc.) |
| faa_region_name | string | FAA region full name (computed) |
| airport_latitude | float | Airport latitude (WGS 84) |
| airport_longitude | float | Airport longitude (WGS 84) |
| operator | string | Airline or operator name |
| aircraft | string | Aircraft make and model (e.g. B-737-300) |
| ac_class | string | Aircraft class code |
| ac_class_label | string | Aircraft class label: Airplane / Helicopter / Glider / etc. (computed) |
| ac_mass | int | Aircraft mass category (1–5, light to heavy) |
| engine_type | string | Engine type code |
| engine_type_label | string | Engine type: Turbofan / Turboprop / Piston / etc. (computed) |
| num_engines | int | Number of engines |
| phase_of_flight | string | Phase of flight: Approach / Takeoff Run / Landing Roll / En Route / etc. |
| height_agl_ft | float | Height above ground level in feet at time of strike |
| speed_kts | float | Aircraft speed in knots at time of strike |
| sky_condition | string | Sky condition: Clear / Some Cloud / Overcast / Fog |
| precipitation | string | Precipitation: None / Rain / Snow / Fog |
| species_id | string | FAA species identifier code |
| species | string | Wildlife common name (e.g. Canada goose, Red-tailed hawk) |
| wildlife_size | string | Small / Medium / Large |
| wildlife_size_label | string | Wildlife size full label (computed) |
| is_migratory_species | bool | Whether species is typically migratory (computed) |
| species_risk_score | float | Risk score = mean_severity × log(strike_count) (computed) |
| species_risk_tier | string | Low / Medium / High / Critical — based on damage rate and frequency (computed) |
| num_wildlife_seen | int | Number of animals seen |
| num_wildlife_struck | int | Number of animals actually struck |
| damage | string | Damage code: N=None, M=Minor, S=Substantial, D=Destroyed |
| damage_label | string | None / Minor / Substantial / Destroyed (computed) |
| damage_severity_tier | int | 0=None, 1=Minor, 2=Substantial, 3=Destroyed (computed ordinal) |
| has_damage | bool | Whether strike caused aircraft damage (computed) |
| any_engine_ingestion | bool | Whether any engine ingested wildlife (computed) |
| indicated_damage | bool | Whether damage was indicated on the strike report |
| effect | string | Effect on flight: None / Engine Shutdown / Aborted Takeoff / Emergency Landing / etc. |
| cost_repairs_usd | float | Repair cost in current USD |
| cost_repairs_infl_adj_usd | float | Repair cost inflation-adjusted to current dollars |
| cost_bucket | string | None / <$1K / $1K–$10K / $10K–$100K / $100K–$1M / $1M+ (computed) |
| num_injuries | int | Number of human injuries resulting from strike |
| num_fatalities | int | Number of fatalities resulting from strike |
| pilot_warned | bool | Whether pilot was warned of wildlife before strike |
| remains_collected | bool | Whether wildlife remains were collected |
| remains_sent_to_smithsonian | bool | Whether remains were sent to Smithsonian for species ID |
| aircraft_out_of_service_hrs | float | Hours aircraft was out of service due to strike |
| distance_from_airport_nm | float | Distance from airport at time of strike (nautical miles) |
| incident_latitude | float | Incident latitude (WGS 84) |
| incident_longitude | float | Incident longitude (WGS 84) |
| report_source | string | Report source: Air Transport / General Aviation / Military / etc. |
| last_updated | string | Date record was last updated in FAA database |
Quick Start
import pandas as pd
df = pd.read_parquet("faa_wildlife_strikes.parquet")
# Top 10 most dangerous species (Critical risk tier)
critical = df[df["species_risk_tier"] == "Critical"]
print(critical.groupby("species")[["record_id", "damage_severity_tier"]].agg(
strikes=("record_id", "count"),
mean_severity=("damage_severity_tier", "mean")
).sort_values("mean_severity", ascending=False).head(10))
# Engine ingestion events by aircraft type
ingested = df[df["any_engine_ingestion"] == True]
print(ingested.groupby("ac_class_label")["record_id"].count().sort_values(ascending=False))
# Strike rate by phase of flight
print(df.groupby("phase_of_flight")["record_id"].count().sort_values(ascending=False).head(10))
# Seasonal patterns — strikes by species and season
seasonal = df.groupby(["season", "species_risk_tier"])["record_id"].count().unstack(fill_value=0)
print(seasonal)
# Airports with most substantial/destroyed damage strikes
severe = df[df["damage_severity_tier"] >= 2]
print(severe.groupby("airport")["record_id"].count().sort_values(ascending=False).head(15))
# Inflation-adjusted cost distribution for damaging strikes
damaged = df[df["has_damage"] == True]
print(damaged["cost_bucket"].value_counts())
print(f"Total estimated repair cost: ${damaged['cost_repairs_infl_adj_usd'].sum():,.0f}")Pairs Well With
Join wildlife strike records with NTSB accident investigations to identify strikes that contributed to accidents. Analyze the escalation path from strike → damage → incident → accident.
Cross-reference strike species with USGS breeding bird survey and migration pattern data to build seasonal wildlife risk models by flyway and airport location.
Pricing
$99
Full dataset — 341,090 records, 113 fields, 1990–present, CSV + Parquet
Commercial License
Buy CompleteData Provenance
Source: Federal Aviation Administration — National Wildlife Strike Database (NWSD). Operated by FAA's Office of Airports (ARP), Airport Safety & Standards (AAS). Available at wildlife.faa.gov.
Coverage: All reported wildlife strikes submitted by US airlines, airport operators, pilots, and other parties from 1990 to present. 341,090 records across 2,764 airports in all 50 US states plus territories and international locations. 952 distinct wildlife species identified.
Update cadence: The FAA NWSD is updated continuously as new strikes are reported. ClarityStorm refreshes the dataset annually to capture the latest strike reports.
License: FAA wildlife strike data is a US federal government work in the public domain under 17 U.S.C. § 105. ClarityStorm's derived fields and structured compilation are provided under a commercial license for paid tiers.
Processing: Downloaded the FAA Public.accdb Access database (353 MB, updated March 2026), exported the STRIKE_REPORTS table (341,090 rows, 94 source fields), removed PII fields, decoded categorical codes, computed enriched fields (season, damage_severity_tier, species_risk_tier, cost_bucket, engine ingestion flags), and output to CSV + Parquet.