# Product Recall Checker (CPSC, NHTSA, FDA) (`anderson-data-tools/glacier-lean`) Actor

Check product names, brands, models, barcodes or vehicle details against CPSC, NHTSA and FDA recall records. Batch up to 100 inputs with source links, dated results and explicit uncertainty. A missing match does not establish product safety.

- **URL**: https://apify.com/anderson-data-tools/glacier-lean.md
- **Developed by:** [Benjamin Anderson](https://apify.com/anderson-data-tools) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 product recall checks

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

## Product Recall Checker (CPSC, NHTSA, FDA)

Check product names, barcodes, brands, models, and vehicle details against public CPSC, NHTSA, and FDA recall records. Get source links, per-source status, and dated results.

Check a product name, barcode, brand/model or vehicle make/model/year against public U.S. recall data. Get source-linked JSON for one item or a batch of up to 100, with explicit source status and a UTC check time.

### Use cases

- Triage inventory items for a reseller's manual recall review.
- Add dated recall-source checks to an internal product catalog.
- Route possible matches and source outages to a person before a product decision.

### Input example

```json
{
  "brand": "Fisher-Price",
  "product_name": "Rock 'n Play Sleeper"
}
```

Optional fields: `barcode`, `brand`, `model`, `product_name`, `year`. For vehicles, supply make in `brand`, vehicle `model` and integer `year` (1900–2100); otherwise NHTSA is skipped. Use `queries` for 1–100 item objects instead of a single top-level item. Names alone can produce uncertainty; an identifier is not proof of a unique product.

### Output example

Illustrative outage response for the input above. All applicable sources failed in this example, so no recall-check event is charged.

```json
{
  "outcome": "uncertain",
  "message": "uncertain — please check (CPSC, FDA-food, FDA-drug, FDA-device unavailable)",
  "query": {
    "brand": "Fisher-Price",
    "product_name": "Rock 'n Play"
  },
  "matches": [],
  "sources_checked": {
    "CPSC": {
      "status": "error",
      "as_of": "2026-10-11T02:00:00Z",
      "message": "Illustrative source timeout"
    },
    "FDA-food": {
      "status": "error",
      "as_of": "2026-10-11T02:00:00Z",
      "message": "Illustrative source timeout"
    },
    "FDA-drug": {
      "status": "error",
      "as_of": "2026-10-11T02:00:00Z",
      "message": "Illustrative source timeout"
    },
    "FDA-device": {
      "status": "error",
      "as_of": "2026-10-11T02:00:00Z",
      "message": "Illustrative source timeout"
    },
    "NHTSA": {
      "status": "skipped",
      "as_of": "2026-10-11T02:00:00Z",
      "message": "Vehicle make, model and year are required by this source."
    }
  },
  "checked_at": "2026-10-11T02:00:00Z"
}
```

Each query creates a dataset row with those six top-level fields. A match entry includes `source`, `recall_id`, `title`, `date`, `hazard`, `remedy` and `url`. Export JSON or CSV through Apify's dataset controls.

Outcomes: `match`, `no_match` (no match found in checked sources as of the shown date), or `uncertain` (limited input, a possible match, or source failure). Any source error makes the overall outcome uncertain, even if candidate matches are returned. Review `sources_checked` and the official notices; an empty match list is not a safety assurance.

### Pricing

The `recall-check` event costs **$0.01 per input query**, with platform usage included. A readable no-match or uncertain result is charged when at least one source responded, including partial results when another source failed. A result with only source outages is free. Billing is per input item, not per recall returned.

The maximum event charge per run is **$1.00** for 100 input queries. For a smaller batch, choose a lower run cap if desired. Each new run can incur new event charges.

### Sources, limitations and legal notes

Uses [CPSC recall data](https://www.saferproducts.gov/RestWebServices/Recall?format=json), [NHTSA vehicle recalls](https://www.nhtsa.gov/nhtsa-datasets-and-apis), and openFDA [food](https://open.fda.gov/apis/food/enforcement/), [drug](https://open.fda.gov/apis/drug/enforcement/) and [device](https://open.fda.gov/apis/device/enforcement/) enforcement data. FSIS is not covered. This is not a VIN lookup, complete historical recall archive, or UPC catalog.

Matching depends on identifiers present in official records. Missing identifiers, bounded source searches and delayed data can miss a relevant notice. There is no published 1,000-item accuracy benchmark for this release; do not infer a measured accuracy rate from a successful example. No statement that a product is safe, legal to sell or cleared for use is made. The tool is independent of the agencies and does not replace checking the official recall notice or professional advice.

Use only authorized inputs. Requests must respect source terms and rate limits. For technical issues, share a non-sensitive query and run ID in Apify Issues, never a token or private inventory file.

# Actor input Schema

## `barcode` (type: `string`):

UPC, EAN or GTIN digits for one item.

## `brand` (type: `string`):

Product brand, or vehicle make when checking NHTSA.

## `model` (type: `string`):

Product or vehicle model.

## `product_name` (type: `string`):

Product name to search public recall listings.

## `year` (type: `integer`):

Optional vehicle model year. NHTSA vehicle recall search requires a year.

## `queries` (type: `array`):

Optional list of 1 to 100 items. Each item can contain barcode, brand, model, product_name and year.

## Actor input object example

```json
{
  "brand": "Fisher-Price",
  "product_name": "Rock 'n Play Sleeper"
}
```

# 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 = {
    "brand": "Fisher-Price",
    "product_name": "Rock 'n Play Sleeper"
};

// Run the Actor and wait for it to finish
const run = await client.actor("anderson-data-tools/glacier-lean").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 = {
    "brand": "Fisher-Price",
    "product_name": "Rock 'n Play Sleeper",
}

# Run the Actor and wait for it to finish
run = client.actor("anderson-data-tools/glacier-lean").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 '{
  "brand": "Fisher-Price",
  "product_name": "Rock '\''n Play Sleeper"
}' |
apify call anderson-data-tools/glacier-lean --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,anderson-data-tools/glacier-lean"
        }
    }
}
```

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/Fpv0233nJE7VxcgfN/builds/106P3hLuw6hegWcuP/openapi.json
