CPSC API: Search product recalls
Finds U.S. consumer product recalls matching a product type or brand, newest first, with hazards, remedies, incidents, sale details and photos when published.
Unofficial. Not affiliated with or endorsed by CPSC.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Since optional
since Earliest recall date, for example "2024-01-01". Defaults to five years before today.
Not set
- Product, required
product Product type or brand to find, for example "crib" or "IKEA".
crib
- Max Results optional
max_results Most recent matching recalls to return, for example 20. Defaults to 20; maximum 100.
20 (default)
Whole number from 1 to 100.
Input as JSON
{ "product": "crib"}Output
{ "recalls": [ { "link": "https://www.cpsc.gov/Recalls/2026/Play-Yard-and-Crib-Mattresses-Recalled-Due-to-Risk-of-Serious-Injury-or-Death-from-Entrapment-and-Fire-Hazards-Violate-Mandatory-Standards-for-Mattresses-Sold-on-Amazon-by-Voomf" , "hazard": "The recalled mattresses violate the mandatory safety standard for crib mattresses because the mattresses may not adequately fit certain play yards, posing a deadly entrapment hazard. Babies can suffocate in gaps between an undersized mattress, or extra padding, and side walls of a product, especiall…", "remedy": "Refund", "photo_url": "https://www.cpsc.gov/s3fs-public/voomf-1.jpg" , "recall_id": 10904, "what_to_do": "Consumers should stop using the mattresses immediately and contact Voomf for a full refund. Consumers will be asked to destroy the mattresses by writing in permanent marker \"Recalled,\" cutting the play yard mattress in half and cutting the full-sized mattress cover diagonally across the entire mattr…", "recall_date": "2026-08-06", "recall_title": "Play Yard and Crib Mattresses Recalled Due to Risk of Serious Injury or Death from Entrapment and Fire Hazards; Violate Mandatory Standards for Mattresses; Sold on Amazon by Voomf", "product_names": "Voomf Play Yard and Crib Mattresses", "recall_number": "26669", "number_of_units": "About 2,401", "where_and_when_sold": "Online at Amazon.com from January 2026 through May 2026 for between $40 and $87.", "brand_or_manufacturer": "Shanghaiyuejiuyaoguojimaoyiyouxiangongsi (Shanghai Yuejiuyao International Trade Co., Ltd.), dba Voomf, of China", "incidents_or_injuries": "CPSC has received one report of inadequate mattress fit. No injuries have been reported.", "country_of_manufacture": "China" }, { "link": "https://www.cpsc.gov/Recalls/2026/Yixing-Trading-Recalls-KEAWIS-Crib-Mattresses-Due-to-Risk-of-Serious-Injury-or-Death-from-Entrapment-and-Suffocation-Violates-Mandatory-Standard-for-Crib-Mattresses" , "hazard": "The aftermarket mattresses violate the mandatory standard for crib mattresses, as the mattresses may not adequately fit certain play yards or non-full-sized cribs, which could create gaps posing a deadly entrapment hazard. Babies can face a risk of suffocation in gaps between an undersized mattress,…", "remedy": "Refund", "photo_url": "https://www.cpsc.gov/s3fs-public/keawis-1.png" , "recall_id": 10560, "what_to_do": "Consumers should stop using the crib mattresses immediately and contact Yixing Trading for a full refund. Consumers should cut a large \"X\" across the main surface of the mattress, write the consumer's name and date directly on the mattress surface, take a photo and email the photo of the destroyed m…", "recall_date": "2026-01-15", "recall_title": "Yixing Trading Recalls KEAWIS Crib Mattresses Due to Risk of Serious Injury or Death from Entrapment and Suffocation; Violates Mandatory Standard for Crib Mattresses", "product_names": "KEAWIS Crib Mattress", "recall_number": "26191", "number_of_units": "About 1,500", "where_and_when_sold": "Online at Amazon.com from August 2024 through July 2025 for between $50 and $6.", "brand_or_manufacturer": "Yixing Trading of Richmond, Kentucky", "incidents_or_injuries": "None reported", "country_of_manufacture": "China" }, { "link": "https://www.cpsc.gov/Recalls/2026/The-Kalencom-Corporation-Recalls-SARO-Braided-Crib-Bumpers-Due-to-Risk-of-Serious-Injury-or-Death-from-Suffocation-Violates-Federal-Crib-Bumper-Ban" , "hazard": "The recalled padded crib bumpers violate the federal ban on crib bumpers because they can obstruct an infant's breathing, posing a risk of serious injury or death, due to suffocation. This creates an unsafe sleeping environment for infants. Padded crib bumpers are banned by the federal Safe Sleep fo…", "remedy": "Refund", "photo_url": "https://www.cpsc.gov/s3fs-public/SARO-1.png" , "recall_id": 10543, "what_to_do": "Consumers should stop using the crib bumpers immediately and request a full refund in one of the following ways: For SARO Braided Crib Bumpers purchased in store at MacroBaby in Orlando, Florida, consumers should return the item to the store for a refund. For SARO Braided Crib Bumpers purchased onli…", "recall_date": "2026-01-08", "recall_title": "The Kalencom Corporation Recalls SARO Braided Crib Bumpers Due to Risk of Serious Injury or Death from Suffocation; Violates Federal Crib Bumper Ban", "product_names": "SARO Braided Crib Bumpers", "recall_number": "26169", "number_of_units": "About 55", "where_and_when_sold": "MacroBaby, of Orlando, Florida and online at Kalencombaby.com and Target.com from May 2024 through October 2025 for about $60.", "brand_or_manufacturer": "The Kalencom Corporation, of New Orleans, Louisiana", "incidents_or_injuries": "None reported.", "country_of_manufacture": "China" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"cpsc.gov/search_recalls","input":{"product":"crib"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "cpsc.gov/search_recalls" , "input": { "product": "crib" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "cpsc.gov/search_recalls" , "input": { "product": "crib" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run cpsc.gov/search_recalls# with {"product":"crib"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "product" ], "properties": { "since": { "type": "string", "description": "Earliest recall date, for example \"2024-01-01\". Defaults to five years before today." }, "product": { "type": "string", "minLength": 1, "description": "Product type or brand to find, for example \"crib\" or \"IKEA\"." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Most recent matching recalls to return, for example 20. Defaults to 20; maximum 100.", "x-fous-developer": true } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "recalls" ], "properties": { "recalls": { "type": "array", "items": { "type": "object", "required": [ "recall_title", "product_names", "brand_or_manufacturer", "recall_date", "hazard", "incidents_or_injuries", "remedy", "what_to_do", "number_of_units", "where_and_when_sold", "country_of_manufacture", "photo_url", "link", "recall_number", "recall_id" ], "properties": { "link": { "type": "string", "description": "CPSC recall page link." }, "hazard": { "type": [ "string", "null" ], "description": "Description of the hazard." }, "remedy": { "type": [ "string", "null" ], "description": "Remedy offered, such as refund or repair." }, "photo_url": { "type": [ "string", "null" ], "description": "Link to the first product photo." }, "recall_id": { "type": [ "integer", "null" ], "description": "CPSC recall ID.", "x-fous-developer": true }, "what_to_do": { "type": [ "string", "null" ], "description": "Instructions for consumers." }, "recall_date": { "type": "string", "description": "Recall announcement date, YYYY-MM-DD." }, "recall_title": { "type": "string", "description": "Published recall headline." }, "product_names": { "type": [ "string", "null" ], "description": "Names of the recalled products." }, "recall_number": { "type": [ "string", "null" ], "description": "CPSC recall number.", "x-fous-developer": true }, "number_of_units": { "type": [ "string", "null" ], "description": "Published quantity, including any approximations or separately noted countries." }, "where_and_when_sold": { "type": [ "string", "null" ], "description": "Where and when products were sold, as published." }, "brand_or_manufacturer": { "type": [ "string", "null" ], "description": "Brand, manufacturer, importer or distributor named in the recall." }, "incidents_or_injuries": { "type": [ "string", "null" ], "description": "Reported incidents or injuries, if stated." }, "country_of_manufacture": { "type": [ "string", "null" ], "description": "Country or countries of manufacture." } }, "additionalProperties": false }, "description": "Matching recalls, newest first." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
cpsc.gov/search_recalls- Returns
- recall title, products, brand or manufacturer, date, hazard, incidents, remedy, what to do, units, where sold, country, photo, link, recall number and ID
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method cpsc.gov/search_recalls with the inputs above.
Ask your agent
- Show me recent recalls for space heaters sold in the U.S., newest first.
- Any consumer product recalls involving Fisher-Price since January 2023?
- I need a list of baby crib recalls with hazards and remedies listed.
- Find U.S. recalls on electric scooters and e-bikes from the last two years, including units sold and where they were sold.
- Look up cpsc.gov recalls for children's toys from Mattel, with incident reports and recall numbers.
See more
Finds FDA food recall enforcement reports by product, brand, or allergen, newest first. Reports are updated weekly and recall statuses may lag.
open.fda.gov/search_food_recallsFinds FDA medical device recalls whose product description or recalling company matches a phrase, newest first, with the recall class and its health-risk meaning from each FDA recall page. An optional start date limits recalls to those initiated on or after it.
fda.gov/search_device_recallsFinds FDA drug enforcement recalls by medicine or company name, newest first, with status, class, reason and quantity. Recent recalls may not yet appear.
open.fda.gov/search_drug_recallsLists NHTSA safety recalls for a vehicle model, given a model year, make and model or a 17-character VIN. Results cover the model, not whether a specific car has been repaired.
nhtsa.gov/check_recallsFinds known vulnerabilities (CVEs) in the NVD that match a product or vendor name, newest first. Each CVE is flagged when it is in CISA's known exploited catalog.
nvd.nist.gov/search_vulnerabilitiesFinds US trademark filings matching a brand name, optionally limited to likely goods or service classes. Exact marks come first, similar marks follow; not a legal clearance opinion.
uspto.gov/search_trademarksSummarizes NHTSA owner safety complaints for an exact vehicle model year, make, and model. Body-style variants are not combined; mileage is null when not given as a structured value.
nhtsa.gov/get_owner_complaintsSearches USDA FoodData Central foods and branded products by food or brand name, ranked by relevance. Calories and serving sizes are null when not supplied.
fdc.nal.usda.gov/search_foods