AnswerPool

FDA Recall Search API: Drug, device and food recalls by firm, state, class or window — openFDA

Drug, device and food recalls by firm, state, class or window, with FDA's hazard classification and days-since-report. One call instead of openFDA query syntax. Free, no key.

Free — no key, no signup, rate-limited to 60 calls per minute per client.

How do you call it?

GET /v1/fda/recalls — product id fda_recalls. Over MCP, call answerpool_get with product_id=fda_recalls.

curl "https://answerpool.io/v1/fda/recalls?category=drug&days=90"

Live call: https://answerpool.io/v1/fda/recalls?category=drug&days=90 · JSON sample: /v1/samples/fda_recalls

What does the answer look like?

A representative response, the same static sample served at /v1/samples/fda_recalls.

as_of2026-09-03T17:00:00Z
categorydrug
window_days90
matched214
count1
class_i_in_page0
noteClass I means a reasonable probability of serious harm or death, Class II temporary or reversible harm, Class III unlikely harm. Classification is FDA's; day-c…
sourceopenFDA (US Food and Drug Administration), CC0
refresh_after2026-09-18T00:00:00.000Z

recalls

recall_numberclassificationstatusrecalling_firmstatecountryproduct_typereasonproduct_descriptionreport_dateinitiation_datedays_since_report
D-0123-2026Class IIOngoingExample Pharma IncNJUnited StatesDrugsLack of Assurance of SterilityExample Injection USP, 10 mg/mL2026-08-122026-07-3022
The same sample as raw JSON
{
 "as_of": "2026-09-03T17:00:00Z",
 "category": "drug",
 "window_days": 90,
 "matched": 214,
 "count": 1,
 "class_i_in_page": 0,
 "recalls": [
  {
   "recall_number": "D-0123-2026",
   "classification": "Class II",
   "status": "Ongoing",
   "recalling_firm": "Example Pharma Inc",
   "state": "NJ",
   "country": "United States",
   "product_type": "Drugs",
   "reason": "Lack of Assurance of Sterility",
   "product_description": "Example Injection USP, 10 mg/mL",
   "report_date": "2026-08-12",
   "initiation_date": "2026-07-30",
   "days_since_report": 22,
   "voluntary_or_mandated": "Voluntary: Firm initiated"
  }
 ],
 "note": "Class I means a reasonable probability of serious harm or death, Class II temporary or reversible harm, Class III unlikely harm. Classification is FDA's; day-counts are ours.",
 "source": "openFDA (US Food and Drug Administration), CC0",
 "refresh_after": "2026-09-18T00:00:00.000Z"
}

How fresh is it, and where does the data come from?

The fastest source behind this answer can change daily, so every response carries a refresh_after timestamp — right now it would be 2026-09-18T00:00:00.000Z. Schedule the next call on that value rather than on a guess.

Method version 0.1.0 · serving cache 1 day · every response carries a result_id you can resolve at /v1/provenance.

When should you use it?

You need the recall records themselves for a firm, state or window.

What you skip building

When should you not use it?

The distribution across many recalls — /v1/fda/recall-trends.

Where else can you find this?