FDA recall and enforcement records across drug, device and food, normalised into one shape
FDA recall and enforcement records across drug, device and food, normalised into one shape with classification, reason, distribution scope and firm. Queryable by firm, product, classification and date. One product type returning nothing never fails the call — the three openFDA endpoints are independent and a gap in one is not a gap in the others.
10000 (raw units)
price
3
calls / 30d
2
unique payers
2026-09-01
updated
Provider
x402-filings.datalayer.workers.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x917e635b83F0dd7e8172c55EC4EEbb28B734cA85",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 60
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"classification": "Class I",
"end": "2026-08-15",
"firm": "Pfizer",
"limit": 25,
"product": "drug",
"search": "contamination",
"start": "2025-08-15"
},
"type": "http"
},
"output": {
"example": {
"count": 25,
"firmSummary": [
{
"firm": "Example Pharma Inc",
"recalls": 4,
"worstClassification": "Class I"
}
],
"problems": [],
"recalls": [
{
"classification": "Class I",
"distribution": {
"scope": "nationwide",
"states": []
},
"firm": "Example Pharma Inc",
"productType": "drug",
"quantity": "12,400 bottles",
"reason": "Failed dissolution specifications",
"reportDate": "2026-07-02",
"rootCause": "manufacturing",
"status": "Ongoing"
}
]
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"classification": {
"description": "Class I, Class II or Class III.",
"examples": [
"Class I"
],
"type": "string"
},
"end": {
"description": "Report date to, ISO. Defaults to today.",
"examples": [
"2026-08-15"
],
"type": "string"
},
"firm": {
"description": "Recalling firm name, partial match.",
"examples": [
"Pfizer"
],
"type": "string"
},
"limit": {
"description": "Max records, 1-100. Default 25.",
"examples": [
25
],
"type": "integer"
},
"product": {
"description": "One of drug, device, food, or all. Default all.",
"examples": [
"drug"
],
"type": "string"
},
"search": {
"description": "Free text matched against product description and recall reason.",
"examples": [
"contamination"
],
"type": "string"
},
"start": {
"description": "Report date from, ISO. Defaults to 1 year ago.",
"examples": [
"2025-08-15"
],
"type": "string"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://x402-filings.datalayer.workers.dev/v1/fda/enforcement" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://x402-filings.datalayer.workers.dev/v1/fda/enforcement");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://x402-filings.datalayer.workers.dev/v1/fda/enforcement")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/6076.json, and this resource appears in /discovery/resources and /discovery/search.