CPSC Recall API avatar

CPSC Recall API

Pricing

from $2.40 / 1,000 recall results

Go to Apify Store
CPSC Recall API

CPSC Recall API

Unofficial CPSC recall API: search US consumer product recalls from the Consumer Product Safety Commission by product keyword, date and manufacturer country. Returns recall title, hazards, remedies, manufacturers, importers and countries as clean JSON.

Pricing

from $2.40 / 1,000 recall results

Rating

0.0

(0)

Developer

Sourcing Data Studio

Sourcing Data Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Find out whether a product type was recalled in the US, and why, before you order it. CPSC Recall API searches the recall notices of the U.S. Consumer Product Safety Commission by keyword, date and manufacturer country and returns one clean row per recall: hazards, remedies, importers, where it was sold and image links. You pay only for recalls saved: $0.003 per recall result on the Free tier, so a typical query (25 recalls for one product keyword) costs $0.075.

Unofficial: not affiliated with or endorsed by the U.S. Consumer Product Safety Commission.

Source: U.S. Consumer Product Safety Commission (CPSC), recall data from SaferProducts.gov.

Importers and sourcing teams use this product recall API to look up US product recalls and to check whether a product type or brand has been recalled, and why, before they buy. As a CPSC recall API it feeds spreadsheets, compliance checks and AI agents. As a SaferProducts.gov API it covers the recall notices (not the consumer incident reports). As a source of product safety recall data it answers the question behind every consumer product recall check. To list recalled products from China, set the manufacturer country to China.

What does CPSC Recall API do?

  • Turns product keywords into a list of matching CPSC recall notices. Each keyword is searched in the recalled product names and in the recall titles.
  • Filters by recall date (from, to or both) and by the country where the product was made. The country is matched after normalising names, so "USA", "U.S." and "United States" count as the same country, and a notice that says "China (plug)" counts as China.
  • Lists recalls in a date range without any keyword, newest first.
  • Removes duplicates, so a recall found by two keywords is saved once.
  • Keeps every notice when a firm is a private individual: the name in the manufacturer, importer or distributor list is replaced by [individual, name withheld], and withheldNames counts the replacements. The notice title, description and link are shown as the CPSC published them, so a firm name can still appear there.
  • Charges one event per saved recall. Failed requests, duplicates and invalid rows are never charged.
  • Writes a run summary with totals, failures, requests that were not made or not read, the source credit and your feedback to the key-value store.
  • Works from Apify Console, the Apify API, n8n, Make and AI agents through the Apify MCP server.

Output example

These rows come from a real run.

[
{
"recallId": 10905,
"recallNumber": "26670",
"recallDate": "2026-08-06",
"title": "A2batt Recalls EEMB Lithium Coin Battery Chargers Due to Risk of Serious Injury or Death from Battery Ingestion; Violate Mandatory Standard for Consumer Products with Coin Batteries",
"description": "This recall involves EEMB Lithium-ion Coin Battery Chargers with Rechargeable 2032 Batteries, model SKLC-0420-0040. The product includes the charger, four rechargeable 2032 lithium-ion batteries, and a USB cable. The brand name \"EEMB\" is on the front of the product and the model number \"SKLC-0420-0040\" is printed on the back.",
"productNames": [
"EEMB Lithium-ion Coin Battery Chargers with Rechargeable 2032 Batteries"
],
"productTypes": [],
"hazards": [
"The recalled battery chargers violate the mandatory standard for consumer products containing button cell or coin batteries, because the charger has lithium coin batteries that can be accessed easily by children. In addition, the coin batteries provided with the battery charger are not in child-resistant packaging, and the packaging does not have the warnings, as required by Reese's Law. When button cell or coin batteries are swallowed, the ingested batteries can cause serious injuries, internal chemical burns and death."
],
"remedies": [
"Consumers should stop using the charger immediately, remove the batteries and place them in an area that children cannot access. Contact A2batt to receive a full refund. Consumers will be asked to write \"RECALL\" on the charger. If batteries remain in packaging, dispose of the batteries according to local hazardous waste guidelines and provide a photo of the disposal to [email removed]. Note: Button cell and coin batteries are hazardous. Batteries should be disposed of or recycled by following local hazardous waste procedures."
],
"remedyOptions": [
"Refund"
],
"injuries": "None reported",
"manufacturers": [],
"importers": [],
"distributors": [
"EEMB USA, doing business as A2batt, Inc., of Redlands, California"
],
"withheldNames": 0,
"retailers": [],
"manufacturerCountries": [
"China"
],
"soldAt": "Online at Amazon.com from August 2024 through March 2026 for about $14.",
"upcs": [],
"imageUrls": [
"https://www.cpsc.gov/s3fs-public/eemb-1.png",
"https://www.cpsc.gov/s3fs-public/eemb-2_0.png"
],
"url": "https://www.cpsc.gov/Recalls/2026/A2batt-Recalls-EEMB-Lithium-Coin-Battery-Chargers-Due-to-Risk-of-Serious-Injury-or-Death-from-Battery-Ingestion-Violate-Mandatory-Standard-for-Consumer-Products-with-Coin-Batteries",
"lastPublishDate": "2026-08-07",
"searchQuery": "charger",
"source": "CPSC",
"retrievedAt": "2026-10-06T03:59:44.588Z"
},
{
"recallId": 10858,
"recallNumber": "26610",
"recallDate": "2026-07-09",
"title": "Flaunt Recalls Magsafe Battery Chargers Due to Risk of Serious Injury or Death from Fire and Burn Hazards",
"description": "This recall involves the Flaunt MagSafe Battery Charger power banks with model number E33A. \"FLAUNT\" is engraved on the front right side of the power bank and there is a small circular button in the bottom center of the front side of the power bank. The back label of the unit is marked \"FLAUNT\" and \"Model: E33A\". The power banks were sold in melon, black, lavender and white. The chargers measure 3 by 2 by 0.25 inches and weigh around 3.2 ounces.",
"productNames": [
"Flaunt MagSafe Battery Chargers"
],
"productTypes": [],
"hazards": [
"The lithium-ion battery in the recalled power banks (chargers) can overheat and ignite, posing a risk of serious injury or death from fire and burn hazards."
],
"remedies": [
"Consumers should stop using the recalled power banks immediately and contact Flaunt for a full refund of the $65 purchase price in the form of a check or as an $80 store credit at flauntcases.com. Consumers will be asked to register at www.flauntcases.com/pages/recall and submit two photographs. One photo should show the front of the power bank with the word \"Recalled\", the consumers initials, and the registration date written on it in permanent marker. The second photo should show the model number E33A located on the back of the power bank. Consumers will receive an email with instructions on disposing the charger in accordance with local and state regulations. Note: Do not throw this recalled power bank with lithium-ion battery in the trash, the general recycling stream (e.g., street-level or curbside recycling bins), or used battery recycling boxes found at various retail and home improvement stores. Recalled lithium-ion batteries must be disposed of differently than other batteries, because they present a greater risk of fire. Your municipal household hazardous waste (HHW) collection center may accept this recalled lithium-ion battery or device for disposal. Before taking your battery or device to a HHW collection center, contact that office ahead of time and ask whether it accepts recalled lithium-ion batteries. If it does not, contact your municipality for further guidance."
],
"remedyOptions": [
"Refund"
],
"injuries": "The firm has received five reports of the power banks overheating and catching fire, including one report of a burn to a consumer's hand, one report of a burn to a consumer's arm and four reports of minor property damage.",
"manufacturers": [],
"importers": [
"iDecoz Inc. dba Flaunt, of Brooklyn, New York",
"Case-Mate, of Atlanta, Georgia"
],
"distributors": [],
"withheldNames": 0,
"retailers": [],
"manufacturerCountries": [
"China"
],
"soldAt": "Online at flauntcases.com from May 2024 through April 2025 for about $65.",
"upcs": [],
"imageUrls": [
"https://www.cpsc.gov/s3fs-public/flauntmag-1.gif",
"https://www.cpsc.gov/s3fs-public/flauntmag-2.gif"
],
"url": "https://www.cpsc.gov/Recalls/2026/Flaunt-Recalls-Magsafe-Battery-Chargers-Due-to-Risk-of-Serious-Injury-or-Death-from-Fire-and-Burn-Hazards",
"lastPublishDate": "2026-07-10",
"searchQuery": "charger",
"source": "CPSC",
"retrievedAt": "2026-10-06T03:59:44.588Z"
},
{
"recallId": 10706,
"recallNumber": "26399",
"recallDate": "2026-04-09",
"title": "Shenzhen Baihang Recalls VEEKTOMX Mini Power Banks, Due to Fire and Burn Hazards; Sold on Amazon",
"description": "This recall involves VEEKTOMX VT103 Small Portable Charger Mini Power Banks. The power banks are white, pink, or purple. The recalled power banks have model number \"VT103\" imprinted on the back of the power bank and do NOT contain a serial number on the bottom right corner of the back of the power bank. Note: Do not throw this recalled lithium-ion battery or device in the trash, in the general recycling stream (e.g., street-level or curbside recycling bins), or in used battery recycling boxes found at various retail and home improvement stores. Recalled lithium-ion batteries must be disposed of differently than other batteries, because they present a greater risk of fire. Your municipal household hazardous waste (HHW) collection center may accept this recalled lithium-ion battery or device for disposal. Before taking your battery or device to a HHW collection center, contact that office ahead of time and ask whether it accepts recalled lithium-ion batteries. If it does not, contact your municipality for further guidance.",
"productNames": [
"VEEKTOMX Portable Charger Mini Power Banks"
],
"productTypes": [],
"hazards": [
"The lithium-ion battery in the recalled power banks can overheat and ignite, posing fire and burn hazards to consumers."
],
"remedies": [
"Consumers should immediately stop using the recalled power banks and contact Shenzhen Baihang to verify power bank is part of the recall and receive a free replacement power bank."
],
"remedyOptions": [
"Replace"
],
"injuries": "Shenzhen Baihang has received three reports of fires resulting in minor property damage. No injuries have been reported.",
"manufacturers": [],
"importers": [
"Shenzhen Baihang Technology Co., Ltd., of China"
],
"distributors": [],
"withheldNames": 0,
"retailers": [],
"manufacturerCountries": [
"China"
],
"soldAt": "Amazon.com between January 2024 and September 2024, for between $24 and $30.",
"upcs": [],
"imageUrls": [
"https://www.cpsc.gov/s3fs-public/Picture13_4.png",
"https://www.cpsc.gov/s3fs-public/Picture14_4.png",
"https://www.cpsc.gov/s3fs-public/Picture15_3.png"
],
"url": "https://www.cpsc.gov/Recalls/2026/Shenzhen-Baihang-Recalls-VEEKTOMX-Mini-Power-Banks-Due-to-Fire-and-Burn-Hazards-Sold-on-Amazon",
"lastPublishDate": "2026-04-10",
"searchQuery": "charger",
"source": "CPSC",
"retrievedAt": "2026-10-06T03:59:44.588Z"
}
]

The soldAt field holds the sales sentence of the notice: the stores, the sale period and the price, for example "Online at Amazon.com from August 2024 through March 2026 for about $14." CPSC names the stores inside that sentence, so the retailers list is empty for almost every notice. It is filled only for the few notices that list plain retailer names.

Notices from before 1998 are press releases: they have a title, a description, product names and often a manufacturer, while remedies, injuries, soldAt and imageUrls are empty. Most of them name no country.

What data can you get with CPSC Recall API?

Each recall notice is one row. Dates are ISO dates (YYYY-MM-DD). Lists such as hazards or manufacturers are arrays. Images are linked, not copied.

FieldTypeDescription
recallIdintegerCPSC internal recall ID. Unique per recall notice.
recallNumberstringPublic CPSC recall number without the hyphen, for example 26670 (shown as 26-670 on cpsc.gov). A few old numbers end with a letter.
recallDatestringDate the recall was announced, as YYYY-MM-DD.
titlestringRecall title as published by CPSC.
descriptionstringRecall description text. Phone numbers and e-mail addresses are removed, and so are sentences that tell whom to call or write to. Null when the notice has no description, or when the text named a person and was withheld. Of the 10,000 newest notices on 9 October 2026, 97 had a null description (about 1 in 100), and 85 of those were from before 2004.
productNamesarrayNames of the recalled products.
productTypesarrayProduct category given by CPSC, for example Helmets & Helmet Accessories. Empty for most notices since 2014.
hazardsarrayHazards named in the notice, usually one sentence each, for example: The charger can overheat, posing fire and burn hazards.
remediesarrayWhat the consumer is told to do, for example stop using the product and contact the firm. Empty for notices before 1998; there the description tells it. E-mail addresses and phone numbers are removed.
remedyOptionsarrayShort remedy labels such as Refund, Repair or Replace. Empty for most notices before 2014.
injuriesstringInjuries or incidents reported, as text. Null when the notice gives none (all notices before 1998).
manufacturersarrayNames of the manufacturers as CPSC prints them, usually with the place, for example Acme Co., Ltd., of China. Often empty in recent notices, which name the importer or distributor instead.
importersarrayNames of the importers as CPSC prints them, usually with the place. Empty when the notice names none.
distributorsarrayNames of the distributors as CPSC prints them, usually with the place. Empty when the notice names none.
withheldNamesintegerHow many names in manufacturers, importers and distributors were replaced by [individual, name withheld] because the firm is a private individual. 0 when none.
retailersarrayRetailer names, only for the few notices that list plain names. Empty for almost every notice: CPSC names the stores inside the sales sentence, which is in soldAt.
manufacturerCountriesarrayCountries where the product was made, as normalised English names, for example China or United States. Empty when the notice names none. Of the 10,000 newest notices on 9 October 2026, 1,680 named none (about 1 in 6), and 1,016 of those were from before 1998.
soldAtstringWhere, when and for how much the product was sold, as one sentence from the notice, for example: Online at Amazon.com from August 2024 through March 2026 for about $14. Null for notices before 1998.
upcsarrayUPC barcodes listed in the notice.
imageUrlsarrayLinks to the product images of the notice, normally on CPSC servers. Images are linked, not copied. Empty for notices before 1998.
urlstringLink to the recall notice on cpsc.gov. A typo in the source link (a space, a missing slash) is repaired. Null when the source gives no usable link.
lastPublishDatestringDate CPSC last updated the notice, as YYYY-MM-DD.
searchQuerystringSearch term that found the recall. Null for date-only runs.
sourcestringData source. Always CPSC.
retrievedAtstringISO 8601 time when the notice was collected.

Use it as a consumer product recall API for questions such as: has this charger, stroller or heater type been recalled, which company imported it, where was it made, and what did the notice tell consumers to do. You can also use it to check if a product was recalled before you place an order.

How to use CPSC Recall API

  1. Click Try for free on this page.
  2. Enter one or more Product search terms, for example power bank. Or leave them empty and set a start or end date.
  3. Optional: set a Manufacturer country such as China (one English country name), and a date range.
  4. Set Maximum recalls. The run stops as soon as that many recalls are saved.
  5. Click Start. Results appear in the Output tab.
  6. Download the results as JSON, CSV or Excel, or read them through the API.

At least one of the search terms, the start date or the end date is required. The newest recalls come first.

Input examples

Check a product type

{
"searchQueries": [
"power bank",
"portable charger"
],
"maxItems": 50
}

Recent recalls by country

{
"manufacturerCountry": "China",
"dateFrom": "2025-01-01",
"maxItems": 100
}

Product search in a date range

{
"searchQueries": [
"stroller"
],
"dateFrom": "2023-01-01",
"dateTo": "2025-12-31",
"maxItems": 200
}

How much does CPSC Recall API cost?

EventYou pay forFreeBronzeSilverGold
Recall resultOne recall notice saved to the dataset. Failed requests, duplicates and invalid rows are never charged.$0.003$0.003$0.0027$0.0024

Prices are per event. Your tier follows your Apify subscription plan.

On the Free tier, $0.003 per recall result means:

  • 100 recall results cost $0.30.
  • 1,000 recall results cost $3.00.
  • A typical query (25 recalls for one product keyword) is 25 recall results and costs $0.075.

Apify also charges a tiny start fee per run (apify-actor-start, $0.00005 per GB of memory). Failed requests, duplicates and invalid rows are never charged. To cap your spending, set Maximum cost per run in the run options; the run stops cleanly when that budget is used. A broad keyword can match hundreds of recalls, so set Maximum recalls to the number you need.

Use CPSC Recall API from the API, n8n, Make or an AI agent

Apify API

Run the Actor and get the recalls in one call:

curl

curl -X POST "https://api.apify.com/v2/acts/sourcing-data-studio~cpsc-recall-api/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["power bank","portable charger"],"maxItems":50}'

JavaScript (Node.js, npm install apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"searchQueries": [
"power bank",
"portable charger"
],
"maxItems": 50
};
const run = await client.actor('sourcing-data-studio/cpsc-recall-api').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (pip install "apify-client>=3", Python 3.11 or later)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"searchQueries": [
"power bank",
"portable charger"
],
"maxItems": 50
}
run = client.actor("sourcing-data-studio/cpsc-recall-api").call(run_input=run_input)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)

n8n and Make

Use an HTTP request module with the same URL, method POST and a JSON body like the input examples above. Store your Apify API token as a credential, never in the workflow itself.

AI agents through the Apify MCP server

Connect your agent to the Apify MCP server and call sourcing-data-studio/cpsc-recall-api with the same input. Agents can use the Feedback for the developer field to report missing fields or problems.

For AI agents

  • Minimal input: {"searchQueries":["charger"],"maxItems":10}. At the Free price, 10 recalls cost $0.03 plus the platform's start fee.
  • Read first: title, recallDate, hazards, remedies and url (the notice on cpsc.gov).
  • Outcomes: the run status message and the RUN_SUMMARY record in the run's key-value store, where listings gives each request one status: ok, no-match, blocked, failed, stopped or not-read. After Apify restarted a run, listings holds only the requests that were read after the restart (see Limits).
  • Do not use it for consumer complaints or incident reports, for recalls of other agencies or countries, or as proof that a product is safe.
  • Callable through the Apify MCP server as the tool sourcing-data-studio/cpsc-recall-api and through the Apify API.

Limits

  • At most 10,000 recalls per run and at most 20 search terms. The default is 100 recalls.
  • Each search term makes two requests to the source (product name and recall title). A run without search terms makes one request per calendar year, newest year first, and stops once your limit is reached. If the request for one year fails, the older years are still requested. Three failed requests in a row end the run. Requests that were not made because the run was stopped (by your limit, by the time limit or by three failed requests in a row) are listed as "stopped" in the run summary. A run that the time limit stopped before every request was made ends as failed when it saved no recall, and nothing is charged for recalls.
  • If a run ever ends while a request is still waiting to be made, the Actor starts the work again for that request, at most three times, after a wait of 2, 4 and 8 seconds. It does not do this when a proxy is set, because starting again could use another proxy address. A request that is still not read after that is listed as not-read in the run summary, and the status message names the years of your date range or the searches that were not read. A run that saved no recalls and has requests that were not read ends as failed, and nothing is charged for recalls. A run that saved recalls stays a success and says which requests were not read. The years of a date range do not overlap, so you can run only the years that were not read. A search term is two requests (product names and recall titles), so a second run of it saves and charges all its recalls again, also those that the first run saved. The Actor counts its limit of 30 requests per minute anew each time it starts the work again, so in the minute after a new start a run with search terms can make more than 30 requests. It still makes one request at a time.
  • Apify can restart a run, for example when it moves the run to another server. CPSC Recall API keeps no record of the run across a restart, and it saves its recalls only after its last request was made. So recalls that were found before the restart and not yet saved are lost, and the Actor cannot tell which requests were read before it. After a restart no request is marked not-read, and the requests that were read before the restart are missing from listings in the run summary. The numbers in the run summary (totals and billing) count only the part of the run after the restart. The status message says that the run was restarted and that recalls found but not yet saved may be missing. When you pay per event, it also gives the number of recalls the run has saved in all, before and after the restart. That number is the charging count that Apify keeps for the run. When you do not pay per event, no count is known, and the message says that the recalls saved before the restart are in the dataset. A restarted run does not end as failed because of "No recalls saved", since recalls may have been saved before the restart. Its message never says that nothing was charged, and it gives no advice to run it again, because that would save and charge the earlier recalls a second time. If your Maximum cost per run was already used up when the run restarted, the message gives the number of recalls saved in all and says that the run stopped at your maximum cost per run.
  • The source offers no filter for the manufacturer country, so that filter is applied to the recalls the Actor has already received. A run with a country and a very short date range can return few rows.
  • The data starts in 1973. A start date before 1973 is treated as 1973-01-01 and an end date in the future as today. A date range that ends before 1973 or starts after today returns nothing and makes no request.
  • The manufacturer country must be one English country name that the Actor knows. A value such as "Germany and France" or a typing error stops the run before any request is made.
  • No proxy is used by default: the source is an official open API. You can switch on Apify Proxy in the advanced settings, but a proxy is never used to get around a refusal (see below).
  • Requests are slow on purpose: one at a time, at most 30 per minute (with the one exception above), with a pause and a retry when the source answers with a server error.
  • A refusal ends the tries for that page. When the source refuses a request (HTTP 401, 403 or 407, or the "Access Denied" page of its edge), the page is listed as blocked in the run summary, is not asked for again and is never charged. After HTTP 429 the Actor waits as long as the source asks, at most 60 seconds, and asks again; when the source says that the rate limit is used up (x-ratelimit-remaining: 0) or asks for a longer wait, the page is listed as blocked as well. The Actor never asks again from another address after a refusal. Only a connection error, such as a proxy that cannot connect, is retried through a new connection.
  • Names of individuals: a manufacturer, importer or distributor is replaced by [individual, name withheld] only when the Actor is sure that it is a private individual, because a company name must never be replaced. It looks only at firms in China, Hong Kong or Taiwan that are named by two words with no sign of a company or a brand, with a common first name or a common Chinese family name among them, and whose name is not part of a product name of the notice. Any other sole trader (one with a US address, for example) is shown as CPSC published it, and so is every name in the title, the description and the link of a notice. withheldNames counts only the names that were replaced.
  • Recalls are de-duplicated within a run, not across runs.
  • The Actor shows what CPSC has published. No recall in the results does not prove that a product is safe, and it is not legal or compliance advice.

FAQ

Which data does CPSC Recall API collect?

Only public recall notices that anyone can read without logging in, as published by CPSC. The Actor needs no API key and sets no cookies.

Which data is NOT collected?

  • The CPSC consumer contact field is never read. Phone numbers and e-mail addresses are removed from the texts that are kept, such as the description and the remedies. In a description, the sentences that tell whom to call or write to are cut out.
  • When a text still names a person (a media contact, an "Attention:" line, an official who is quoted), the whole text is withheld: the field is null, or the entry is left out of its list, and the run summary counts it under privacy. This concerns about 1 in 80 notices (124 of the 10,000 newest on 9 October 2026), mostly from before 2004. The recall itself is always kept.
  • The firm lists (manufacturers, importers, distributors) repeat the names CPSC publishes as the responsible firms. When a person does business under a trade name ("dba"), only the trade name and the place are kept. When a firm is a private individual, such as a sole trader named as importer, the name is replaced by [individual, name withheld], withheldNames counts the replacements (0 when there are none), and the notice itself is kept. A company name is never replaced this way: a name is replaced only when it is clear that it belongs to a person (see Limits), and every other value is shown as CPSC published it.
  • Image files are not copied. You get links to the images on the CPSC servers.
  • Consumer incident reports and complaints from SaferProducts.gov are not included, only recall notices.
  • Recalls by other agencies or other countries are not included.

Why did my run return 0 recalls?

When the status message says "No recalls matched", every request was read, and no recall matched your search terms, dates and country. The run summary in the Storage tab shows how many recalls the country filter removed.

The run ends as failed, and the status message says so, in four other cases: the source could not be reached, the source sent recalls that all failed the checks, the run ended before it had read every request, or the run time limit stopped the run before every request was made. In the third case the message names the years of your date range or the searches that were not read, and the run summary lists them as not-read. In the fourth case the run summary lists the requests that were not made as stopped. It is not known whether those requests hold matching recalls. When requests were not read, run the Actor again. Nothing is charged for recalls in any of these cases.

Two more cases return 0 recalls without a failed run, and the status message says which: a date range that lies outside the data (it ends before 1973 or starts after today), and a Maximum cost per run that is too low to pay for one recall. No request is made then. If Apify restarted your run, the message says so as well, and the recalls saved before the restart are in the dataset (see Limits).

Why is a country missing for some recalls?

About 1 in 6 notices has no country in the CPSC data (1,680 of the 10,000 newest on 9 October 2026), and most of those are from before 1998. A recall without a country cannot match a country filter. The values "Unknown" and "Various countries" are not kept. Qualifiers are removed, so "China (plug)" becomes China and "Assembled in the United States" becomes United States.

A few links in the CPSC data carry a typo, such as a space or a missing slash. The Actor repairs them, so the link opens the notice. If a link cannot be repaired, url is null and the recall is still returned.

Can I use the data and the CPSC name?

CPSC states that its recall notices may be freely copied and distributed. Credit CPSC and do not imply its endorsement. This Actor is unofficial and is not endorsed by CPSC. The notice texts, the policy and more are on cpsc.gov.

Can I schedule CPSC Recall API?

Yes. Save your input as a task and add a schedule in Apify Console, for example a weekly check of the product types you buy.

Feedback

Tell us what to add next in the Feedback for the developer input field, or open an issue in the Issues tab. Feedback is saved with the run summary.