Skip to main content
Thirdwatchthirdwatch
health

How to Scrape FDA Food, Drug, and Device Recalls

Export official openFDA enforcement records across food, drugs, and medical devices in one structured workflow.

Jul 21, 2026 · 2 min read · 265 words
See the scraper →

the official openFDA food, drug, and device enforcement APIs already exposes structured records, so browser scraping would add fragility without adding data. The FDA Recalls Scraper handles pagination, retries, normalization, deduplication, and Apify dataset output.

Pick a bounded query

The Actor accepts openFDA search expressions, product type, recall classification, report dates, and sort direction. Start with one narrow query and a small result cap. Inspect the returned rows before increasing volume. A broad default is convenient for a demo, but it is a poor production specification.

{
  "queries": [
    "status:Ongoing"
  ],
  "productTypes": [
    "food"
  ],
  "maxResultsPerSearch": 100
}

Each row contains recall and event identifiers, product description and quantity, code information, recalling firm and address, classification, reason, status, distribution, notification method, and normalized dates. The natural key is product_type plus recall_number. Use it when merging reruns; dataset row order is not an identity.

Export and verify

Run the Actor from the Apify Console, API, or a saved Task. JSON preserves arrays and nulls best. CSV is convenient for a quick spreadsheet review, but inspect how arrays were serialized before importing it into a warehouse.

Open several source links and compare identifiers, dates, and one multi-value field with the published record. Enforcement records change during an investigation. Refresh ongoing recalls and retain code_info and distribution_pattern. A company-name match alone is not enough to decide whether inventory is affected.

A good first run answers two questions: does the query find the intended population, and can every important row be traced back to the publisher? Scale only after both answers are yes.

Frequently asked questions

Does this Actor use an official data source?

Yes. It queries the publisher's official public API and returns normalized records with traceable identifiers and source links.

Can I schedule this workflow?

Yes. Save the validated input as an Apify Task, attach a schedule, and compare each successful dataset with the previous snapshot.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.