# Product Recall & Safety Alert Aggregator (`seemuapps/product-recall-safety-alerts`) Actor

Normalize official US CPSC consumer-product and FDA food/drug recall notices.

- **URL**: https://apify.com/seemuapps/product-recall-safety-alerts.md
- **Developed by:** [Andrew](https://apify.com/seemuapps) (community)
- **Categories:** E-commerce, News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 recall alerts

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Product Recall & Safety Alert Aggregator

Get every US product recall and food safety alert from the official CPSC and FDA feeds in one clean, normalized dataset. Filter by product, brand, or manufacturer, pick your date window, and export the results — no login, no key, no scraping of press releases.

### What you get

One dataset record per recall notice, normalized to the same schema across both agencies:

- **Source and recall ID**: `cpsc` or `fda`, plus the official recall or event number
- **Title and description**: the product description and the reason for the recall
- **Manufacturer or recalling firm**: who issued it
- **Products**: the individual product names covered by the notice
- **Hazard and remedy**: what the risk is (choking, laceration, contamination) and what consumers should do — refund, repair, replacement
- **Recall date and country**
- **Source URL** back to the official notice where available
- Export to JSON, CSV, Excel, or Google Sheets directly from the Apify console

### Use cases

- Retail and e-commerce compliance — check recalls against your catalogue before a recalled SKU keeps selling
- Brand and supplier monitoring — watch your own brands and your suppliers' names for new notices
- Consumer safety alerting — power a newsletter, Slack alert, or app feed of fresh recalls
- Risk, legal, and insurance research — build a searchable history of hazards by product category or manufacturer
- Journalism and research — track recall volume and hazard types over time

### How to use

1. Choose your **Official sources** — CPSC consumer products, FDA food enforcement, or both (default: both)
2. Optionally enter a **Product, brand, or manufacturer** to filter on — matched case-insensitively across titles, descriptions, product names, and firms
3. Set **Days back** for how recent FDA notices should be (default 30 days) and **Maximum alerts** for the cap (default 100)
4. Run the actor — normalized alerts appear in the **Dataset** tab

```json
{
  "sources": ["cpsc", "fda"],
  "query": "peanut butter",
  "daysBack": 90,
  "maxItems": 200
}
```

Leave the query empty to pull everything in the window — useful for building a full recall archive on the first run, then scheduling narrow, filtered runs afterwards.

### Output format

```json
{
  "source": "fda",
  "recallId": "F-1234-2026",
  "title": "Peanut butter jars, 16 oz",
  "description": "Possible Salmonella contamination",
  "manufacturer": "Example Foods Inc",
  "products": ["Peanut butter jars, 16 oz"],
  "hazard": "Possible Salmonella contamination",
  "remedy": null,
  "recallDate": "20260102",
  "country": "US",
  "sourceUrl": null
}
```

CPSC records fill in `hazard`, `remedy`, and `sourceUrl` from the official notice; FDA enforcement records carry the recalling firm and reason.

### FAQ

**Do I need an API key?** No. Both feeds are official public government sources.

**How far back can I go?** Up to 3,650 days (10 years) for FDA enforcement notices. CPSC returns its published recall feed.

**Is this only US data?** Yes — CPSC covers US consumer products and FDA covers US food and drug enforcement. The `country` field reflects the notice itself.

**Can I run it on a schedule?** Yes — a daily run with your brand names as the query gives you an alerting feed; connect it to Slack or email with an Apify integration.

**What is Fixture mode?** A deterministic sample run with example CPSC and FDA records, useful for testing an integration without hitting the live feeds.

# Actor input Schema

## `sources` (type: `array`):

Official recall feeds to query: US CPSC consumer products and/or FDA food enforcement notices.

## `query` (type: `string`):

Optional case-insensitive text filter applied to products, brands, descriptions, and manufacturers.

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

Only request FDA recalls initiated within this many days.

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

Maximum number of normalized recall alerts to save.

## `fixtureMode` (type: `boolean`):

Use deterministic CPSC and FDA samples without calling live APIs.

## Actor input object example

```json
{
  "sources": [
    "cpsc",
    "fda"
  ],
  "query": "",
  "daysBack": 30,
  "maxItems": 100,
  "fixtureMode": false
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/product-recall-safety-alerts").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/product-recall-safety-alerts").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 '{}' |
apify call seemuapps/product-recall-safety-alerts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seemuapps/product-recall-safety-alerts"
        }
    }
}

```

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/vn9OV9ZduCDxj6VvF/builds/X02yWWCqTa52so2Zx/openapi.json
