Technical writing
USDA FSIS Food Safety Data: The Federal Recall Database and Inspection Records Behind Meat, Poultry, and Egg Safety
The USDA Food Safety and Inspection Service maintains continuous federal oversight of every beef slaughter line, turkey processing plant, and ready-to-eat deli meat facility in the United States. When that oversight fails—when Salmonella contaminates a poultry facility, when downer cattle enter the beef supply, when Listeria colonizes a ready-to-eat plant—the agency publishes the record. Recall announcements, pathogen test results, and establishment inspection data are all publicly available as downloadable CSV files. This is how to read them.
This article covers what FSIS is and how it differs from FDA jurisdiction, the three recall hazard classes and the mechanics of how a voluntary recall becomes mandatory, the landmark recall cases that define the outer edges of the system's failures, how FSIS pathogen testing programs work and why E. coli O157:H7 has zero-tolerance adulterant status, what the establishment data file contains and how inspectors generate noncompliance records, the foodborne illness surveillance networks that connect FSIS data to CDC mortality counts, import re-inspection authorities, and a Python walkthrough for analyzing the bulk recall dataset.
What FSIS is—and what it is not
The Food Safety and Inspection Service is a regulatory agency within the US Department of Agriculture. Its statutory authority derives primarily from the Federal Meat Inspection Act of 1906, the Poultry Products Inspection Act of 1957, and the Egg Products Inspection Act of 1970. FSIS is responsible for the safety and correct labeling of meat (beef, pork, lamb, veal, bison, and other amenable species), poultry (chicken, turkey, duck, goose, guinea, and squab), and egg products—liquid, frozen, and dried eggs processed from shell eggs. The agency deploys approximately 7,000 inspection personnel across roughly 6,000 federally inspected establishments.
Federal law requires a continuous inspector presence during all slaughter operations. Every animal condemned on the slaughter floor is examined by an FSIS veterinary inspector before and after slaughter—this is the ante-mortem and post-mortem inspection regime that has been mandatory since the 1906 Act. Processing establishments that do not slaughter receive periodic rather than continuous inspection, but the inspector assignment is still federally employed and present on a regular schedule set by FSIS task scheduling systems.
The boundary between FSIS and FDA jurisdiction is specific and consequential for analysts. The FDA—through its Center for Food Safety and Applied Nutrition— regulates all other food: produce, seafood (except catfish, which moved to FSIS jurisdiction in 2016), dairy products, shell eggs (before they are broken and processed), and the vast majority of packaged processed foods. A ground beef burger falls under FSIS. The bun it is served on falls under FDA. A can of chicken soup falls under FSIS. A can of tomato soup falls under FDA. Catfish, unusually, was transferred to FSIS jurisdiction by the 2008 Farm Bill after years of dispute over Vietnamese catfish imports. When researchers cross-reference food recall data, the jurisdictional split means that FSIS data and FDA data must be treated as separate corpora: a single FDA data pull will not include any FSIS-regulated product recalls.
The primary pathogens of regulatory concern for FSIS-regulated products are Salmonella, E. coli O157:H7 and other Shiga toxin-producing E. coli (STEC), and Listeria monocytogenes. Each pathogen has a distinct regulatory treatment, a distinct enforcement threshold, and a distinct testing program, as described below. FSIS enforcement tools include voluntary and mandatory recalls, Notices of Intended Enforcement (NOIE), and suspension or withdrawal of the grant of inspection—effectively shutting a plant down. Withdrawal of inspection is the most severe sanction, as no federally inspected product can leave a facility without an active grant of inspection.
The recall database
FSIS publishes a searchable recall database at fsis.usda.gov/recalls and provides the full archive as a downloadable CSV file through its open data portal. The database goes back decades and records approximately 150 recall actions per year, though the count varies substantially with food safety events and with the agency's enforcement posture in any given year.
Every recall is assigned one of three hazard classes. A Class I recall applies when there is a reasonable probability that the use of or exposure to a violative product will cause serious adverse health consequences or death. This is the most severe classification—it covers E. coli O157:H7 contamination, Listeria monocytogenes in ready-to-eat products, and undeclared allergens that could trigger anaphylaxis. A Class II recall covers situations where adverse health consequences are remote but possible— Salmonella contamination below threshold levels, labeling errors involving non-life- threatening ingredients, or process deviations that have a low probability of producing a pathogen. A Class III recall involves products that are unlikely to cause any adverse health consequence—typically packaging errors, minor mislabeling, or deviations from standards of identity that do not affect safety.
Nearly all FSIS recalls are voluntary: the producing establishment initiates the recall after notification from FSIS or after its own testing reveals a problem. Mandatory recall authority for meat and poultry was granted by the 2008 Farm Bill and has been used sparingly. FSIS can order a mandatory recall when a company refuses to voluntarily recall a product the agency has determined is adulterated or misbranded and poses a significant public health risk. In practice, the threat of mandatory action is usually sufficient to secure voluntary compliance—a mandatory recall is a significant reputational and legal event for any establishment.
Two recall events define the outer boundaries of scale in the FSIS record. In February 2008, Hallmark/Westland Meat Packing Company in Chino, California, recalled 143 million pounds of beef—the largest beef recall in US history. The trigger was undercover footage showing “downer” cattle (animals too ill or injured to walk) being processed for human food, a practice prohibited since 2004 following the BSE (bovine spongiform encephalopathy) crisis. The product had already been distributed and largely consumed; the recall was largely symbolic in its food safety effect but resulted in the company ceasing operations. In August 2011, Cargill Meat Solutions recalled approximately 36 million pounds of ground turkey contaminated with Salmonella Heidelberg after one death and 136 confirmed illnesses across 34 states. The Cargill recall was notable for the persistence of the outbreak—illness continued after the initial recall announcement, leading to an expanded recall—and for the strain's resistance to multiple antibiotics, a factor in the severity of illnesses. Between 2019 and 2021, a series of E. coli O157:H7 contamination events in ground beef products, some linked to Lakewood ranch operations in Colorado, resulted in multiple recalls totaling tens of millions of pounds and prompted FSIS to strengthen its sampling protocols for ground beef.
Pathogen testing programs
FSIS operates several distinct pathogen testing programs, each with its own regulatory logic and published data stream.
E. coli O157:H7 and STEC. In 1994, FSIS declared E. coli O157:H7 an adulterant in raw ground beef—meaning that any raw ground beef testing positive for O157:H7 is by definition adulterated and cannot legally enter commerce. A single positive test triggers a recall of all product produced under the same conditions during the same production period. In 2012, FSIS extended adulterant status to six additional non-O157 STEC serogroups: O26, O45, O103, O111, O121, and O145. These strains together account for the majority of STEC illness cases in the United States outside of O157:H7. The zero-tolerance adulterant standard means there is no acceptable pathogen level—the regulatory analysis does not weigh concentration or dose; any confirmed positive is actionable.
Salmonella performance standards. Unlike E. coli O157:H7, Salmonella is not treated as a zero-tolerance adulterant in raw meat. Instead, FSIS sets performance standards: maximum acceptable prevalence rates above which a plant is considered to be failing its process control obligations. For broiler chicken carcasses, the current performance standard is 15.4 percent—no more than 15.4 percent of FSIS samples from a given establishment may test positive for Salmonella. Establishments that exceed the standard over a rolling sample window receive a Notice of Intended Enforcement and must take corrective action; failure to improve can lead to suspension of inspection. Performance standards vary by product category: comminuted turkey, ground beef, and not-ready-to-eat chicken parts each have their own prevalence threshold. FSIS publishes quarterly Salmonella and Campylobacter testing results by establishment, making it possible to track individual plant performance over time.
Listeria monocytogenes in ready-to-eat products.Listeria is a particular concern in ready-to-eat (RTE) products—deli meats, hot dogs, and other fully cooked items consumed without additional cooking. Unlike raw products where cooking is expected to kill pathogens, RTE products carry the organism all the way to the consumer. FSIS conducts environmental monitoring in RTE plants, swabbing surfaces, drains, and equipment to detect Listeria in the production environment before it reaches product. A positive environmental sample triggers investigation and corrective action; a positive product sample triggers a Class I recall. The agency publishes environmental monitoring results as part of its quarterly microbiological testing releases.
GenomeTrakr and whole-genome sequencing. Since 2012, FSIS has participated in the FDA-led GenomeTrakr network, which uses whole-genome sequencing (WGS) to create high-resolution genetic fingerprints of pathogen isolates. GenomeTrakr sequences are deposited in NCBI's public database, allowing epidemiologists to link outbreak patient isolates to specific isolates recovered during FSIS plant testing with far greater precision than the older pulsed-field gel electrophoresis (PFGE) method. When a cluster of Salmonella illnesses appears in CDC's PulseNet surveillance network, WGS matching can identify the specific sequence type within days and, if a matching sequence is in GenomeTrakr's plant sample database, can trace it to a specific establishment, production date, and product lot. This genomic traceability capacity has dramatically accelerated FSIS recall investigations: outbreak-to-recall timelines that took months under PFGE can now be measured in days under WGS.
FSIS also operates the Salmonella Initiative Program (SIP), a voluntary framework through which establishments can pursue more intensive Salmonella testing and process control in exchange for reduced mandatory agency sampling. SIP plants that maintain low prevalence over extended periods earn operational flexibility. The program's participation and outcome data are publicly available as part of the FSIS open data release schedule.
Establishment inspection data
FSIS maintains the Establishment Inspection Activity System (EIAS), which tracks all approximately 6,000 federally inspected establishments: slaughterhouses, processing plants, cold storage facilities, and egg product plants. The agency publishes a downloadable Establishments.csv through its open data portal at fsis.usda.gov/science-data/data-sets-visualizations. Each row in the file represents one establishment and includes the establishment number (a unique FSIS identifier), the company name, street address, city, state, ZIP code, the grant date of inspection, the activities conducted (slaughter, processing, or both), and the species covered by the grant (beef, pork, poultry, egg products, and so forth).
The establishment number is the key that links across FSIS datasets. Recall announcements reference establishment numbers. Pathogen testing results are published by establishment number. Import re-inspection data is indexed by establishment. Cross-referencing the establishment file against the recall archive and the pathogen testing results allows analysts to build a compliance profile for any individual plant across multiple regulatory dimensions.
When an FSIS inspector observes a regulatory violation during routine inspection— a sanitation failure, a temperature deviation, an ante-mortem or post-mortem inspection discrepancy—the inspector issues a Noncompliance Record (NR). The NR is a written documentation of the specific violation, the regulatory citation, and the corrective action required. NRs are the granular inspection record below the level of public enforcement actions. While individual NRs are not routinely published, they are available through FOIA requests. Researchers studying food safety compliance culture have used FOIA-obtained NR databases to analyze violation patterns by establishment type, species, and inspection district.
Foodborne illness: the surveillance networks linking FSIS data to health outcomes
The CDC estimates that approximately 48 million Americans experience foodborne illness each year, resulting in 128,000 hospitalizations and roughly 3,000 deaths. FSIS-regulated products account for a substantial share of the most serious cases. CDC's burden estimates attribute approximately 1.4 million Salmonella illnesses annually to all sources, roughly 73,000 E. coli O157:H7 illnesses, and approximately 1,600 Listeria monocytogenes illnesses—a smaller number but a much higher case fatality rate, estimated at 20 to 30 percent.
CDC FoodNet is the primary active surveillance system for foodborne illness. It operates in ten sites covering approximately 10 percent of the US population, collecting laboratory-confirmed cases of infection with key foodborne pathogens including Salmonella, STEC, Listeria, Campylobacter, Vibrio, and others. FoodNet publishes annual incidence estimates that allow trend analysis: whether pathogen rates are rising or falling over time, and how incidence varies by region and demographic group. FSIS uses FoodNet trend data to evaluate whether its pathogen reduction interventions are working at the population level.
PulseNet is the national laboratory network that detects outbreak clusters in near real time. Public health laboratories sequence pathogen isolates from human clinical cases and upload the results to a central database maintained by CDC. When multiple cases cluster by genomic sequence, PulseNet analysts flag the cluster for investigation. That investigation typically involves interviews with case patients to identify common food exposures, and coordination with FSIS, FDA, and state health departments to trace the food supply chain. PulseNet previously used PFGE for fingerprinting; WGS has largely replaced it since 2019, and the GenomeTrakr plant sample database provides the environmental correlate that links clinical clusters to specific processing facilities.
Outbreak investigations are conducted jointly by FSIS, CDC, and FDA depending on the implicated product category. For a ground beef outbreak, FSIS leads the traceback investigation in the meat supply chain while CDC coordinates the epidemiological investigation. For a multi-commodity outbreak with potential cross-contamination, FDA may also be involved if any implicated products fall under its jurisdiction.
Import re-inspection
FSIS exercises re-inspection authority over all meat, poultry, and egg products entering the United States from abroad. The agency re-inspects approximately 10 percent of imported shipments, focusing on physical examination, labeling verification, and sampling for pathogen and chemical residues. Only countries that FSIS has determined maintain a food safety inspection system equivalent in effectiveness to the US system are eligible to export FSIS-regulated products to the US market. FSIS conducts periodic foreign equivalence audits in approved exporting countries and publishes its country eligibility lists at fsis.usda.gov.
The largest suppliers of imported beef to the US are Australia, Canada, and Brazil. Australia and Canada have been approved exporters for decades under longstanding bilateral equivalence agreements. Brazil's eligibility has been subject to periodic review following audit findings about its inspection infrastructure. European beef faces effective prohibition due to the longstanding dispute over the EU's ban on growth-promoting hormones used in US cattle production—the EU does not use these hormones and has contested their safety, while the US maintains they are safe. Chinese poultry has faced a series of historical bans related to avian influenza concerns and unresolved equivalence determinations; Chinese-origin poultry processed from third-country birds was authorized for import in 2013 but faced significant domestic political resistance.
Import rejection data—shipments that fail re-inspection at the port of entry—is published by FSIS as part of its open data release. Analysts interested in food safety compliance by country of origin can link rejection records to the establishment eligibility list to track which exporting plants have repeat violations.
Data access
FSIS open data lives at fsis.usda.gov/science-data/data-sets-visualizations. The portal publishes CSV downloads for the recall archive, the establishment file, quarterly Salmonella and Campylobacter testing results by establishment, import re-inspection results, and the SIP participation data. There is no public REST API; all access is through direct file download. The CSVs are machine-readable and load directly into pandas with a single pd.read_csv() call, though column names and encodings can vary between file versions and require normalization before analysis.
The recall archive CSV includes the recall date, the producing establishment number and name, the product description, the reason for recall (which typically names the pathogen or the specific regulatory violation), the recall class (I, II, or III), and the volume in pounds. Volume figures are often estimates and should be treated as such—the producing establishment provides the initial estimate, which may be revised as the investigation proceeds. The pathogen field is free text, not a controlled vocabulary, so analysts must apply pattern matching to classify records by pathogen type.
Noncompliance Records are not routinely published but are available through the FOIA process. FSIS typically responds to NR requests within 20 business days for routine requests; multi-establishment, multi-year requests may take significantly longer. Several academic research groups have built systematic NR databases through repeated FOIA requests and have published analyses of inspection violation patterns.
Python: analyzing the FSIS recall dataset
The following script downloads the FSIS recall archive CSV, normalizes column names, filters to Class I recalls between 2010 and 2024, classifies each recall by pathogen (E. coli, Salmonella, Listeria, or other), computes annual recall counts by pathogen, aggregates pounds recalled by year, identifies the years with the largest total recalled volume, and breaks down recall events by species or inferred product type. The script handles the encoding variability and column name inconsistency common in FSIS file releases.
import requests
import io
import pandas as pd
from collections import defaultdict
# ---------------------------------------------------------------
# 1. Download the FSIS recall dataset CSV
# Published at: https://www.fsis.usda.gov/science-data/data-sets-visualizations
# Direct CSV endpoint (as of 2024; verify URL against FSIS open data page):
# ---------------------------------------------------------------
RECALL_CSV_URL = (
"https://www.fsis.usda.gov/sites/default/files/media_file/"
"documents/Recall-Case-Archive.csv"
)
def fetch_fsis_recalls(url=RECALL_CSV_URL):
"""Download the FSIS recall archive CSV and return a DataFrame."""
resp = requests.get(url, timeout=60)
resp.raise_for_status()
# FSIS CSVs are typically UTF-8 or latin-1 encoded
try:
df = pd.read_csv(io.StringIO(resp.content.decode("utf-8")), low_memory=False)
except UnicodeDecodeError:
df = pd.read_csv(io.StringIO(resp.content.decode("latin-1")), low_memory=False)
return df
recalls = fetch_fsis_recalls()
print("Columns:", list(recalls.columns))
print("Total recall records:", len(recalls))
# ---------------------------------------------------------------
# 2. Normalise key columns
# Column names vary across FSIS file versions; adjust if needed.
# Typical columns: 'Recall Date', 'Recall Class', 'Product', 'Company',
# 'Reason', 'Pounds Recalled', 'Species'
# ---------------------------------------------------------------
# Standardise column names to lowercase-underscore
recalls.columns = (
recalls.columns
.str.strip()
.str.lower()
.str.replace(r"[^a-z0-9]+", "_", regex=True)
.str.strip("_")
)
# Parse recall date
date_col = next((c for c in recalls.columns if "date" in c), None)
if date_col:
recalls["recall_date"] = pd.to_datetime(recalls[date_col], errors="coerce")
recalls["year"] = recalls["recall_date"].dt.year
# Normalise recall class to uppercase stripped string
class_col = next((c for c in recalls.columns if "class" in c), None)
if class_col:
recalls["recall_class"] = recalls[class_col].astype(str).str.upper().str.strip()
# Normalise pounds recalled to numeric
pounds_col = next((c for c in recalls.columns if "pound" in c), None)
if pounds_col:
recalls["pounds"] = pd.to_numeric(
recalls[pounds_col].astype(str).str.replace(",", ""), errors="coerce"
)
# Identify reason / pathogen text column
reason_col = next((c for c in recalls.columns if "reason" in c), None)
# Identify species column
species_col = next((c for c in recalls.columns if "species" in c or "product_type" in c), None)
# ---------------------------------------------------------------
# 3. Filter to Class I recalls, 2010-2024
# ---------------------------------------------------------------
class_i = recalls[
(recalls["recall_class"].str.startswith("CLASS I") | recalls["recall_class"].str.startswith("I"))
& recalls["year"].between(2010, 2024)
].copy()
print("Class I recalls 2010-2024:", len(class_i))
# ---------------------------------------------------------------
# 4. Categorise by pathogen (E. coli, Salmonella, Listeria, other)
# ---------------------------------------------------------------
def classify_pathogen(text):
if not isinstance(text, str):
return "Other"
t = text.lower()
if "e. coli" in t or "e.coli" in t or "escherichia" in t or "stec" in t or "shiga" in t:
return "E. coli"
if "salmonella" in t:
return "Salmonella"
if "listeria" in t or "lm" in t:
return "Listeria"
return "Other"
if reason_col:
class_i["pathogen"] = class_i[reason_col].apply(classify_pathogen)
else:
class_i["pathogen"] = "Other"
# Annual Class I recall count by pathogen
annual_pathogen = (
class_i
.groupby(["year", "pathogen"])
.size()
.unstack(fill_value=0)
.sort_index()
)
print("\nAnnual Class I recalls by pathogen:")
print(annual_pathogen.to_string())
# ---------------------------------------------------------------
# 5. Pounds recalled by year
# ---------------------------------------------------------------
if "pounds" in class_i.columns:
pounds_by_year = (
class_i
.groupby("year")["pounds"]
.sum()
.sort_index()
)
print("\nPounds recalled per year (Class I, 2010-2024):")
for yr, lbs in pounds_by_year.items():
print(" " + str(int(yr)) + ": " + "{:,.0f}".format(lbs) + " lbs")
largest_year = pounds_by_year.idxmax()
print("\nLargest recall volume year:", int(largest_year),
" ({:,.0f} lbs)".format(pounds_by_year[largest_year]))
# ---------------------------------------------------------------
# 6. Species breakdown of Class I recall events
# ---------------------------------------------------------------
if species_col and species_col in class_i.columns:
species_counts = class_i[species_col].str.strip().value_counts()
print("\nClass I recall events by species/product type:")
print(species_counts.to_string())
else:
# Infer species from product description if dedicated column absent
product_col = next((c for c in class_i.columns if "product" in c), None)
if product_col:
def infer_species(text):
if not isinstance(text, str):
return "Unknown"
t = text.lower()
if "beef" in t or "ground beef" in t or "veal" in t:
return "Beef"
if "chicken" in t or "poultry" in t or "turkey" in t or "duck" in t:
return "Poultry"
if "pork" in t or "ham" in t or "bacon" in t or "sausage" in t:
return "Pork"
return "Other"
class_i["inferred_species"] = class_i[product_col].apply(infer_species)
species_inferred = class_i["inferred_species"].value_counts()
print("\nClass I recall events by inferred species (from product description):")
print(species_inferred.to_string())What the data shows—and what it misses
The recall database captures enforcement actions, not the underlying rate of pathogen contamination in the food supply. A year with many Class I recalls may reflect a genuinely elevated pathogen burden, a more aggressive FSIS testing posture, improved outbreak detection through WGS, or simply a cluster of unrelated incidents. Analysts should resist treating annual recall counts as a simple index of food safety performance without accounting for these confounders.
The pounds-recalled figure, while dramatic in cases like Hallmark/Westland, does not directly measure public health impact. A 143-million-pound recall of product that had already been consumed provides no protection but generates a large data point. Conversely, a 50,000-pound recall of ready-to-eat Listeria-contaminated deli meat distributed in a specific metropolitan market to elderly care facilities could have catastrophic consequences despite its modest weight.
The pathogen testing results—quarterly Salmonella and Campylobacter data by establishment—offer a more continuous signal of plant-level compliance than the episodic recall record. Plants that approach or repeatedly breach performance standard thresholds are visible in the quarterly testing data before they generate a recall. Combining the testing data with the establishment file and the recall archive creates a reasonably complete picture of each plant's regulatory history. GenomeTrakr linkage from the NCBI public database adds a genomic dimension that is not captured in any FSIS CSV but is fully public and programmatically accessible through the NCBI Entrez API.
Related writing
FDA FAERS: The Adverse Drug Event Database Behind Post-Market Drug Safety — The FDA Adverse Event Reporting System holds more than 30 million reports of adverse drug reactions. How the seven-file relational schema works, how MedDRA terminology organizes reactions, how safety signals are detected through proportional reporting ratio analysis, and a Python workflow for downloading and deduplicating the bulk data.
CDC WONDER Mortality Data: Reading the Underlying Cause-of-Death Database — CDC WONDER exposes the full underlying cause-of-death record for every death registered in the United States since 1999, coded to ICD-10. How to query foodborne illness mortality, interpret suppressed small-count cells, and cross-reference against FSIS recall timelines to study the public health impact of specific contamination events.