US CPSC Product Recalls Scraper
Pricing
from $3.00 / 1,000 results
US CPSC Product Recalls Scraper
Scrape US CPSC SaferProducts.gov recalls via the free official REST API, no key required. Search by title, product, category, date range, hazard, manufacturer, retailer, importer, distributor, or remedy type. Full product, hazard, injury, remedy, and image data included.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape the US Consumer Product Safety Commission's (CPSC) SaferProducts.gov recall database — the official, free, public REST API. No login, no API key, no cookies, no proxy required. Search by recall title, product name, product category, date range, hazard keyword, manufacturer, retailer, importer, distributor, remedy type, or country of manufacture — or fetch specific recalls directly by their official recall number.
What this actor does
- Two modes:
search(filtered recall search) andbyRecallNumber(direct lookup by one or more official recall numbers) - Rich filtering: title, product name, product category (free-text substring match against CPSC's full ~645-value category taxonomy), description keyword, recall date range, last-updated date range, hazard keyword, injury keyword, manufacturer, retailer, importer, distributor, manufacturer country, remedy type, and "injuries reported only"
- Full recall detail: affected products, hazard descriptions, injury reports, remedies offered, companies involved (manufacturer/retailer/importer/distributor), country of manufacture, product photos, and cross-agency related-recall links (e.g. Health Canada)
- Empty fields are omitted — no nulls, no placeholder text in the dataset output
Output per recall
| Field | Type | Description |
|---|---|---|
recallId | integer | Internal CPSC record ID |
recallNumber | string | Official CPSC recall number (e.g. 26639) |
recallDate | string | Date the recall was announced (YYYY-MM-DD) |
lastPublishDate | string | Date the recall record was last updated (YYYY-MM-DD) |
title | string | Full recall title |
description | string | Full recall description |
url | string | Official CPSC recall page URL |
consumerContact | string | How affected consumers can reach the company |
products | array of objects | Recalled products {name, type, numberOfUnits} |
productNames | array of strings | Flat list of recalled product names |
productTypes | array of strings | Flat list of CPSC product category names |
productUpcs | array of strings | UPC codes, when published |
hazards | array of strings | Hazard description sentences |
injuries | array of strings | Reported injury/incident descriptions (only when real injury data was reported — "None reported" style entries are omitted) |
remedies | array of strings | Remedy description sentences |
remedyOptions | array of strings | Remedy categories offered (Refund, Repair, Replace, etc.) |
manufacturers | array of strings | Manufacturer names |
retailers | array of strings | Retailer names |
importers | array of strings | Importer names (published for a subset of recalls) |
distributors | array of strings | Distributor names (published for a subset of recalls) |
manufacturerCountries | array of strings | Countries of manufacture |
images | array of objects | Recall photos {url, caption} |
relatedRecallUrls | array of strings | Links to related recalls from other agencies (e.g. Health Canada) when CPSC publishes them |
recordType | string | Always "recall" |
scrapedAt | string | ISO 8601 UTC timestamp when the record was scraped |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byRecallNumber |
recallTitle | string | (empty — form shows stroller as an example) | Filter recalls whose title contains this text. Leave blank to search across all titles. |
productName | string | – | Filter recalls whose product name contains this text |
productType | string | – | Filter by CPSC product category, case-insensitive substring match against the full ~645-value taxonomy (e.g. Toy, Bicycles, Batteries and Chargers) |
recallDateFrom / recallDateTo | string | – | Recall-announced date range (YYYY-MM-DD) |
lastPublishDateFrom / lastPublishDateTo | string | – | Last-updated date range (YYYY-MM-DD) |
hazardKeyword | string | – | Filter by hazard keyword (e.g. choking, fire, laceration) |
descriptionKeyword | string | – | Filter by keyword in the full recall description (e.g. lithium, lead paint) |
injuryKeyword | string | – | Filter by keyword in the reported-injury text (e.g. hospitalized, burn) |
manufacturer | string | – | Filter by manufacturer name |
retailer | string | – | Filter by retailer name |
importer | string | – | Filter by importer name |
distributor | string | – | Filter by distributor name |
manufacturerCountry | string | – | Filter by country of manufacture (e.g. China, United States) |
remedyOption | string (select) | – | Refund / Repair / Replace / New Instructions / Dispose / Label / Inspect / No Remedy Available |
injuriesReportedOnly | boolean | false | Only return recalls with a real reported injury |
recallNumbers | array | ["26639"] | Recall numbers to fetch directly (mode=byRecallNumber) |
maxItems | integer | 50 | Maximum records to return (1–500) |
proxyConfiguration | object | Apify AUTO (free datacenter) | Rotates outbound IP per retry to recover from CPSC's occasional multi-minute IP blocks. Free, no residential proxy involved. Can be disabled with {"useApifyProxy": false}. |
Example: search for battery recalls with injuries reported
{"mode": "search","recallTitle": "battery","injuriesReportedOnly": true,"maxItems": 25}
Example: look up specific recall numbers
{"mode": "byRecallNumber","recallNumbers": ["26639", "26692"]}
Example: browse recalls in a product category with a date range
{"mode": "search","productType": "Bicycles & Accessories","recallDateFrom": "2025-01-01","recallDateTo": "2026-08-18","maxItems": 100}
Example: recalls of products manufactured in a specific country with a chosen remedy
{"mode": "search","manufacturerCountry": "China","remedyOption": "Refund","maxItems": 50}
Use cases
- Product safety & compliance teams — monitor new recalls in the categories your company sells or imports
- E-commerce marketplaces — cross-check catalog listings against active recalls to flag or delist affected products
- Insurance & risk analysis — track recall volume, hazard types, and injury rates by manufacturer or category over time
- Consumer advocacy & journalism — research recall trends, remedy patterns, or specific hazard types (choking, fire, lead) for reporting
- Parents & consumer researchers — check whether a specific product, brand, or manufacturer has an open recall before buying
- Retailers & distributors — audit recall history for a given supplier, manufacturer, or country of origin before onboarding
FAQ
What is SaferProducts.gov? It's the US Consumer Product Safety Commission's official public database of consumer product recalls and safety incident reports. This actor reads directly from CPSC's public recall data — no CPSC login or account is needed to access it.
Is this actor affiliated with the CPSC? No. This is an independent, third-party actor that reads CPSC's publicly published recall data. It is not operated or endorsed by the US government.
How far back does the data go, and how fresh is it? CPSC's recall database covers the full history of published recalls (thousands of records going back decades). Each request reads live from CPSC, so results reflect whatever is currently published — typically within a day of an official recall announcement.
Why are some fields like productUpcs or importers missing from certain recalls?
CPSC only publishes those details when they're available for that specific recall. A handful of fields documented in CPSC's schema (a product description separate from the title, a model number, a "sold at" label, and a hazard-type code) are never published by CPSC for any recall, so they're never in the output.
Can I search by UPC or model number? No — CPSC does not offer a working search by UPC or model number in its public data, so this isn't exposed as a filter.
How does the product category filter work if there's no dropdown?
CPSC publishes over 600 distinct product category names, too many for a fixed list. productType matches any part of the category name (case-insensitive), so short keywords like "Toy" or "Bicycles" work just as well as full category names.
What happens if I don't set any filters?
The actor returns recalls across CPSC's entire published history, most recent first, up to your maxItems limit.
Does this actor need a proxy or login? No. It reads a public government API with no authentication. A free Apify datacenter proxy is used automatically in the background to stay reliable; you don't need to configure anything or pay for a residential proxy.