SourceFinch Verified · Product recalls & safety
Food recall enforcement reports
The 100 most recently reported FDA food recalls from the weekly Enforcement Report, one record per recalled product: recall number, classification, status, product, reason, codes, distribution and dates. Firm names and street addresses are left out.
- Healthy · 50% of observed runs successful
- Product recalls & safety
- U.S. Food and Drug Administration
- United States (federal)
- Publisher's public API
- 19 typed fields
At a glance
- Publisher
- U.S. Food and Drug Administration · homepage
- Category
- Product recalls & safety
- Jurisdiction
- United States (federal)
- Publisher updates
- Weekly, when FDA publishes the Enforcement Report
- SourceFinch checks
- Daily by default
- Records per run
- 100 in the latest run
- Record key
recall_number- Acquired from
- Publisher's public API:
https://api.fda.gov/food/enforcement.json?search=recall_number:%5B0+TO+z%5D&sort=report_date:desc&limit=100 - Recipe
- v1.0.1, approved October 12, 2026
- Verified since
- October 12, 2026
- Last green run
- October 12, 2026
What the data contains
FDA's weekly Enforcement Report lists every recall FDA has classified, whether the firm started it or FDA required it. openFDA publishes the report as a public JSON service that needs no key for light use. This source reads the 100 most recently reported food recalls (sorted by report date) on each daily run and makes one record per recalled product keyed by its FDA recall number, so a monitor reports new recalls and later changes to a recall's status, classification or termination date. Records carry the product description, reason, codes, quantity, distribution pattern, hazard class and dates, plus the city, state and country of the recalling firm. The recalling firm's name, street address and postal code are deliberately not read: openFDA lists sole proprietors under their own names, so that field can name a private individual. Product descriptions are published text and usually name brands and distributors, which are companies. openFDA warns that its data is unvalidated and must not be relied on for medical decisions; this source carries the data as published and adds no safety advice. A recall leaving the 100-record window is not a withdrawal.
Fields and types
Every record has these fields. The key field recall_number identifies a record across runs, so changes are reported field by field.
| Field | Type | Description |
|---|---|---|
recall_numberkey | string | FDA recall number for one recalled product (for example H-1395-2026), unique per record. The record key. |
event_id | string, nullable | FDA recall event identifier; one event can cover several recalled products, so several records can share it. |
status | string, nullable | Recall status as reported by FDA: Ongoing, Completed, Terminated or Pending. |
classification | string, nullable | FDA health hazard classification: Class I (most serious), Class II or Class III. |
product_type | string, nullable | FDA product type (Food for this source). |
product_description | string, nullable | Description of the recalled product as written in the report, including brand, size and packaging. |
reason_for_recall | string, nullable | Reason for the recall as written in the report. |
product_quantity | string, nullable | Quantity of product in distribution as reported, in free text (for example 816 units). |
code_info | string, nullable | Lot numbers, expiry dates, UDI or other codes identifying the recalled units. |
distribution_pattern | string, nullable | Where the product was distributed, in free text. |
voluntary_mandated | string, nullable | Whether the recall was firm-initiated or FDA-mandated. |
initial_firm_notification | string, nullable | How the firm first notified its consignees (letter, e-mail, press release and so on). |
city | string, nullable | City of the recalling firm's reported location. |
state | string, nullable | State or province of the recalling firm's reported location. |
country | string, nullable | Country of the recalling firm's reported location. |
recall_initiation_date | date, nullable | Date the firm first notified the public or its consignees of the recall (YYYY-MM-DD). |
center_classification_date | date, nullable | Date FDA classified the recall's health hazard (YYYY-MM-DD). |
report_date | date | Date the recall first appeared in FDA's weekly Enforcement Report (YYYY-MM-DD). |
termination_date | date, nullable | Date FDA terminated the recall, when it has; null while it is open (YYYY-MM-DD). |
Sample output
The first 5 of 100 records from SourceFinch's own run on October 12, 2026, exactly as delivered.
| Field | Record 1 | Record 2 | Record 3 | Record 4 | Record 5 |
|---|---|---|---|---|---|
recall_number | H-1395-2026 | H-1396-2026 | H-1393-2026 | H-1391-2026 | H-1392-2026 |
event_id | 99874 | 99853 | 99859 | 99717 | 99717 |
status | Ongoing | Ongoing | Ongoing | Ongoing | Ongoing |
classification | Class I | Class I | Class III | Class II | Class II |
product_type | Food | Food | Food | Food | Food |
product_description | Fromagerie Coop de Mean Cabricharme and Belgium Cabricharme Shelf life: 30 days, all dates through and including 10/7/2026 Packaging: Plastic wrapped by slice Net Wt.: Various, cut from whole wheel and priced by weight with Whole Foods Market scale label PLUs: 54670, 57953 | Lemon Alfredo Fettuccine packed in a yellow plastic sealed bag with pink and black lettering; label reads in part as "bettergoods Lemon Alfredo Fettuccine, MADE IN ITALY, NET WT 22 OZ, BEST if Used By: SEP 20 2027 L6080C, UPC 194346442706, DISTRIBUTED BY: Walmart Inc., Bentonville, AR 72716 PRODUCT OF ITALY | American Ginsengs. PRODUCT OF WISCONSIN. NET WT: 4 oz. NET WT. 8 oz. | Light Brown Sugar, Packaged in he follow configurations: 1. United, Net Wt. 50 lbs., (22.68kg). Item Number 810051. Distributed By: United Sugar Producers & Refiners, Minneapolis, MN 55439. 2. Good & Gather, Net Wt 2 lb. (32 oz) 907g. Item Number 817773. UPC 0 85239-08454 0. Dist. By Target Corp., Minneapolis, MN 55403. | Powdered Sugar, Packaged in the following configurations: 1. United 6X, Net Wt. 50 lbs. (22.68kg), Item Number 810087. UPC 7 85921-07090 4. Distributed by: United Sugar Producers & Refiners, Minneapolis, MN 55439. 2. Crystal Sugar, Net Wt. 25 lbs. (11.3 kg), Item Number 810097. UPC 0 70090-08090 9. Distributed by Crystal Sugars Corporation, Moorhead, MN 2. Good & Gather, Net Wt 2 lb. (32oz) 907g. Item Number 817774. UPC 0 85239-08455 7. Dist. By Target Corp. Minneapolis, MN 55403. |
reason_for_recall | Undeclared Egg Allergen | Contamination with Listeria monocytogenes | Potential contamination with pesticides. | Potential Wheat Kernel contamination. | Potential Wheat Kernel contamination. |
product_quantity | 21 Wheels | 16,002 bags (2,286 cases) | 70 boxes | 12,678 CWT total | 4,265 CWT total |
code_info | Shelf life: 30 days, all dates through and including 10/7/2026 | L6080C SEP 20 2027 L6079C SEP 19 2027 | 108-728-420 | 1. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229, MHD26223, MHD26225, MHD26226, MHD26223, MHD26225, MHD26226. 2. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229. | 1. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26229. 2. Batch Numbers: MHD26230 3. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229. |
distribution_pattern | CA, AZ, NJ, MA, RI, CT, NY | Walmart DCs and retail locations nationwide. | Domestic: CA. Foreign: Not Applicable. | IA, IL, IN, KS, MN, OH PA, TX | IA, IL, IN, KS, MN, OH PA, TX |
voluntary_mandated | Voluntary: Firm initiated | Voluntary: Firm initiated | Voluntary: Firm initiated | Voluntary: Firm initiated | Voluntary: Firm initiated |
initial_firm_notification | Letter | Letter | Letter | ||
city | Austin | New York | San Francisco | Minneapolis | Minneapolis |
state | TX | NY | CA | MN | MN |
country | United States | United States | United States | United States | United States |
recall_initiation_date | 2026-09-08 | 2026-09-03 | 2026-09-08 | 2026-08-19 | 2026-08-19 |
center_classification_date | 2026-09-22 | 2026-09-24 | 2026-09-22 | 2026-09-21 | 2026-09-21 |
report_date | 2026-09-30 | 2026-09-30 | 2026-09-30 | 2026-09-30 | 2026-09-30 |
termination_date | — | — | — | — | — |
Sample as JSON
[
{
"city": "Austin",
"state": "TX",
"status": "Ongoing",
"country": "United States",
"event_id": "99874",
"code_info": "Shelf life: 30 days, all dates through and including 10/7/2026",
"report_date": "2026-09-30",
"product_type": "Food",
"recall_number": "H-1395-2026",
"classification": "Class I",
"product_quantity": "21 Wheels",
"termination_date": null,
"reason_for_recall": "Undeclared Egg Allergen",
"voluntary_mandated": "Voluntary: Firm initiated",
"product_description": "Fromagerie Coop de Mean Cabricharme and Belgium Cabricharme Shelf life: 30 days, all dates through and including 10/7/2026 Packaging: Plastic wrapped by slice Net Wt.: Various, cut from whole wheel and priced by weight with Whole Foods Market scale label PLUs: 54670, 57953",
"distribution_pattern": "CA, AZ, NJ, MA, RI, CT, NY",
"recall_initiation_date": "2026-09-08",
"initial_firm_notification": "E-Mail",
"center_classification_date": "2026-09-22"
},
{
"city": "New York",
"state": "NY",
"status": "Ongoing",
"country": "United States",
"event_id": "99853",
"code_info": "L6080C SEP 20 2027 L6079C SEP 19 2027",
"report_date": "2026-09-30",
"product_type": "Food",
"recall_number": "H-1396-2026",
"classification": "Class I",
"product_quantity": "16,002 bags (2,286 cases)",
"termination_date": null,
"reason_for_recall": "Contamination with Listeria monocytogenes",
"voluntary_mandated": "Voluntary: Firm initiated",
"product_description": "Lemon Alfredo Fettuccine packed in a yellow plastic sealed bag with pink and black lettering; label reads in part as \"bettergoods Lemon Alfredo Fettuccine, MADE IN ITALY, NET WT 22 OZ, BEST if Used By: SEP 20 2027 L6080C, UPC 194346442706, DISTRIBUTED BY: Walmart Inc., Bentonville, AR 72716 PRODUCT OF ITALY",
"distribution_pattern": "Walmart DCs and retail locations nationwide.",
"recall_initiation_date": "2026-09-03",
"initial_firm_notification": "E-Mail",
"center_classification_date": "2026-09-24"
},
{
"city": "San Francisco",
"state": "CA",
"status": "Ongoing",
"country": "United States",
"event_id": "99859",
"code_info": "108-728-420",
"report_date": "2026-09-30",
"product_type": "Food",
"recall_number": "H-1393-2026",
"classification": "Class III",
"product_quantity": "70 boxes",
"termination_date": null,
"reason_for_recall": "Potential contamination with pesticides.",
"voluntary_mandated": "Voluntary: Firm initiated",
"product_description": "American Ginsengs. PRODUCT OF WISCONSIN. NET WT: 4 oz. NET WT. 8 oz.",
"distribution_pattern": "Domestic: CA. Foreign: Not Applicable.",
"recall_initiation_date": "2026-09-08",
"initial_firm_notification": "Letter",
"center_classification_date": "2026-09-22"
},
{
"city": "Minneapolis",
"state": "MN",
"status": "Ongoing",
"country": "United States",
"event_id": "99717",
"code_info": "1. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229, MHD26223, MHD26225, MHD26226, MHD26223, MHD26225, MHD26226. 2. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229.",
"report_date": "2026-09-30",
"product_type": "Food",
"recall_number": "H-1391-2026",
"classification": "Class II",
"product_quantity": "12,678 CWT total",
"termination_date": null,
"reason_for_recall": "Potential Wheat Kernel contamination.",
"voluntary_mandated": "Voluntary: Firm initiated",
"product_description": "Light Brown Sugar, Packaged in he follow configurations: 1. United, Net Wt. 50 lbs., (22.68kg). Item Number 810051. Distributed By: United Sugar Producers & Refiners, Minneapolis, MN 55439. 2. Good & Gather, Net Wt 2 lb. (32 oz) 907g. Item Number 817773. UPC 0 85239-08454 0. Dist. By Target Corp., Minneapolis, MN 55403.",
"distribution_pattern": "IA, IL, IN, KS, MN, OH PA, TX",
"recall_initiation_date": "2026-08-19",
"initial_firm_notification": "Letter",
"center_classification_date": "2026-09-21"
},
{
"city": "Minneapolis",
"state": "MN",
"status": "Ongoing",
"country": "United States",
"event_id": "99717",
"code_info": "1. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26229. 2. Batch Numbers: MHD26230 3. Batch Numbers: MHD26223, MHD26224, MHD26225, MHD26226, MHD26227, MHD26228, MHD26229.",
"report_date": "2026-09-30",
"product_type": "Food",
"recall_number": "H-1392-2026",
"classification": "Class II",
"product_quantity": "4,265 CWT total",
"termination_date": null,
"reason_for_recall": "Potential Wheat Kernel contamination.",
"voluntary_mandated": "Voluntary: Firm initiated",
"product_description": "Powdered Sugar, Packaged in the following configurations: 1. United 6X, Net Wt. 50 lbs. (22.68kg), Item Number 810087. UPC 7 85921-07090 4. Distributed by: United Sugar Producers & Refiners, Minneapolis, MN 55439. 2. Crystal Sugar, Net Wt. 25 lbs. (11.3 kg), Item Number 810097. UPC 0 70090-08090 9. Distributed by Crystal Sugars Corporation, Moorhead, MN 2. Good & Gather, Net Wt 2 lb. (32oz) 907g. Item Number 817774. UPC 0 85239-08455 7. Dist. By Target Corp. Minneapolis, MN 55403.",
"distribution_pattern": "IA, IL, IN, KS, MN, OH PA, TX",
"recall_initiation_date": "2026-08-19",
"initial_firm_notification": "Letter",
"center_classification_date": "2026-09-21"
}
]Evidence behind every value
- Each run keeps the publisher's exact response, hashed with SHA-256. This sample came from a response with hash
961d24ea705106ad91e235345cfa1fd20cba0a8a2352b5b4274f99c75f6d341d. - Every value records where it came from in that response: a JSON Pointer into the retained capture.
- Each run gets a signed manifest (Ed25519) timestamped by an RFC 3161 authority: this run's manifest hash is
f4ceffbbd3fc169f1680122ed5c64d07e8cf912ab31fa6910d293841caa605f2, timestamped October 12, 2026. - The compliance state at capture is recorded with the evidence: robots.txt hash and verdict, AI-preference signals, crawler identity and the usage rights below.
- Download any run as an evidence bundle (WACZ) and check it offline, without trusting SourceFinch:
sourcefinch verify-bundle run.wacz.
Terms posture and usage rights
- Terms
- Automated access permitted · publisher's terms
- robots.txt
- None published (HTTP 404); access allowed under RFC 9309
- AI-preference signals
- None observed at review
- Public record
- Yes. FDA Enforcement Report, published weekly under 21 CFR part 7 (recalls); U.S. government work, 17 U.S.C. 105, dedicated under CC0 1.0 by openFDA.
- Reviewed
- October 12, 2026; next review April 12, 2027
- Licence basis
- Open data licence (CC0-1.0)
- Commercial use
- Allowed
- Redistribution
- Allowed
- Attribution
- Not required
openFDA's terms of service state that, unless otherwise noted, the content and data on openFDA are public domain and dedicated under Creative Commons CC0 1.0 Universal, usable for any purpose including commercial use without permission. Attribution is requested, not required. FDA may limit access to manage load; without an API key openFDA allows 240 requests a minute and 1,000 a day per address, and this source makes one request a day. api.fda.gov serves no robots.txt (HTTP 404), which RFC 9309 treats as allowing access. The Enforcement Report data is not marked as third-party copyrighted.
Usage rights travel with every record SourceFinch delivers (API, exports, webhooks and evidence bundles). They are our documented understanding of the publisher's stated terms, not legal advice.
Reliability
- Runs, last 30 days
- 2
- Green
- 50%
- Failed
- 0
- Median run time
- 1.5 s
- Latest run
- success, October 12, 2026
Measured on completed runs of this recipe version across SourceFinch, anonymized, within a rolling 30-day window. First successful observation: October 12, 2026. A new recipe has only the history collected since that date; this is not a 30-day uptime guarantee.
Use it
Every surface creates the same monitor from this Verified recipe. Monitors keep record history, report field-level changes and deliver by webhook, export or email. You confirm you have the right to collect the source (rights: true).
Console
Open this recipe in the console: it preserves the reviewed URL, fields and record key. Review the latest captured sample, confirm source rights, and choose a schedule before creating your monitor.
Portable recipe
Copy into the console's Import or share a recipe panel to customize fields, types and schedules. This configuration contains no captured records or workspace IDs.
{
"schema": "sourcefinch/source@1",
"name": "Food recall enforcement reports",
"url": "https://api.fda.gov/food/enforcement.json?search=recall_number:%5B0+TO+z%5D&sort=report_date:desc&limit=100",
"recipe": {
"mode": "http",
"format": "json",
"items": "results[*]",
"fields": {
"city": "city",
"state": "state",
"status": "status",
"country": "country",
"event_id": "event_id",
"code_info": "code_info",
"report_date": "report_date",
"product_type": "product_type",
"recall_number": "recall_number",
"classification": "classification",
"product_quantity": "product_quantity",
"termination_date": "termination_date",
"reason_for_recall": "reason_for_recall",
"voluntary_mandated": "voluntary_mandated",
"product_description": "product_description",
"distribution_pattern": "distribution_pattern",
"recall_initiation_date": "recall_initiation_date",
"initial_firm_notification": "initial_firm_notification",
"center_classification_date": "center_classification_date"
},
"required": [
"recall_number",
"report_date"
],
"types": {
"center_classification_date": "date",
"recall_initiation_date": "date",
"report_date": "date",
"termination_date": "date"
}
},
"schedule": "daily",
"key_field": "recall_number"
}source.json
The request body used by the API, CLI and SDK examples.
{
"name": "Food recall enforcement reports",
"url": "https://api.fda.gov/food/enforcement.json?search=recall_number:%5B0+TO+z%5D&sort=report_date:desc&limit=100",
"recipe": {
"mode": "http",
"format": "json",
"items": "results[*]",
"fields": {
"city": "city",
"state": "state",
"status": "status",
"country": "country",
"event_id": "event_id",
"code_info": "code_info",
"report_date": "report_date",
"product_type": "product_type",
"recall_number": "recall_number",
"classification": "classification",
"product_quantity": "product_quantity",
"termination_date": "termination_date",
"reason_for_recall": "reason_for_recall",
"voluntary_mandated": "voluntary_mandated",
"product_description": "product_description",
"distribution_pattern": "distribution_pattern",
"recall_initiation_date": "recall_initiation_date",
"initial_firm_notification": "initial_firm_notification",
"center_classification_date": "center_classification_date"
},
"required": [
"recall_number",
"report_date"
],
"types": {
"report_date": "date",
"termination_date": "date",
"recall_initiation_date": "date",
"center_classification_date": "date"
}
},
"key_field": "recall_number",
"schedule": "daily",
"rights": true,
"catalog": {
"slug": "openfda-food-enforcement-reports",
"version_id": "50155324-f06c-4dff-b6ef-6ab19d6664cf"
}
}REST API
Create an API key under Console → API keys. Reference: /docs/api.
# the Verified entry (fields, recipe, sample, terms) as JSON
curl https://sourcefinch.com/v1/catalog/openfda-food-enforcement-reports -H "Authorization: Bearer $SOURCEFINCH_API_KEY"
# create the monitor from source.json (below)
curl -X POST https://sourcefinch.com/v1/sources \
-H "Authorization: Bearer $SOURCEFINCH_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @source.json
# then run it now (later runs follow the schedule)
curl -X POST https://sourcefinch.com/v1/sources/$SOURCE_ID/runs \
-H "Authorization: Bearer $SOURCEFINCH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"CLI
The sourcefinch CLI is not on npm yet; see /docs/cli.
sourcefinch login
sourcefinch catalog get openfda-food-enforcement-reports --source-json > source.json
sourcefinch sources create --file source.json
sourcefinch runs create $SOURCE_ID --wait
sourcefinch records $SOURCE_IDTypeScript SDK
The SDK is not on npm yet; see /docs/sdk.
import { SourceFinch } from "@sourcefinch/sdk";
const sf = new SourceFinch({ apiKey: process.env.SOURCEFINCH_API_KEY });
const entry = await sf.catalog.get("openfda-food-enforcement-reports");
const source = await sf.sources.create({
catalog: { slug: entry.slug, version_id: entry.recipe.version_id },
name: entry.name.slice(0, 100),
url: entry.acquisition_path.endpoint,
recipe: entry.recipe.definition,
key_field: entry.recipe.key_field,
schedule: entry.recipe.schedule,
rights: true, // you confirm you have the right to collect this source
});
const run = await sf.runs.wait((await sf.runs.create(source.id)).id);
console.log(run.status);MCP
Remote MCP server with OAuth; see /docs/mcp.
claude mcp add --transport http sourcefinch https://sourcefinch.com/mcp
# then ask your agent:
"Use SourceFinch to monitor Food recall enforcement reports: get_catalog_source openfda-food-enforcement-reports,
then create_source with its create_source_args (dry run first), then run_source."Pricing
Each check is one run, whatever the number of records, and failed runs are free. On its default daily schedule this source uses about 30 runs a month, which fits the Free plan's 300 runs. It uses HTTP acquisition, so no browser runs are needed. See plans.
Guides using this source
Related sources
More from U.S. Food and Drug Administration and in product recalls & safety.
SourceFinch is independent and is not affiliated with or endorsed by U.S. Food and Drug Administration. This page describes food recall enforcement reports as SourceFinch acquires it.