Data and methods
Where every number on this site comes from, how often it refreshes, and what it does and does not mean. Last refresh: Sep 17, 2026, 2:49 AM UTC.
How the site works
A scheduled job runs every six hours. It fetches each source below, converts it to a plain data file, and rebuilds this site from those files. Nothing is fetched while you are viewing a page, and no page ever calls an agency website directly. Each source is fetched independently: if one fails, its previous data stays on the site with a visible warning, and no value is ever estimated or filled in.
The data files, their full history, and the code are public in the project repository.
Sources
- CDC multistate foodborne outbreak notices
- CDC's outbreak list is read from the data file behind its table, then each outbreak's own pages are read for the case, hospitalization, death, and state counts, the investigation status, the dates CDC posted and updated the notice, and the illness onset range. Refreshes every 6 hours. Only outbreaks from the current and previous calendar year are read in detail.
An outbreak is open when CDC's notice says "Investigation status: Open". It is over when the notice says "Closed", "This outbreak is over", or "This outbreak has ended". Notices with neither are shown as unknown and left out of the open list. - CDC active investigation counts
- The same CDC page states how many multistate investigations CDC is working for Campylobacter, E. coli, Listeria, and Salmonella, with a "last updated" date. Most of these never become public notices. Refreshes every 6 hours.
- CDC burden estimates
- The comparison figures (9,900,000 illnesses, 53,300 hospitalizations, 931 deaths per year) are CDC's published estimates of total annual illness from the seven major foodborne pathogens, based on 2019 data and published in 2025. They are fixed numbers cited from CDC's foodborne burden page and are not computed by this site.
- FDA food recalls
- The openFDA food enforcement API, which FDA updates weekly and which reports its own data date (shown next to the recall tables). FDA lists one record per product; this site groups them into one row per recall event, showing the first product and the count of others. Recalls from the last 120 days are kept. Dietary supplements are excluded. Pet food is included and labeled, because FDA files it under food.
FDA warns that openFDA should not be relied on for public alerts, and enforcement reports can lag a firm's own announcement by days or weeks. For the newest FDA recall press releases, see FDA's recalls page. - USDA FSIS recalls
- The FSIS recall API, covering meat, poultry, and egg products, refreshed every 6 hours, with recalls from the last 12 months kept. If the API is unavailable the FSIS RSS feed is used instead, which gives only the title, link, and date; a note appears on the site when that happens. Each row links to the FSIS recall notice.
- News and agency notices
- Five RSS feeds, refreshed every 6 hours, keeping 30 days: Food Safety News; FDA's food safety recall, outbreak investigation, and press release feeds (press releases filtered to food topics by keyword); and a Google News search for "foodborne outbreak" or "food recall". Only the title, link, publisher, date, and a short excerpt are stored. Duplicate links are removed, preferring the agency's own notice over a news story about it.
- The weekly AI summary
- Once a week, the last 7 days of news items, agency notices, CDC outbreak updates, and recalls are numbered and given to an AI model (Claude Haiku 4.5, via the Anthropic API) with instructions to write a short brief using only those sources and to cite a source number at the end of every sentence. Before publishing, the code checks every sentence: any sentence without a citation, or citing a number not on the list, causes the draft to be rejected and rewritten once; if it fails again, the previous week's summary stays up with a notice. The model runs inside the scheduled job, never when you load a page, and no visitor data is sent anywhere. The summary is not reviewed by a person before publishing; treat it as a reading guide and follow the cited links for anything that matters to you.
- Recall reason categories
- The "Reason" label on each recall is assigned by this site from the agency's free-text reason using keyword rules (for example, any mention of Listeria becomes "Listeria"; "not declared" or "allergen" becomes "Undeclared allergen"; import violations and products made without inspection become "Regulatory"). The agency's original wording is shown under the label. Recalls that match no rule are labeled "Other".
- Recently implicated foods
- Food names from outbreak notices and recall product descriptions are matched against a fixed list of food types (lettuce, eggs, sprouts, and so on) by keyword. A product can match several types or none. Grouping covers items posted or updated in the last 90 days.
What the headline numbers mean
The illnesses, hospitalizations, and deaths on the overview are sums of the figures CDC reports on every multistate outbreak notice first posted in the trailing 12 months, whether the outbreak is now open or closed. Figures are CDC's latest for each outbreak, so they change as investigations update. A notice missing a figure counts as zero and a note says so.
These sums are a small fraction of true foodborne illness. They include only outbreaks that crossed state lines, were investigated by CDC, and were announced publicly. Single-state outbreaks, outbreaks investigated without a public notice, and the great majority of illnesses that are never linked to any outbreak are not included. CDC estimates the true annual burden at about 9.9 million illnesses. The two figures are shown side by side so that neither is mistaken for the other.
A single very large outbreak can dominate the 12-month total for a year. When one outbreak accounts for 40% or more of the illnesses, the overview names it.
What this site is not
It is not a government site and not a substitute for agency alerts. It summarizes public data and links to the original notice for every item. If you think you have food poisoning, contact a health care provider; to report a food safety problem, contact your local health department, FDA, or USDA.
Historical outbreak data going back to 1998 is available in CDC's National Outbreak Reporting System, which lags by one to two years and is therefore not used for any current figure here.
Current source status
| Source | Last successful fetch | Agency data date | Items | Status |
|---|---|---|---|---|
| CDC multistate foodborne outbreak notices | Sep 17, 2026, 2:49 AM UTC | — | 24 | OK |
| CDC active multistate investigation counts | Sep 17, 2026, 2:49 AM UTC | 2026-09-16 | 4 | OK |
| FDA food recalls (openFDA enforcement reports) | Sep 17, 2026, 2:49 AM UTC | 2026-09-09 | 152 | OK |
| USDA FSIS recalls (recall API) | Sep 17, 2026, 2:49 AM UTC | 2026-09-10 | 54 | OK |
| Food Safety News | Sep 17, 2026, 2:49 AM UTC | — | 15 | OK |
| FDA recall notice | Sep 17, 2026, 2:49 AM UTC | — | 20 | OK |
| FDA outbreak notice | Sep 17, 2026, 2:49 AM UTC | — | 1 | OK |
| FDA press release | Sep 17, 2026, 2:49 AM UTC | — | 13 | OK |
| Google News | Sep 17, 2026, 2:49 AM UTC | — | 43 | OK |
Privacy
No cookies, no analytics, no third-party scripts. The recalls page uses a small amount of JavaScript to filter the table; without it, every row is shown.