Methodology
RecallRadar copies public recall notices from three U.S. agencies into one table, keeps every payload exactly as received, and links each recall back to the official source. We are an index, not the authority.
Sources
| Agency | Source | Cadence | Notes |
|---|---|---|---|
| FDA Food, Drug, Device | openFDA enforcement reports | Checked daily; openFDA publishes roughly weekly | openFDA has no per-recall web page, so the source link is the openFDA API record for that recall number. |
| USDA FSIS | FSIS recall API | Checked hourly | Includes public health alerts, shown as class PHA. FSIS blocks automated requests from some networks; when that happens the freshness table below shows the failure and FSIS data may lag. |
| CPSC | SaferProducts.gov recalls API | Checked hourly | CPSC publishes no hazard class and no lifecycle status, so class is empty and status is "unknown". |
History: openFDA from 2012, FSIS and CPSC from their full published archives. The oldest indexed recall was published on 2012-06-20.
How a recall gets here
- Each agency is polled with an overlap window so late and edited records are picked up.
- The payload is stored unchanged. A new copy is kept only when the agency's data actually changed, and nothing is ever deleted.
- A versioned transform maps it to one common shape: agency, recall number, class, status, dates, product, reason, company, distribution, identifiers, source link.
- The result is validated. A record that does not fit (for example a missing recall number or source link, or a renamed field) is quarantined and never shown, and the previous good version stays live.
- Status changes, such as ongoing to terminated, are recorded with a timestamp and shown on the recall page.
Normalization
Company names are lowercased with legal suffixes (Inc, LLC, Corp, S.A. de C.V.) and "doing business as" tails removed. This groups most filings by the same firm on one company page, but it is deliberately simple: it does not merge subsidiaries or spelling variants. States are extracted from free-text distribution statements; "nationwide" is shown as US. UPCs, lot codes, NDCs, establishment numbers, and model numbers are extracted where the agency text includes them.
Transform versions
When an agency changes its format, the transform is fixed, its version is bumped, and stored payloads are remapped without re-fetching. Remaps never mark a recall as "updated".
| Agency | Transform | Recalls |
|---|---|---|
| CPSC | cpsc@4 | 8,750 |
| FDA Device | openfda@2 | 39,883 |
| FDA Drug | openfda@2 | 17,937 |
| FDA Food | openfda@2 | 29,385 |
| USDA FSIS | fsis@2 | 1,236 |
Freshness
An agency that returns no rows for 48 hours is flagged, because that usually means the source broke rather than that nothing was recalled.
| Agency | Recalls | Quarantined | Newest published | Last success | Alert |
|---|---|---|---|---|---|
| CPSC | 8,750 | 0 | 2026-09-10 | 2026-09-14 08:15 UTC | ok |
| FDA Device | 39,883 | 2 | 2026-09-02 | 2026-09-13 11:58 UTC | ok |
| FDA Drug | 17,937 | 1 | 2026-09-02 | 2026-09-13 11:53 UTC | ok |
| FDA Food | 29,385 | 1 | 2026-09-02 | 2026-09-13 11:51 UTC | ok |
| USDA FSIS | 1,236 | 0 | 2026-09-09 | 2026-09-14 08:15 UTC | ok |
Machine-readable: /v1/freshness.
Not the authority
RecallRadar indexes public recall notices from the FDA, USDA FSIS, and CPSC. The official agency notice is the authoritative source. Always confirm details at the linked source before acting. RecallRadar may be delayed, may miss a notice the agency has not published through its API, and may mis-extract a field. If a recall affects a decision, read the linked agency notice.