Data & methodology

Official data, with the receipts.

VerifyRecall does not scrape social posts or rewrite press-release rumors. Our index is built from public FDA enforcement data, synced on a schedule, normalized and linked back to the source on every page.

Last source report: November 4, 202629914 records indexedUS federal data · EU adapter ready

Source register

Where each record comes from

SourceUsed forStatus

openFDA food enforcement

api.fda.gov/food/enforcement.json
Food and dietary-supplement enforcement reports, including product descriptions, recall reason, classification, distribution and code information. Live

FDA cosmetic-product enforcement

openFDA drug enforcement, filtered
Cosmetic and OTC personal-care products: sunscreen, skincare, cleansers and acne treatments. The FDA does not publish a single cosmetics-only openFDA enforcement endpoint, so we query enforcement records and filter for cosmetic products. Live

EU RASFF

Rapid Alert System for Food and Feed
A source adapter and normalized recall model are prepared for EU alerts. It is not enabled until licensing, attribution and feed access are confirmed.Adapter ready

openFDA data is published under the openFDA terms and is generally public domain. VerifyRecall is independent and is not endorsed by the FDA.

Pipeline

From API record to readable page

01

Fetch

A protected daily cron job pages through the openFDA enforcement endpoints. API responses are not requested during page views.

02

Normalize

We title-case product copy, map the FDA class, extract UPC and lot codes, parse distribution states and generate a readable slug.

03

Index

Records are upserted into PostgreSQL with unique recall numbers and indexed slugs, then relationally linked to brand, category and hazard.

04

Render

Recall, brand, category and contaminant pages are statically generated or revalidated, so the core content arrives in the initial HTML.

Normalization rules

What we change — and what we preserve

Readable titles, same facts

FDA product descriptions are often long, all-caps package text. We derive a display title but preserve the full description in our database. The H1 is title case; the source record remains available.

One product, one page

Each FDA recall number gets its own canonical URL. We do not merge unrelated products into a single page to inflate page views.

Codes are copied, not guessed

UPC and lot codes are extracted from the FDA record. When the FDA record has no UPC, the page says so rather than deriving one from a product name.

Narratives come from a reviewed hazard dictionary

The plain-language health and action sections are generated from structured hazard profiles reviewed by our editorial desk. They are informational, not medical advice.

Important limitations

  • FDA enforcement data can be updated, expanded or terminated after our last sync. The source record is authoritative.
  • Not every FDA record includes a UPC or lot code. Absence of a code on this site does not mean the product is unaffected.
  • A brand name can differ from the recalling firm or the label brand. We show both where possible.
  • VerifyRecall does not test products, inspect facilities or independently confirm contamination. We report what the FDA publishes.

Spotted a mapping error, missing code or broken source link? Send the recall number and the field that needs review.

Report a correction