CPSC and NHTSA recalls monitor (consumer products and vehicles)
Pricing
$2.00 / 1,000 results
CPSC and NHTSA recalls monitor (consumer products and vehicles)
Monitor consumer product recalls from CPSC and vehicle watchlist recalls from NHTSA.
Pricing
$2.00 / 1,000 results
Rating
0.0
(0)
Developer
Chee Chiaw Lim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
This Apify Actor returns CPSC consumer product recalls and NHTSA recalls for a vehicle watchlist. Both agencies use one output record shape.
Coverage and source
The monitor combines a recent CPSC recall window with vehicle-specific NHTSA recall histories. Use it to track product keywords, manufacturers, and vehicles in one dataset. onlyNew supports repeated runs that emit each recall once per state store.
CPSC uses SaferProducts recall data. NHTSA uses recalls by vehicle. Neither source requires an API key or proxy.
Input
| Field | Default | Meaning |
|---|---|---|
sources | ["cpsc", "nhtsa"] | Agencies to query, in the selected order. |
sinceDays | 30 | CPSC recalls since midnight UTC this many days ago. Integer from 1 to 365. |
keywords | [] | CPSC title, description, or product name contains any keyword, without case sensitivity. |
manufacturers | [] | CPSC manufacturer, importer, or distributor name contains any filter, without case sensitivity. |
vehicles | ["toyota|camry|2020"] | Watchlist entries in make|model|year format. |
nhtsaSinceDays | 0 | Zero includes all recalls for each vehicle. Positive values filter by report received date. Integer from 0 to 36500. |
onlyNew | false | Skip recalls successfully emitted to the state store on earlier runs. |
maxItems | 100 | Maximum emitted records after deduplication and onlyNew filtering. Integer from 1 to 10000. |
stateStoreName | cpsc-nhtsa-recalls-monitor-state | Named key-value store for cross-run recall IDs. |
Empty filter lists select all CPSC recalls in the window. When both CPSC filters are set, a record must match both groups. CPSC keyword and manufacturer filters run locally after the API returns its array. Each vehicle produces one NHTSA request. Neither API uses paging. NHTSA campaign numbers are deduplicated across the watchlist within each run. The first matching vehicle supplies the record's product and query URL.
Output
Each record contains recall details, products, manufacturers, hazard, remedy, source attribution, and monitoring metadata. Missing fields are null or empty arrays. CPSC units are joined text. NHTSA units retain the source value when present. NHTSA titles combine the vehicle name and component.
Example record follows.
{"agency": "NHTSA","recallId": "20V682000","recallDate": "2020-04-11","title": "TOYOTA CAMRY 2020 - FUEL SYSTEM, GASOLINE:DELIVERY:FUEL PUMP","description": "Toyota Motor Engineering & Manufacturing (Toyota) is recalling certain 2018-2019 4Runner, 2019-2020 Avalon, 2019 Corolla Hatchback, 2017-2019 Highlander, 2018-2020 Camry, 2020 Corolla, 2018-2019 Land Cruiser, 2017-2020 Tacoma, 2019-2020 RAV4, 2019-2020 Sequoia, 2017-2020 Sienna, 2019-2020 Tundra, 2018-2020 Lexus ES350, 2017 Lexus GS200t, 2017-2019 Lexus GS350, 2019 Lexus GS300, 2018-2020 Lexus LC500h, 2019-2020 Lexus LS500, 2018-2019 Lexus GX460, 2017 Lexus IS200t, 2019 Lexus IS300, 2019 Lexus IS350, 2018-2020 Lexus LC500, 2018 Lexus LS500, 2019 Lexus LS500h, 2018-2019 Lexus LX570, 2017 Lexus RC200t, 2019 Lexus RC300, RC350, 2017 and 2019-2020 Lexus RX350, 2018-2020 RX350L, 2019 Lexus UX200, 2018-2019 Lexus NX300 vehicles. The low-pressure fuel pump inside the fuel tank may fail.","hazard": "If the fuel pump fails, the engine can stall while driving, increasing the risk of a crash.","remedy": "Toyota will notify owners, and dealers will replace the fuel pump assembly with an improved one, free of charge. Owners of specific models were notified that remedy parts were available starting January 21, 2021. Owners of other models will be notified as remedy parts become available. Remedy parts should be available for all affected vehicles by late March 2021. Owners may contact Toyota customer service at 1-888-270-9371 or Lexus customer service at 1-800-255-3987. Note: This recall is an expansion of recall 20V-012. Toyota's number for this recall is 20TA02. Lexus' number for this recall is 20LA01.","products": ["TOYOTA CAMRY 2020"],"manufacturers": ["Toyota Motor Engineering & Manufacturing"],"component": "FUEL SYSTEM, GASOLINE:DELIVERY:FUEL PUMP","unitsAffected": null,"parkIt": false,"parkOutSide": false,"recallUrl": "https://www.nhtsa.gov/recalls?nhtsaId=20V682000","source": "U.S. National Highway Traffic Safety Administration (api.nhtsa.gov)","sourceUrl": "https://api.nhtsa.gov/recalls/recallsByVehicle?make=toyota&model=camry&modelYear=2020","licence": "NHTSA: public information, may be distributed or copied (https://www.nhtsa.gov/about-nhtsa/terms-use)","disclaimer": "Not endorsed by CPSC or NHTSA. Images are not included.","generatedId": "NHTSA:20V682000","changeType": "new","scrapedAt": "2026-10-30T00:00:00.000Z"}
The dataset includes a table view of key fields. RUN_SUMMARY in the default key-value store records timestamps, fetched, eligible, and pushed counts, charge-limit status, and any error. Fetched counts represent mapped candidates yielded by the sources after source filters and NHTSA campaign deduplication.
State and pricing
The state store contains agency-prefixed recall IDs under SEEN_RECALL_IDS. An absent ID gets changeType: "new". A stored ID gets "seen". Only successful pushes enter the set. With onlyNew false, stored recalls appear again. The monitor does not detect revisions to an existing recall ID. Use separate state stores for independent monitors.
If permission to open the named store is denied, the Actor warns, uses the default store, and disables onlyNew for that run.
Pricing is $0.002 per result, no start fee. Each emitted record uses the result billing event. Skipped recalls do not incur a result charge. The Actor stops at the available charge limit. Platform compute and storage charges may apply separately.
Privacy
Images and image URLs are excluded because images may have third-party licences. Consumer contact fields and NHTSA notes are excluded. Remedy text is retained, including any phone numbers or email addresses within it. The Actor stores mapped records and recall IDs, rather than raw source rows.
Licence and disclaimer
CPSC: public information, may be freely distributed and copied, credit CPSC (CPSC privacy policy).
NHTSA: public information, may be distributed or copied (NHTSA terms of use).
Every record carries the relevant licence text, agency source, API query URL, and this disclaimer.
Not endorsed by CPSC or NHTSA. Images are not included.
Limits
Coverage follows the agency APIs and can contain delays or omissions. The vehicle watchlist does not check VINs or establish whether a particular vehicle needs a repair. Read the linked agency notice for recall instructions.
NHTSA report dates use month-first parsing. Dates whose first number exceeds 12 use day-first parsing, as found in the supplied fixture. Invalid dates are null and are excluded when a positive NHTSA lookback is active. Ambiguous dates follow MM/DD/YYYY.
CPSC runs first by default, so it can fill maxItems before NHTSA is queried. Reorder sources or run separate monitors when each agency needs its own result budget. CPSC downloads the full response array. Seen records do not consume maxItems.
Requests wait at least one second between starts per host. HTTP 429 and 5xx responses retry up to three times. Network errors stop the run and appear in RUN_SUMMARY.
Local verification
Run npm test for offline tests. Use fresh local storage for a fixture-backed run with network access blocked.
CRAWLEE_STORAGE_DIR=./storage/verification APIFY_LOCAL_STORAGE_DIR=./storage/verification NODE_OPTIONS="--import ./scripts/offline-fixture.js" npm startnode scripts/verify-output.js ./storage/verification
The preload serves the supplied fixtures. It applies the CPSC start date but does not simulate different NHTSA vehicle responses. A normal run without the preload contacts the agency APIs.