CPSC Product Recalls — UPC, brand, retailer & date
Pricing
from $3.50 / 1,000 results
CPSC Product Recalls — UPC, brand, retailer & date
CPSC recalls API for saferproducts.gov. Filter U.S. Consumer Product Safety Commission recalls by UPC, brand/manufacturer, retailer, and date — one normalized dataset row per recall. Hazard in output; see FAQ for Hazard query limits.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Michael Rice
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
CPSC Product Recalls API — Filter by UPC, brand, retailer & date
Query the official U.S. CPSC saferproducts.gov Recalls REST API and get one normalized dataset item per product recall. Filter by UPC, manufacturer/brand, hazard, retailer, remedy, recall number, title, country, importer, and date range — ideal for compliance monitoring and product-safety research.
Not affiliated with the U.S. CPSC. Public API data only. Verify every recall on the official CPSC page before taking action.
Features
- Official CPSC recalls API — HTTP
GETto saferproducts.gov; no browser, no Crawlee - Rich filters — product name, manufacturer/brand, hazard, remedy, retailer, UPC, recall number, title, manufacturer country, importer, in-conjunction URL, recall date range
- Normalized output — stable fields (
recallNumber,recallDate,title,manufacturers,products,hazards,remedies,retailers,upc,url, …) ready for pipelines and dashboards - Safety by default — empty input auto-applies a ~90-day date window (or set filters /
allowUnfiltered: truefor a capped full dump) - Bounded & resilient —
maxItems(default 100, hard cap 5000), retry/backoff on HTTP 429 / 5xx, clear User-Agent - Optional raw payload — attach the original CPSC JSON under
rawwhenincludeRawis true
Who is it for
- Retail & marketplace compliance teams tracking recalls by brand, UPC, or retailer
- Consumer-product manufacturers / importers monitoring hazard and remedy language
- Insurance, legal, and QA workflows that need machine-readable product recall data
- Researchers and journalists extracting CPSC recall history for analysis
- Developers who want a ready-made Apify Actor instead of hand-rolling the saferproducts.gov client
How to scrape / extract CPSC product recall data
- Open this Actor on Apify and set at least one filter (e.g.
productName,upc,hazard,manufacturer, or a date range). - Optionally set
maxItems,includeRaw, anddescriptionSnippetMaxLength. - Run the Actor. It calls
GET https://www.saferproducts.gov/RestWebServices/Recall?format=json&…
with only documented official parameter names (unknown keys can cause the API to return all recalls). - Read results from the default dataset — one row per recall — or download via the dataset API URL shown in the run output.
Tips: Prefer filtered queries over unfiltered dumps. There is no pagination; the API returns the full match set and this Actor truncates client-side with maxItems. There is no free-text InConjunctionWith parameter — use inconjunctionUrl (InconjunctionURL).
Official docs: CPSC Recalls API Information.
Input example
{"recallDateStart": "2025-01-01","recallDateEnd": "2026-12-31","maxItems": 50,"includeRaw": false,"descriptionSnippetMaxLength": 400,"allowUnfiltered": false}
Store Try / first-run uses a similar date window + modest maxItems so an unedited run succeeds. Other useful filters: productName, manufacturer, retailer, upc, recallNumber. Prefer those over hazard today — see FAQ (upstream Hazard filter currently returns empty). If you clear all filters, the Actor auto-applies a ~90-day date window (unless allowUnfiltered: true).
| Field | Maps to API | Notes |
|---|---|---|
productName | ProductName | e.g. crib |
manufacturer | Manufacturer | Brand / maker |
hazard | Hazard | Official param kept; upstream currently returns 0 for all tried values — filter hazards[] client-side (see FAQ) |
remedy | Remedy | |
retailer | Retailer | |
upc | UPC | |
recallNumber | RecallNumber | |
recallTitle | RecallTitle | |
manufacturerCountry | ManufacturerCountry | |
importer | Importer | |
inconjunctionUrl | InconjunctionURL | |
recallDateStart / recallDateEnd | RecallDateStart / RecallDateEnd | Prefer YYYY-MM-DD |
maxItems | (client) | Default 100, max 5000 |
includeRaw | (client) | Attach original JSON under raw |
descriptionSnippetMaxLength | (client) | Default 400 |
allowUnfiltered | (client) | Default false — empty input auto-applies ~90-day dates; set true only for intentional full dumps |
Output example
{"recallId": 10904,"recallNumber": "26669","recallDate": "2026-08-06","title": "Play Yard and Crib Mattresses Recalled …","manufacturers": [],"products": ["Voomf Play Yard and Crib Mattresses"],"hazards": ["The recalled mattresses violate the mandatory safety standard…"],"remedies": ["Consumers should stop using the mattresses immediately…"],"remedyOptions": ["Refund"],"retailers": ["Online at Amazon.com from January 2026 through May 2026…"],"importers": ["Shanghaiyuejiuyaoguojimaoyiyouxiangongsi … dba Voomf, of China"],"distributors": [],"manufacturerCountries": ["China"],"upc": [],"url": "https://www.cpsc.gov/Recalls/2026/…","descriptionSnippet": "This recall involves Voomf-branded play yard mattresses…","consumerContact": "Voomf by email at …","lastPublishDate": "2026-08-07","source": "cpsc-saferproducts-gov"}
More samples: OUTPUT.example.json.
Pricing
Live Store pricing (PAY_PER_EVENT) — locked Console PPE:
| Event | Price (USD) | Notes |
|---|---|---|
Actor start (apify-actor-start) | $0.00005 | One-time per run (memory-scaled per Apify; min one event) |
Dataset item (apify-default-dataset-item) | $0.0035 | Per normalized recall row — from $3.50 / 1,000 results |
Example: 100 items ≈ $0.00005 + 100 × $0.0035 ≈ $0.35 (before Apify’s ~20% platform margin on applicable PPE).
You are charged for these events only — not for separate platform compute usage under this monetization model. Historical planning notes: ./PPE_ESTIMATE.md (superseded by live Store prices above).
Local development
npm install# place input at storage/key_value_stores/default/INPUT.jsonnpm run dry-runnpm run test:fetch
Requires Node.js 18+. Uses Apify SDK v3 (apify package).
Rate limits & ToS
- Public, no API key. Be a good citizen: descriptive User-Agent, avoid tight polling, prefer filtered queries.
- No published hard rate limit found in the public guide; this Actor still retries with backoff on 429 / 5xx.
- Always verify critical decisions against the official recall page in
url.
FAQ / disclaimer
Is this official CPSC software? No. Not affiliated with, endorsed by, or operated by the U.S. CPSC.
What happens if I set no filters? The Actor auto-applies a ~90-day recallDateStart / recallDateEnd window so Store Try / first runs succeed without dumping the full catalog. Pass explicit filters for precision, or set allowUnfiltered: true for an intentional full dump (still capped by maxItems).
Is the data complete? Dataset items are convenience transforms of public API data and may be incomplete, delayed, or truncated (descriptionSnippet). Verify every recall on the official CPSC page before consumer, retail, or compliance action.
Is this legal advice? No.
Why does hazard return 0 recalls? The Actor correctly maps hazard → official API Hazard. As of 2026-09-23 probing, saferproducts.gov returns an empty array for every Hazard= value tried — including short words that appear in live Hazards[].Name text (fire, entrapment, choking, …), multi-word fragments, a verbatim Name string, and the Programmer’s Guide example RecallTitle=stroller&Hazard=pinch (115 hits without Hazard, 0 with it). This is not case-sensitivity or a missing vocab list: Hazards[].Name is long narrative prose, and HazardType / HazardTypeID on sampled records were empty. Do not invent alternate query keys (Hazards, HazardName, …) — unknown params make the API return all recalls. Correct usage today: filter with working fields (productName, retailer, manufacturer, remedy, recallTitle, dates, …), then substring-match the dataset’s hazards array client-side. The hazard input is retained so a future API fix works without an Actor change.
License
MIT (Actor scaffold). Upstream recall content remains subject to CPSC / U.S. government public-information terms.