CPSC product recalls - search by product, hazard, date (API)
Pricing
from $5.00 / 1,000 records
CPSC product recalls - search by product, hazard, date (API)
Search U.S. Consumer Product Safety Commission recalls (saferproducts.gov API) by title, product, hazard, manufacturer and date range. One row per recall: number, date, title, description, products, hazards, remedies, manufacturers, retailers, units, image count, URL. Default: last 180 days.
Pricing
from $5.00 / 1,000 records
Rating
0.0
(0)
Developer
RetrainMap Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
CPSC product recalls — search by product, hazard, date (API)
One row per recall from the U.S. Consumer Product Safety Commission's public recall API (https://www.saferproducts.gov/RestWebServices/Recall). Filter by recall title, product name, hazard text, manufacturer and recall date; get recall number, date, title, description, product names, hazards, remedies, manufacturers, importers, retailers, units sold, injuries, image count and the cpsc.gov page URL — normalised, one flat row per recall, ready for CSV or JSON.
The default input (last 180 days, 300 rows) succeeds within 5 minutes and returns rows (about 300 recalls per half year) — Apify auto-tests it daily.
Data source and status
| Publisher | U.S. Consumer Product Safety Commission (CPSC) |
| API | https://www.saferproducts.gov/RestWebServices/Recall?format=json — public, no key (documentation: https://www.cpsc.gov/Recalls/CPSC-Recalls-Application-Program-Interface-API-Information) |
| What this Actor reads | One GET per run with RecallDateStart, RecallDateEnd and, when given, RecallTitle, ProductName, Manufacturer; the API answers with every matching recall in a single JSON array (newest first, no paging) |
| Refresh cadence | CPSC publishes recalls as they are announced (typically several per week). The Actor reads live on every run; fetched_at on each row is the fetch time and last_publish_date is the API's own last-publication date for the recall |
| Copyright | Works of the United States Government are not subject to copyright in the U.S. (17 U.S.C. §105). The data are public; please cite CPSC as the source |
| Known caveats | The API's own Hazard parameter matched nothing for any value tried on 2026-09-04, so hazard_contains is applied by the Actor to the hazard texts of the recalls returned for the other filters (the run summary counts what it dropped); many recalls list importers or retailers instead of manufacturers, so manufacturer_contains can miss them; a malformed date makes the API answer HTTP 200 with an error pseudo-recall, which the Actor detects and fails on; description is trimmed to 2,000 characters |
Honesty note: the rows are the API's own fields flattened — nothing is inferred, summarised or classified by this Actor; recall details are informational and should be confirmed on the linked cpsc.gov page before acting on them. A run stops with an error rather than guess when the API's shape changes.
Identification: the requests carry a product-token User-Agent and the operator's contact
address in the standard From: header (RFC 9110 §10.1.2).
Input
| Field | Type | Meaning |
|---|---|---|
title_contains | string | Optional substring of the recall title (API RecallTitle) |
product_contains | string | Optional substring of a product name (API ProductName) |
hazard_contains | string | Optional substring of the hazard text, applied by the Actor |
manufacturer_contains | string | Optional substring of a manufacturer name (API Manufacturer) |
date_from / date_to | YYYY-MM-DD | Optional, inclusive. Both empty = the last 180 days |
max_records | integer | Default 300, at most 20,000 (newest first) |
request_interval_ms | integer | Default 1000 (floor 250) |
contact_email | string | Sent in the From: header |
Example — recalls since January 2026 whose hazard text mentions fire:
{ "hazard_contains": "fire", "date_from": "2026-01-01", "max_records": 200 }
Output (dataset row)
recall_id, recall_number, recall_date, last_publish_date, title, description
(≤ 2,000 chars), products (names joined with ; ), product_types, hazards, remedies,
remedy_options (e.g. Refund, Repair), manufacturers, importers, distributors,
retailers, manufacturer_countries, units (e.g. "About 2,200"), injuries,
consumer_contact, images_count, url (cpsc.gov recall page), source, fetched_at.
A run summary (filters, the API's own count, rows dropped by the hazard filter, requests,
whether the pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's
key-value store.
Pricing (pay per event)
| Event | Price |
|---|---|
run-start — once per run | $0.10 |
record — per row written | $0.005 |
The default 180-day pull (≤ 300 rows) costs at most $1.60; 1,000 recalls cost $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.
Operator
Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with the U.S. Consumer Product Safety Commission. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.