# CPSC Consumer Product Recalls Tracker (`transparent_meteorite/cpsc-consumer-product-recalls`) Actor

Track US consumer product recalls from the free CPSC recalls API: recall number, date, products, manufacturers, retailers, hazards, remedy, units sold, injuries reported and a severity score. No login, no proxy.

- **URL**: https://apify.com/transparent_meteorite/cpsc-consumer-product-recalls.md
- **Developed by:** [Detroit Web Agent - Open Data](https://apify.com/transparent_meteorite) (community)
- **Categories:** News, Business
- **Stats:** 2 total users, 1 monthly users, 40.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 recall rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## CPSC Consumer Product Recalls Tracker

**CPSC product recalls** in a clean table: one row per US consumer product recall with recall number and date, products, manufacturers, importers and retailers, hazards, remedy, units sold, injuries reported and a simple severity score, newest first.

Pull recent US consumer product recalls into a clean table. Each row has the recall number and date, title, product names and categories, manufacturers, importers and retailers, hazards, remedy, units sold, injuries reported, consumer contact details, the recall URL and a simple severity score. Data comes from the free public CPSC (U.S. Consumer Product Safety Commission) Recalls Retrieval API. No login, no proxy, no personal data.

### What is CPSC Consumer Product Recalls Tracker?

Track US consumer product recalls from the free CPSC recalls API: recall number, date, products, manufacturers, retailers, hazards, remedy, units sold, injuries reported and a severity score. No login, no proxy. Run it from the Apify Console, the API or a schedule, and export the results as JSON, CSV, Excel or HTML.

### Why use it

- **Official source.** Data is the CPSC recall list as published through its public API.
- **One flat table.** Nested products, firms and hazards become simple columns with ISO dates.
- **Repeatable.** Fixed filters and a fixed score, so runs can be compared week to week.

### Output

One row per recall:

| Field | Meaning |
|---|---|
| `recallNumber`, `recallId`, `recallUrl` | CPSC recall number, internal id and the link to the official recall notice. |
| `recallDate`, `lastPublishDate`, `daysSinceRecall` | Dates (ISO format) and age of the recall. |
| `title`, `description` | The CPSC headline and description. |
| `productNames`, `productCategories`, `unitsSold` | What was recalled, the CPSC product types and how many units were sold. |
| `manufacturers`, `importers`, `distributors`, `retailers`, `manufacturerCountries` | Companies involved, where it was sold and where it was made. |
| `hazards`, `remedy`, `remedyOptions` | The hazard, what consumers should do and the remedy type (refund, repair, replace). |
| `injuriesReported`, `deathsReported`, `injuriesReportedText`, `noInjuriesReported` | Counts parsed from the CPSC injury text, plus the original text. |
| `consumerContact` | The consumer contact line published by the firm (company phone, website). |
| `severityScore` | 0 to 100, see below. |
| `scrapedAt` | When the run read the data. |

### Sample output

```json
{
  "recallNumber": "27024",
  "recallDate": "2026-10-15",
  "title": "3M Company Recalls Scotch Thermal Laminators Due to Risk of Serious Injury or Death from Fire Hazard",
  "productNames": ["Scotch Thermal Laminators"],
  "productCategories": ["Business and Office Machines"],
  "hazards": ["The recalled thermal laminators can overheat, posing a fire hazard."],
  "unitsSold": "About 53,634",
  "injuriesReported": 0,
  "recallUrl": "https://cpsc.gov/Recalls/2027/3M-Company-Recalls-ScotchTM-Thermal-Laminators-Due-to-Risk-of-Serious-Injury-or-Death-from-Fire-Hazard",
  "severityScore": 36
}
```

### Input

| Field | What it does |
|---|---|
| `daysBack` | Keep recalls announced in the last N days. Default 365. |
| `productCategory` | Optional text matched against the CPSC product type, for example `Toys`. |
| `keyword` | Optional phrase that must appear in the title, description, products or hazards. |
| `injuriesReportedOnly` | Keep only recalls whose text reports at least one injury or death. |
| `minSeverityScore` | Optional 0 to 100 threshold. |
| `maxItems` | Stop after this many rows (newest first). Default 100. |

Sample input:

```json
{
  "daysBack": 180,
  "keyword": "fire",
  "minSeverityScore": 40,
  "maxItems": 50
}
```

### Pricing

Pay per event. You pay a small fixed amount per recall row delivered, listed on the Pricing tab, plus a tiny start fee per run. You can set a maximum cost per run in the run options.

### What does this Actor do?

It reads the CPSC recalls endpoint (`saferproducts.gov/RestWebServices/Recall`) for the window you choose, flattens the nested records into one row per recall and sorts them newest first. You can filter by product category, keyword, injuries or deaths reported, and minimum severity score. The default run covers about the last 12 months. The actor reports what the CPSC publishes and adds no safety advice.

**Run in 30 seconds**

1. Open the Actor and press **Try for free** (a free Apify account is enough).
2. Keep the prefilled input (last 365 days, up to 100 rows) and press **Start**. A run takes under a minute.
3. Open the **Output** tab. Use the table view or download CSV, Excel or JSON.

### Use cases

- Send a weekly list of new recalls with fire, choking or injury hazards to a retail, quality or compliance team in a spreadsheet or Slack.
- Watch products you sell or brands you stock with the keyword and category filters.
- Build a recall newsletter, dashboard or research dataset on hazards, product types and manufacturing countries.
- Feed rows into an n8n, Make or Zapier workflow that opens a ticket when a high-severity recall matches something in your catalog.
- Study which hazards and product categories are recalled most often.

### Severity score

A fixed rule of thumb, not a CPSC rating: 20 base, plus 8 per kind of serious hazard wording in the title and hazard text (fire, burn, choking, strangulation, lead, laceration and similar), up to 32, plus up to 20 for the number of injuries reported, plus 25 for the first death reported (up to 40). Capped at 100. The same record always gives the same score.

### Limits

- Covers CPSC consumer product recalls only. Food, drugs, vehicles and tires are handled by other agencies and are not included.
- Contact details are the company contact lines the CPSC publishes in each notice, not personal data.
- The CPSC API is public and may change or be briefly unavailable; the actor retries politely.

### Related Actors

- [FDA Recalls and Enforcement Reports](https://apify.com/transparent_meteorite/fda-recalls-enforcement-reports) tracks FDA drug, device and food recalls.
- [Website Tech Stack](https://apify.com/transparent_meteorite/website-tech-stack) detects which technologies a website runs on.
- [Sitemap Link Inventory](https://apify.com/transparent_meteorite/sitemap-link-inventory) lists every URL a site publishes in its sitemaps.

Found a bug or need a field? Open an issue on the Issues tab with the run URL.

### FAQ

**How fresh is the data?**
The CPSC publishes recalls as they are announced, usually weekly. `recallDate` is the CPSC announcement date.

**Why do I get fewer rows than maxItems?**
Only recalls inside your window that match your filters exist. Try a larger `daysBack` or remove filters.

**Are injury counts exact?**
They are parsed from free text the CPSC publishes, so treat them as a guide. The original text is in `injuriesReportedText`.

**Is this an official CPSC product?**
No. It is an independent tool that reads the public CPSC API. Check cpsc.gov for authoritative notices.

**This Actor vs maximedupre/cpsc-product-recalls:** both read official CPSC recall records, and that one adds search by retailer. Choose this one for its severity score with a minimum-score filter and an injuries-only switch, so you can keep just the recalls that matter.

### More from DWA Open Data

Browse all 69 data Actors, with live prices and sample output, at [open-data-actors.pages.dev](https://open-data-actors.pages.dev).

***

**Feedback:** if this Actor was useful, or if it fell short, an honest review on the [Reviews tab](https://apify.com/transparent_meteorite/cpsc-consumer-product-recalls/reviews) helps other users decide. Problems or feature requests: please open an [Issue](https://apify.com/transparent_meteorite/cpsc-consumer-product-recalls/issues) and we usually reply within one business day.

### Changelog

- 2026-10-22: Initial release.
- 2026-10-25: Documentation updated: README refreshed.
- 2026-10-25: Listing refresh: new Store icon, README reorganised (overview, data fields, pricing, FAQ) and changelog tab added. No code change.

# Changelog

This Actor's version history is a separate document: https://apify.com/transparent_meteorite/cpsc-consumer-product-recalls/changelog.md

# Actor input Schema

## `daysBack` (type: `integer`):

Keep recalls announced by the CPSC in the last N days. Default is about 12 months.

## `productCategory` (type: `string`):

Optional. Keep recalls whose CPSC product type contains this text, for example "Toys", "Appliances" or "Furniture".

## `keyword` (type: `string`):

Optional phrase that must appear in the title, description, product names or hazards, for example "fire" or "lithium".

## `injuriesReportedOnly` (type: `boolean`):

Turn on to keep only recalls where the CPSC text reports at least one injury or death.

## `minSeverityScore` (type: `integer`):

Optional 0 to 100. Keep only rows at or above this score.

## `maxItems` (type: `integer`):

Stop after this many rows, newest recall first. You pay only for rows delivered.

## Actor input object example

```json
{
  "daysBack": 365,
  "injuriesReportedOnly": false,
  "minSeverityScore": 0,
  "maxItems": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "daysBack": 365,
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("transparent_meteorite/cpsc-consumer-product-recalls").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "daysBack": 365,
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("transparent_meteorite/cpsc-consumer-product-recalls").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "daysBack": 365,
  "maxItems": 100
}' |
apify call transparent_meteorite/cpsc-consumer-product-recalls --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,transparent_meteorite/cpsc-consumer-product-recalls"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TejjNV86YPcS4tJd6/builds/bOG8XbZTeq9gMHhmu/openapi.json
