Product Recall Monitor Scraper (CPSC, EU Safety Gate, NHTSA)
Pricing
from $2.80 / 1,000 recall delivereds
Product Recall Monitor Scraper (CPSC, EU Safety Gate, NHTSA)
One monitor for product recalls from CPSC (U.S. consumer products), EU Safety Gate (EU dangerous products) and NHTSA (U.S. vehicle recalls). Unified schema with recall date, product, hazard, risk, remedy and source URL. Schema-validated JSON.
Pricing
from $2.80 / 1,000 recall delivereds
Rating
0.0
(0)
Developer
Steadfetch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Features
Share
Unified Product Recall Monitor -- CPSC, Safety Gate, NHTSA
Monitor official product recalls and safety alerts from three public sources:
- CPSC (
cpsc): U.S. Consumer Product Safety Commission product recalls from SaferProducts.gov (JSON API). - EU Safety Gate (
safety-gate): European Commission dangerous non-food product alerts from Safety Gate (XML API). - NHTSA (
nhtsa): U.S. National Highway Traffic Safety Administration vehicle recalls from api.nhtsa.gov (JSON API).
Set source to a single source or all to query every source. Every item is delivered once per user so a scheduled monitor never bills the same item twice.
No website scraping, no login, no API key.
Tested daily. Last verified: 2026-11-01
What it does
- Queries the official CPSC SaferProducts.gov REST API for the date range
since/until, optionally filtered by keyword. - Queries the official EU Safety Gate XML API for the newest
weeksBackweekly reports, optionally filtered by publication datesinceand productcategories. - Queries the official NHTSA recalls-by-vehicle JSON API for one required
make,modelandmodelYear. - Normalises every recall/alert into a unified schema and validates it against
.actor/dataset_schema.json; malformed records are skipped and any item that violates the schema fails the run. - Deduplicates within each run and across runs per Apify user: CPSC by
recall_number, Safety Gate bycaseNumber + reference(scoped by category filter), NHTSA bycampaign_number + make + model + model_year. SettingmonitorMode: falseskips the cross-run dedupe for a full backfill. - Excludes personal-contact fields from all sources.
- Charges a reserved
monitor-checkevent once per checked item in monitor runs (see Pricing).
Input
| Field | Type | Required | Description |
|---|---|---|---|
source | string | No | cpsc, safety-gate, nhtsa, or all. Defaults to all. |
since | string | No | Start date (YYYY-MM-DD). CPSC and Safety Gate. Defaults to 30 days back. |
until | string | No | End date (YYYY-MM-DD). CPSC only. |
keyword | string | No | Case-insensitive keyword. CPSC only. |
weeksBack | integer | No | Number of weekly reports. Safety Gate only. Default 4, max 52. |
categories | array | No | Product category filter. Safety Gate only. |
make | string | NHTSA when source=nhtsa | Vehicle make (e.g. TOYOTA). |
model | string | NHTSA when source=nhtsa | Vehicle model (e.g. CAMRY). |
modelYear | integer | NHTSA when source=nhtsa | Four-digit model year (1900-2100). |
maxResults | integer | No | Maximum new recalls per source (1-5000). Default 1000, prefill 10. |
monitorMode | boolean | No | Only deliver new recalls. Default true, prefill false. |
Monitor state
Delivered items are stored in the named key-value store cpsc-recall-monitor-state, one key per Apify user:
-
CPSC: by
recall_number -
Safety Gate: by
caseNumber|reference(scoped per category filter) -
NHTSA: by
make|model|model_year|campaign_number -
First run: delivers every matching item.
-
Later runs: delivers only items not yet delivered.
-
Setting
monitorMode: falsedisables dedupe for a full backfill. -
Clearing the
seen-<your-user-id>key resets the monitor.
Output fields
A unified schema with a source field identifying the origin:
| Source | Key fields |
|---|---|
| CPSC | recall_number, recall_date, product_names, hazards, remedies, units, injuries, manufacturer_countries |
| Safety Gate | caseNumber, category, riskType, danger, notifyingCountry, report |
| NHTSA | nhtsa_campaign_number, make_vehicle, model_vehicle, model_year, manufacturer, component, summary, remedy |
Common envelope fields: url, title, scrapedAt, source, source_url.
Example output
{"url": "https://cpsc.gov/Recalls/2027/3M-Company-Recalls-Scotch-Thermal-Laminators-Due-to-Fire-Hazard","title": "3M Company Recalls Scotch Thermal Laminators Due to Fire Hazard","scrapedAt": "2026-10-20T08:00:00.000Z","source": "cpsc","recall_number": "27024","recall_date": "2026-10-15","product_names": ["Scotch Thermal Laminators"],"hazards": ["Fire hazard"],"remedies": ["Refund"],"manufacturer_countries": ["China"],"source_url": "https://cpsc.gov/Recalls/2027/3M-Company-Recalls-Scotch-Thermal-Laminators-Due-to-Fire-Hazard"}
A Safety Gate alert:
{"source": "safety-gate","caseNumber": "SR/02869/26","reference": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10097467","category": "Jewellery","riskType": "Chemical","danger": "Excessive cadmium concentration.","notifyingCountry": "Sweden","url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10097467","scrapedAt": "2026-10-20T08:00:00.000Z","source_url": "https://ec.europa.eu/safety-gate-alerts/api/download/weeklyReport/detail/xml/10000327"}
Example input
Run only CPSC recalls for the last month:
{"source":"cpsc","since":"2026-10-01","maxResults":10,"monitorMode":false}
Run Safety Gate alerts for a specific category:
{"source":"safety-gate","weeksBack":2,"categories":["Jewellery"],"maxResults":20}
Run NHTSA vehicle recalls:
{"source":"nhtsa","make":"TOYOTA","model":"CAMRY","modelYear":2024,"maxResults":10}
Run all sources (CPSC and Safety Gate always; NHTSA too when make, model and modelYear are set):
{"source":"all","maxResults":100}
Pricing
Pay-per-event uses the Apify synthetic events plus the reserved monitor-check event (.actor/pay_per_event.json):
| Event | Charged when | Price |
|---|---|---|
apify-actor-start | a run starts (synthetic, charged automatically) | 0.00005 USD per run (Apify-recommended default; includes 5 seconds of free compute) |
apify-default-dataset-item | a new recall/alert is saved | 3.50 USD per 1,000 items (0.0035 USD per item) on the FREE and BRONZE plans; volume tiers: 3.15 USD per 1,000 on SILVER and 2.80 USD per 1,000 on GOLD, PLATINUM and DIAMOND |
monitor-check | each item checked against the monitor state in a monitor run | 0.0004 USD per check (0.40 USD per 1,000 checks) |
Already-delivered items are deduplicated: a repeat run with the same input delivers 0 items and is not charged per item. Duplicates within a run, filtered records, retries and errors are not billed. Backfill runs (monitorMode: false) never charge a monitor check.
Estimated cost per 1,000 items: under 0.10 USD -- keyless API requests only, no browser or proxy. Gross margin above 97%.
Data source and compliance
- CPSC: SaferProducts.gov public REST API (
https://www.saferproducts.gov/RestWebServices/Recall). U.S. federal public-domain material. - Safety Gate: Official EU XML API (
https://ec.europa.eu/safety-gate-alerts/). CC0 1.0 Universal distribution. No personal data. - NHTSA: Official recalls-by-vehicle JSON API (
https://api.nhtsa.gov/recalls/recallsByVehicle). No login, no API key. Recalls only -- never reads the consumer complaints dataset.
FAQ
Does the Actor need an API key or login? No. All three sources are public, free and keyless.
Does it scrape websites? No. It calls the official REST/JSON/XML APIs directly.
Does it collect personal data? No. Only product, risk, manufacturer and authority fields are mapped. Consumer contacts are excluded from all sources.
Why do I get fewer results on the second run? Monitor mode is enabled by default. Items already delivered are deduplicated and not pushed or charged again. Set monitorMode: false for a full backfill, or clear the seen-<your-user-id> key in the KV store.
Can I query multiple sources at once? Yes. Set source: "all" (default) to run CPSC and Safety Gate in a single call. To include NHTSA data, you MUST also provide make, model, and modelYear.
Support
Report bugs through the Actor's Apify Store Issues tab or the Steadfetch Actors repository. Include the run ID and the exact input JSON.
Maintenance
Enabled for daily catalog QA on 2026-10-30. Daily catalog QA runs the default input so the Actor is tested daily. Schema and fixture tests last verified locally on 2026-10-30.