CPSC Product Recalls Monitor
Pricing
from $0.02 / 1,000 item extracteds
CPSC Product Recalls Monitor
Monitor official U.S. CPSC recalls by product, company, hazard, remedy, and keyword. Export compliance-ready recall datasets and only-new alerts.
Pricing
from $0.02 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Monitor official U.S. Consumer Product Safety Commission (CPSC) product recalls from the public saferproducts.gov recall API. This Apify Actor turns government recall records into clean datasets for compliance, marketplace monitoring, product safety, insurance, legal, and risk teams.
The actor is HTTP-first, fast, and designed for scheduled monitoring. Search by date range, product keyword, company keyword, hazard, remedy, or general text, then export normalized recall records with product names, hazards, remedies, companies, countries, contact details, and images.
What does CPSC Product Recalls Monitor do?
It queries the official CPSC recall JSON endpoint and saves matching recall records to an Apify dataset.
- ✅ Monitor new consumer product recalls by date
- ✅ Search recall titles, descriptions, products, hazards, remedies, companies, and countries
- ✅ Extract normalized product, hazard, remedy, party, country, injury, and image fields
- ✅ Run on a schedule with
onlyNewdedupe byRecallID - ✅ Export data to JSON, CSV, Excel, BigQuery, Google Sheets, or your own API workflow
Who is it for?
Retail compliance teams
Track recalls that might affect SKUs sold in your stores or marketplace catalog.
Marketplace trust and safety teams
Detect safety recalls involving sellers, importers, product categories, or consumer hazards.
Product safety and quality teams
Monitor product names, model families, hazards, incidents, and remedies without manually checking CPSC pages.
Insurance and legal researchers
Collect structured recall evidence with official source URLs, dates, descriptions, injuries, and remedy text.
Brand protection teams
Watch for product mentions, company names, retailer names, and importer details in new recall notices.
Why use this actor?
Manual recall monitoring is easy to miss. The CPSC website is public, but compliance teams usually need repeatable exports, filters, and integrations.
This actor provides:
- 📅 Date range monitoring
- 🔎 Keyword filtering
- 🧾 Structured recall details
- 🏷 Product and company matching
- 🚨 Hazard and remedy extraction
- 🔁 Scheduled
onlyNewmode - 📤 Dataset exports and API access
Official data source
The actor uses the official saferproducts.gov recall REST service:
https://www.saferproducts.gov/RestWebServices/Recall?format=json
The source is public and does not require login, cookies, scraping browser pages, or a paid API key.
Data you can extract
| Field | Description |
|---|---|
recallId | Stable CPSC Recall ID |
recallNumber | Public recall number |
recallDate | Recall announcement date |
lastPublishDate | Last publish/update date when provided |
title | Recall title |
description | Product/recall description |
url | Official CPSC recall URL |
consumerContact | Consumer instructions/contact details |
products | Product objects with name, model, type, units, category |
productNames | Flattened product name list |
hazards | CPSC hazard statements |
remedies | Remedy instructions |
remedyOptions | Remedy labels such as Refund, Repair, Replace |
injuries | Incidents or injuries text |
manufacturers | Manufacturer names and IDs when present |
importers | Importer names and IDs when present |
retailers | Retailer / sold-at text and IDs when present |
distributors | Distributor names and IDs when present |
countries | Manufacturer countries |
upcs | UPCs when provided by CPSC |
imageUrls | Recall image URLs |
images | Image URLs with captions |
matchedFilters | Which user filters matched |
isNew | Whether the Recall ID was unseen in monitor mode |
source | Source endpoint label |
scrapedAt | Actor run timestamp |
How much does it cost to monitor CPSC product recalls?
The actor uses pay-per-event pricing:
- A small start event per run
- A per-record event for each CPSC recall saved
Because it uses the official JSON endpoint and no browser, runs are normally inexpensive. Use a short date range and a low maxItems value for test runs. For ongoing monitoring, schedule the actor daily or weekly with onlyNew enabled so you pay only for newly emitted records.
Input options
sinceDays
Look back this many days when startDate is empty. The default is 30.
startDate and endDate
Use explicit inclusive dates in YYYY-MM-DD format.
keyword
Search across title, description, products, hazards, remedies, companies, countries, and consumer contact text.
productKeyword
Search only product names, descriptions, models, and types.
companyKeyword
Search manufacturers, importers, retailers, and distributors.
hazardKeyword
Search hazard statements.
remedyKeyword
Search remedy instructions and remedy option labels.
maxItems
Maximum recall records to save. Keep this small for first tests and increase for historical exports.
sortBy
Choose newest or oldest.
onlyNew
Enable scheduled monitoring mode. The actor stores seen RecallID values in the default key-value store and emits only unseen recalls on later runs that use the same storage.
includeImages
Include image URL and caption fields when CPSC provides them.
Example input: recent smoke alarm recalls
{"sinceDays": 90,"keyword": "smoke","maxItems": 50,"sortBy": "newest","onlyNew": false,"includeImages": true}
Example input: company monitoring
{"sinceDays": 365,"companyKeyword": "Amazon","maxItems": 100,"sortBy": "newest","onlyNew": true}
Example output
{"recallId": 10840,"recallNumber": "26582","recallDate": "2026-06-25","title": "Combination Smoke and Carbon Monoxide (CO) Detectors Recalled...","url": "https://www.cpsc.gov/Recalls/...","productNames": ["Treatlife Smoke and Carbon Monoxide (CO) Detectors"],"hazards": ["The recalled detectors can fail to alert consumers of a fire..."],"remedyOptions": ["Refund"],"countries": ["China"],"matchedFilters": ["keyword"],"isNew": true}
How to run the actor
- Open the actor on Apify.
- Enter a date range or leave
startDateempty and usesinceDays. - Add keyword, product, company, hazard, or remedy filters if needed.
- Set
maxItems. - Click Start.
- Download the dataset or connect it to another workflow.
Scheduled monitoring workflow
For daily compliance monitoring:
- Set
sinceDaysto 7 or 14. - Add your company, product, hazard, or keyword filters.
- Enable
onlyNew. - Create an Apify schedule that runs daily.
- Send dataset items to Slack, email, Google Sheets, a webhook, or your internal compliance system.
The actor dedupes by stable CPSC RecallID in its default key-value store.
Tips for better results
- Use broad
keywordsearches for discovery. - Use
productKeywordwhen matching SKUs or product families. - Use
companyKeywordfor manufacturers, importers, retailers, or marketplace names. - Use
hazardKeywordfor risks such asfire,burn,choking,fall, orlaceration. - Use
remedyKeywordfor workflows focused on refunds, repairs, replacements, or warnings. - Keep scheduled runs small and frequent instead of running huge historical exports every day.
Integrations
You can connect CPSC recall data to:
- Google Sheets product safety trackers
- Slack alerts for new recall matches
- Marketplace seller risk dashboards
- Catalog compliance review queues
- Insurance and legal research databases
- Webhooks for internal case management systems
- BigQuery or Snowflake for historical recall analytics
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/cpsc-product-recalls-monitor').call({sinceDays: 30,keyword: 'battery',maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/cpsc-product-recalls-monitor').call(run_input={'sinceDays': 30,'keyword': 'battery','maxItems': 50,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~cpsc-product-recalls-monitor/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"sinceDays":30,"keyword":"battery","maxItems":50}'
MCP integration
Use this actor with Apify MCP tools in Claude Desktop, Claude Code, or other MCP clients.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor
Claude Code setup:
$claude mcp add apify-cpsc-recalls https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor
Claude Desktop JSON config:
{"mcpServers": {"apify-cpsc-recalls": {"url": "https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor"}}}
Example prompts:
- "Run the CPSC Product Recalls Monitor for the last 30 days and summarize recalls mentioning batteries."
- "Check whether any new CPSC recalls mention smoke detectors or carbon monoxide alarms."
- "Export CPSC recalls involving Amazon sellers to a table with hazard and remedy columns."
Data freshness
The actor retrieves records from the live CPSC recall service at run time. Use lastPublishDate and recallDate to distinguish original announcements from updated records.
Limitations
- The actor returns what the official CPSC recall endpoint provides.
- Some fields, such as UPCs or manufacturers, may be empty for certain recalls.
- Keyword matching is case-insensitive substring matching, not semantic classification.
onlyNewdedupe is scoped to the actor's default key-value store; changing storage starts a new seen-ID history.
Legality and ethical use
This actor accesses a public U.S. government recall API. Use the data for lawful compliance, safety, research, and business purposes. Always review official CPSC pages for legal decisions, public notices, or customer-facing communications.
FAQ
I got zero results
Try a broader date range, remove narrow filters, or search a simpler keyword such as battery, fire, smoke, toy, or refund.
My scheduled run did not emit an old recall
If onlyNew is enabled, the actor skips Recall IDs it has already seen in the same key-value store. Disable onlyNew or use a fresh storage to re-export historical records.
A field is empty
Some CPSC records do not include every nested field. Empty UPC, manufacturer, distributor, or image arrays usually mean the source record did not provide them.
Related scrapers and monitors
Other Automation Lab actors can complement this workflow:
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/bulk-url-status-checker
- https://apify.com/automation-lab/google-search-results-scraper
Support
If you need a new CPSC filter, output field, or integration example, open an issue on the actor page with the input you used and the expected output.