CPSC Product Recalls Scraper — SaferProducts.gov Export
Pricing
Pay per event
CPSC Product Recalls Scraper — SaferProducts.gov Export
Export US Consumer Product Safety Commission (CPSC) recall records via the public, keyless SaferProducts.gov REST service — products, hazards, remedies, retailers, injuries and images — as clean flattened JSON rows for any bounded date window.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
🎯 What this scrapes
CPSC's SaferProducts.gov service publishes every US consumer product recall as a raw, deeply nested JSON payload — hazards, remedies, retailers, manufacturers and images all buried in their own arrays. This Actor pulls a bounded date window and flattens every nested field into one clean row, so a compliance watchlist or marketplace safety check becomes a spreadsheet instead of a parsing project. Different regulator and wire format than our FDA drug/food/device Actor — not a duplicate.
🔥 What we handle for you
- 📅 Bounded date windows, always — both dates are required and capped at 31 days, so a run never balloons into a full-corpus pull.
- 🧹 Every nested array flattened — hazards, remedies, retailers, manufacturers and images all land as clean comma-joined strings, never raw JSON blobs.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts,Retry-Afterhonoured. - 🫠 One bad record never fails the run — a malformed recall is logged and skipped, the rest of the window still ships.
- 🧊 Clean, typed dataset rows — Pydantic-validated, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for rows that hit your dataset, plus one small warm-up charge per run.
💡 Use cases
- Screen marketplace listings against active recalls before they ship.
- Feed a compliance watchlist with weekly CPSC recall windows.
- Back an insurer's product-liability risk model with structured recall history.
- Give consumer-safety researchers clean rows instead of CPSC's nested JSON.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
recallDateStart | string | yes | '2026-08-14' | Start of the recall-date window, inclusive, as YYYY-MM-DD. Required — this Actor never runs an unbounded… |
recallDateEnd | string | yes | '2026-08-21' | End of the recall-date window, inclusive, as YYYY-MM-DD. Must be on or after the start date and within 31… |
maxResults | integer | no | 25 | Stop after this many records. Each record is one billed result-row event. The date window, not this… |
proxyConfiguration | object | no | {'useApifyProxy': False} | SaferProducts.gov is a public government API with no anti-bot surface and needs no proxy. Leave this off unless your… |
Example input
{"recallDateStart": "2026-08-14","recallDateEnd": "2026-08-21","maxResults": 10,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
recall_id | integer | CPSC internal recall identifier (RecallID). |
recall_number | string | Public CPSC recall number. |
recall_date | string | Date CPSC announced the recall (YYYY-MM-DD). |
last_publish_date | string | Date the recall record was last published or amended. |
title | string | Recall headline / title. |
description | string | Full recall description text. |
url | string | Link to the recall's page on cpsc.gov. |
consumer_contact | string | Remedy contact info for affected consumers. |
products | string | Recalled product name(s), comma-joined. |
product_units | string | Number of units sold, as published. |
hazards | string | Hazard type(s), comma-joined. |
remedies | string | Remedy action(s) offered to consumers, comma-joined. |
remedy_options | string | Remedy option label(s), comma-joined. |
injuries | string | Reported injury type(s), comma-joined. |
retailers | string | Retailer name(s) that sold the product, comma-joined. |
manufacturers | string | Manufacturer name(s), comma-joined. |
importers | string | Importer name(s), comma-joined. |
distributors | string | Distributor name(s), comma-joined. |
manufacturer_countries | string | Country/countries of manufacture, comma-joined. |
sold_at_label | string | Free-text "sold at" label, when CPSC published one. |
image_urls | string | Recall image URL(s), comma-joined. |
Example output
{"recall_id": 10937,"recall_number": "26716","recall_date": "2026-08-20","last_publish_date": "2026-08-20","title": "CCM Hockey U.S. Recalls FMHVR Hybrid Visors Due to Impact Injury Hazard","description": "The recalled visors can crack or shatter on impact...","url": "https://www.cpsc.gov/Recalls/2026/...","consumer_contact": "CCM Hockey U.S. toll-free at 855-333-2662","products": "FMHVR Hybrid Visor","product_units": "About 12,957","hazards": "Impact injury hazard","remedies": "Consumers should stop using the recalled visors immediately","remedy_options": "Replace","injuries": "None reported","retailers": "Hockey specialty stores nationwide, Oct 2025-Jul 2026, $80-$150","manufacturers": "","importers": "CCM Hockey U.S.","distributors": "","manufacturer_countries": "China","sold_at_label": null,"image_urls": "https://www.cpsc.gov/s3fs-public/CCM-1.gif"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.2 | One-off warm-up charge per run |
result-row | $0.004 | Per unique dataset item |
Example: 1 000 results at the rates above ≈ $4.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- The date window is capped at 31 days per run — this is a deliberate egress guard, not a CPSC limit; chain successive windows for a longer backfill.
- Some free-text fields (e.g. retailer names) embed date ranges or prices as CPSC published them — passed through as-is, no regex extraction.
- Covers CPSC's
Recallresource only — the separate CPSRMS incident-report dataset is out of scope.
❓ FAQ
Do I need an API key?
No. SaferProducts.gov serves this data keylessly — no auth, no API key, no login.
Why are both dates required?
An open-ended query silently returns a full calendar year of recalls. Requiring both bounds keeps every run small and predictable — the window, not maxResults, controls how much data is fetched.
How far back can one run go?
Up to 31 days per run. For a longer history, run the Actor again with the next window — recall data is immutable, so results never change once published.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.