FDA Recall Checker & openFDA Scraper avatar

FDA Recall Checker & openFDA Scraper

Pricing

from $2.00 / 1,000 recall / label / ndc / 510(k) records

Go to Apify Store
FDA Recall Checker & openFDA Scraper

FDA Recall Checker & openFDA Scraper

FDA recall API and openFDA scraper: check keywords, brands, UPC or NDC against official FDA food, drug and device recalls, or monitor only new recalls. Also drug labels, NDC, 510(k) and adverse-event counts.

Pricing

from $2.00 / 1,000 recall / label / ndc / 510(k) records

Rating

0.0

(0)

Developer

SmartMoney Data

SmartMoney Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

E-commerce sellers use this FDA recall checker to screen a catalog for a product recall, including an FDA recall, before listing on Amazon or Shopify. It reads the public openFDA API for food, drug, and device recalls. No API key is required for a small run.

Use it to:

  • Screen a catalog (keyword, brand, UPC/GTIN, or NDC) for recall hits before a listing goes live.
  • Schedule a monitor and alert only on recalls not seen last time.
  • Export Class I food or drug recalls for a state or firm.
  • Look up a drug label, NDC listing, or device 510(k).
  • Summarize adverse-event counts for a product (aggregates only, no patient reports).

Unofficial tool. Not affiliated with or endorsed by the U.S. FDA. A missing hit is not a safety certification.

Quick start

  1. Leave mode on Check my product list against recalls.
  2. Keep the sample keyword peanut butter, or replace it with your brand, upc:, or ndc: lines.
  3. Click Start. You get matching recall rows plus one summary row per product (MATCHES_FOUND or NO_MATCH_FOUND). Read match_confidence and the product description before you act.

Example input

This matches the form prefill. One keyword, at most 5 record rows.

{
"mode": "watchlist",
"products": ["peanut butter"],
"endpoints": ["food/enforcement", "drug/enforcement", "device/enforcement", "device/recall"],
"maxResults": 5,
"maxResultsPerQuery": 5,
"dedupe": true,
"emitWatchlistSummary": true
}

Other modes: monitor for new recalls since the last run (state kept under monitorStateKey), search for labels, NDC, or 510(k), and adverseEventCounts for top reactions or monthly counts.

Example output

Recall row (flattened; raw omitted):

{
"record_type": "recall",
"source_endpoint": "drug/enforcement",
"record_id": "D-0836-2026",
"record_date": "2026-09-16",
"classification": "Class III",
"status": "Ongoing",
"recalling_firm": "Ajanta Pharma USA Inc",
"product_description": "Fluphenazine Hydrochloride Tablets, USP, 1mg, 100-count bottles, NDC 27241-255-01.",
"reason_for_recall": "Failed impurities/degradation specifications.",
"code_info": "Lot #: DJ23254, Exp. Date 11/30/2026.",
"distribution_pattern": "Nationwide within the U.S",
"recall_initiation_date": "2026-08-25",
"product_ndcs": ["27241-255"],
"upcs": [],
"api_url": "https://api.fda.gov/drug/enforcement.json?search=recall_number:%22D-0836-2026%22",
"matched_items": [{"item": "ndc:27241-255-01", "match_type": "ndc", "match_confidence": "exact", "evidence": "NDC 27241-255-01 found in record"}],
"license": "CC0 1.0 (public domain) per https://open.fda.gov/license/ — not FDA-endorsed; results unvalidated"
}

Watchlist summary row:

{
"record_type": "watchlist_summary",
"item": "peanut butter",
"status": "MATCHES_FOUND",
"match_count": 5,
"total_available": 684,
"truncated": true,
"most_severe_classification": "Class I",
"latest_match_date": "2026-06-10",
"endpoints_checked": ["food/enforcement", "drug/enforcement", "device/enforcement", "device/recall"]
}

match_confidence is exact, strong, or api_match. Dataset views: Recalls & records, Watchlist summary, Adverse-event counts. Run stats sit in the OUTPUT key-value record.

Pricing

Pay per event. Apify platform usage is included in the event price. You don't pay for compute units separately.

EventWhen it is chargedPricePer 1,000
recordEach recall, label, NDC, or 510(k) row$0.002$2.00
product-checkedEach watchlist product checked$0.005$5.00
count-rowEach adverse-event count row$0.001$1.00

Apify also adds a tiny automatic Actor-start fee of $0.00005 per run. Products skipped because the request budget ran out are not charged. The OUTPUT summary is free. You can set a maximum cost per run in Apify Console.

Worked examples: the prefill (1 product, up to 5 records) is about $0.015. Checking 100 products and finding 20 recalls = 100 × $0.005 + 20 × $0.002 = $0.54. Top 25 reactions for 4 drugs = 100 × $0.001 = $0.10.

Input fields

FieldDefaultNotes
modewatchlistwatchlist, monitor, search, adverseEventCounts
productspeanut butterKeyword, or brand:, upc:, ndc: prefix. 12-14 digits read as UPC
endpointsfour recall setsAdd drug/label, drug/ndc, device/510k for reference data
dateFrom / dateTo—Bound on the dataset's main date
lookbackDays30Used when dateFrom is empty (search with no filters, first monitor run)
keywords, firms, classifications, statuses, states—Search and monitor filters
maxResults5 in the sample (default 200)Cap on record rows
maxResultsPerQuery5 in the sample (default 100)Cap per dataset, or per product per dataset
dedupetrueOne row per recall; matches merge into matched_items
includeRawtrueUntouched openFDA JSON under raw
emitWatchlistSummarytrueOne status row per product
includePersonContactsfalseNamed contacts stay removed
apiKey—Optional free openFDA key for higher daily limits
monitorStateKeydefaultSeparate keys for separate monitors

Tips, limits, FAQ

FDA enforcement reports are published weekly; OUTPUT includes each dataset's last_updated. Recall status stays as published (FDA does not refresh it after classification). device/recall has no class field, so a Class I/II/III filter skips it; use device/enforcement for class. Without an API key, openFDA allows 240 requests per minute and 1,000 per day per IP; cloud IPs can be shared. A free key raises the daily cap. This Actor does not cover CPSC, USDA FSIS, or NHTSA.

Text match is a screen, not a certificate. Identifiers can be missing or formatted differently. Check match_confidence and the record. Adverse-event counts are voluntary reports and do not show incidence or cause.

Is it legal? It calls the official openFDA API. openFDA data is CC0 public domain. Do not imply FDA endorsement. openFDA says not to rely on it for medical decisions and to treat results as unvalidated. You are responsible for how you use the output.

Do I need an API key? No for a small run. Add a free key for large or frequent runs.

What does NO_MATCH_FOUND mean? No hit in the datasets and date window you asked for. It does not mean the product is safe.

Why was a product not charged? NOT_CHECKED_BUDGET means the run hit its openFDA request budget before that product was checked.

Integrations: run it via the Apify API, a schedule, Make, Zapier, n8n, or LangChain/MCP through Apify. Pair monitor with a webhook or email step.