FDA Food, Drug & Device Recall Monitor
Pricing
$4.00 / 1,000 delivered records
FDA Food, Drug & Device Recall Monitor
Search openFDA food, drug and device recall enforcement reports. Export recall classifications, reasons, firms and status changes.
Pricing
$4.00 / 1,000 delivered records
Rating
0.0
(0)
Developer
CRNO
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Search openFDA food, drug and device recall enforcement reports. Export recall classifications, reasons, firms and status changes.
Quick start
Run the example below. No source API key or proxy subscription is required for the supported public endpoints. Source access can still be rate-limited or blocked. Results are stored in the default dataset, ready for JSON, CSV or Excel export.
{"productType": "food","maxItems": 20}
What you receive
Every row includes a stable id, source, title, url, UTC observedAt and runId. Source-specific fields include productType, recall_number, event_id, status, classification, recalling_firm, reason_for_recall, report_date. Optional source values may be null or empty. Nested arrays are preserved in JSON.
Sorted by report_date descending. Results are enforcement reports and may be delayed or incomplete. The same event can contain multiple distinct recall numbers. No inference about a product’s safety or regulatory approval is made. Source statuses and classifications are preserved.
Example result
The following validation result shows the output structure. Long text and arrays are shortened for readability; values are historical examples, not current source values.
{"id": "food:H-0130-2027","source": "openfda","title": "Jovy Gummy Worms Neon; packaged in 1lb plastic units. UPC 712199083411","url": "https://api.fda.gov/food/enforcement.json?search=recall_number%3A%22H-0130-2027%22","productType": "food","recall_number": "H-0130-2027","event_id": "99727","status": "Ongoing","classification": "Class II","recalling_firm": "El Ruisenor De Mexico, Inc.","city": "Vernon","state": "CA","country": "United States","reason_for_recall": "undeclared allergen ingredient (Red#40, Yellow#5, Yellow#6, Blue#1)","distribution_pattern": "Recalling firm distributes primarily to California customers both retail and wholesale. Additional distribution to limited customers in Hawaii, Illinois, Kansas, Nevada, Oregon, and Washington.","recall_initiation_date": "20260824","report_date": "20261028","voluntary_mandated": "Voluntary: Firm initiated","product_quantity": "521 pounds","code_info": "lot: 6156","changeType": "baseline","changedFields": [],"previousObservedAt": null,"observedAt": "2026-11-05T07:33:35.831Z","runId": "OymqR1m2iMtBT2oyw"}
Inputs
| Field | Meaning | Default |
|---|---|---|
productType | Select one openFDA enforcement dataset. | "food" |
search | Optional official openFDA query, e.g. recalling_firm:"Acme" or report_date:[20260101 TO 20261231]. | "" |
maxItems | Maximum matching records to select (1–1000), across all sources in input order. Source APIs may return or scan additional rows before filtering. In changes-only mode this caps compared records, not just delivered changes. | 100 |
trackChanges | Save a private snapshot and compare the same input selection across runs. | false |
historyStoreName | Required for change tracking. Choose a private key-value store owned by your account; reuse it on later runs. | "" |
onlyChanges | Requires change tracking. The first run returns all baseline records; later unchanged records are free and omitted. | false |
Change monitoring
Set trackChanges: true and a private historyStoreName, then reuse exactly the same search inputs and maximum-results setting on later runs. An Apify schedule can run this daily; scheduling and notifications are configured by you, not automatically created by this Actor. Use onlyChanges: true to omit unchanged rows.
The first run emits baseline rows. Subsequent rows are new, changed or unchanged, with changedFields and previousObservedAt. Without tracking, the label is notTracked. Comparisons cover only the selected result window and immediately preceding successful snapshot. Newly seen does not mean newly created. Missing records are not declared deleted, closed or resolved. Source-fetch failures and budget-truncated selections do not advance the baseline. A storage failure after delivery can leave saved rows or a saved snapshot; check the dataset and SUMMARY before retrying. Avoid overlapping scheduled runs for the same history; immutable snapshots prevent one run overwriting another. Rotate the history store after 2,000 snapshots per search.
Pricing
$4.00 per 1,000 delivered records ($0.004 each). Only the record-scraped event is billed. No startup fee, no separate automatic dataset-item fee. Actor platform usage is included. Empty results and omitted unchanged records have no result fee. Account-level charges for later storage/API usage, schedules or integrations follow your Apify plan.
Set an Apify maximum charge limit to cap result spending. maxItems limits inspected records, including unchanged ones. A small charge budget may further limit the selection. The SUMMARY record has no result-event fee and reports fetched/saved counts, budget stops, request counts and snapshot status.
Reliability and limits
At most 1,000 selected records and 60 source requests per run; each request has a 30-second timeout and a 16 MB response limit. Requests are paced, temporary errors receive bounded retries, and source failures or malformed responses fail explicitly. A run collects the selected rows before writing them, so an upstream error does not silently return partial success. Delivery or storage failures can leave output; inspect SUMMARY before retrying. Start a new run instead of resurrecting an existing output dataset.
Public APIs can change, return stale data or limit requests. No scraper can guarantee permanent availability or exhaustive coverage. This is an independent tool, not an official service of the source organization. Users are responsible for their downstream use and applicable source terms; public access is not an unrestricted redistribution license.
Source documentation
Official source/API documentation. For support, open an issue on this Actor with the run ID and non-sensitive input. Never include tokens or confidential data.