# Health Canada Recalls & Safety Alerts Scraper (`scrapers_lat/health-canada-recalls-scraper`) Actor

Scrape Health Canada recalls and safety alerts: food, consumer products, vehicles and health/drug products. Filter by category, keyword, date and audience. Get firm, hazard, distribution, UPCs and lot codes.

- **URL**: https://apify.com/scrapers\_lat/health-canada-recalls-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Other, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Health Canada Recalls & Safety Alerts Scraper

Pull structured records from Canada's official **Recalls and Safety Alerts** database — the single source that covers **food, consumer products, vehicles and health/drug products & medical devices**. Built for compliance, importer, retail, QA and insurance teams that need to monitor Canadian recall activity in one clean feed.

### What you get

Every record includes the full recall context, not just a headline:

- **Recall identity** — title, alert type (recall / advisory / notification), category, published date, last-updated date, source URL, CFIA / alert reference id
- **Product** — product name, brand(s), and a per-item **affected-products table** (brand, product, size, **UPC**, lot / production / best-before codes)
- **Hazard** — the hazard / issue classification (e.g. *Salmonella*, *Listeria*, undeclared allergen, choking, fire, laceration)
- **Who's responsible** — recalling firm, companies involved, and the publishing department / agency (CFIA, Health Canada, Transport Canada)
- **Reach & response** — distribution regions, intended audience, and the recommended remedy / "what you should do"
- **Full issue text** and **product images**

### Filters

- **Keyword** — full-text across product, brand, hazard and firm
- **Category** — food · consumer products · health/drug products & medical devices · vehicles
- **Date range** — keep only recalls published within a window
- **Hazard** — keep only recalls whose issue matches a term
- **Audience** — keep only recalls for a given audience (general public, health professionals, industry)

### Typical uses

- Continuous **compliance monitoring** for importers, distributors and retailers
- Building a **Canadian recall dataset** alongside US feeds (FDA, CPSC, NHTSA, USDA)
- **Insurance / risk** screening of brands and firms
- Food-safety and product-safety **alerting**

### Output

JSON, CSV or Excel via the dataset. Turn **Fetch full detail** off for a fast listing-only pull, or leave it on for the complete record.

### Billing

Pay-per-result: a base charge per recall, plus a small **details** add-on only when the full detail record is successfully retrieved. Failed fetches are never charged. Free Apify accounts are capped at 10 results per run.

*Independent tool. Not affiliated with or endorsed by Health Canada, the Canadian Food Inspection Agency, Transport Canada or the Government of Canada. Data originates from public recall notices.*

# Actor input Schema

## `maxRecalls` (type: `integer`):

Maximum number of recall / safety-alert records to collect.

## `searchKeyword` (type: `string`):

Full-text search across the Health Canada recall database (product, brand, hazard, firm, e.g. 'salmonella', 'listeria', 'airbag', 'Honda', 'undeclared milk'). Leave empty to pull the most recent recalls.

## `category` (type: `string`):

Restrict to one recall category. Leave as 'All' to include every category.

## `recallDateStart` (type: `string`):

Only keep recalls published on or after this date. Optional. Format YYYY-MM-DD.

## `recallDateEnd` (type: `string`):

Only keep recalls published on or before this date. Optional. Format YYYY-MM-DD.

## `audience` (type: `string`):

Optional. Only keep recalls whose intended audience matches this text (e.g. 'General public', 'Health professionals', 'Industry'). Applied to the detailed record, so it requires 'Fetch full detail' to be on.

## `hazard` (type: `string`):

Optional. Only keep recalls whose hazard / issue classification contains this text (e.g. 'Salmonella', 'Listeria', 'choking', 'fire', 'undeclared'). Applied to the detailed record, so it requires 'Fetch full detail' to be on.

## `withDetails` (type: `boolean`):

Fetch each recall's detail page to add recalling firm, hazard classification, distribution regions, remedy, full issue text, affected products with UPCs & lot codes, and images. Turn off to return the fast listing-level fields only.

## `withAiSummary` (type: `boolean`):

Optional paid AI add-on, off by default. Writes a plain-English summary of each recall (what, the hazard, what to do) from its detail text. Requires detail enrichment and a paid Apify plan. Billed only when a summary is produced.

## `withAiRisk` (type: `boolean`):

Optional paid AI add-on, off by default. Classifies each recall's hazard severity, hazard type and at-risk groups from its detail text. Requires detail enrichment and a paid Apify plan. Billed only when produced.

## `proxyConfiguration` (type: `object`):

Proxy settings. Defaults to Apify Residential proxy in Canada, which is the most reliable way to reach the source from a datacenter.

## Actor input object example

```json
{
  "maxRecalls": 10,
  "category": "",
  "withDetails": true,
  "withAiSummary": false,
  "withAiRisk": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CA"
  }
}
```

# 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 = {
    "maxRecalls": 10,
    "searchKeyword": "",
    "recallDateStart": "",
    "recallDateEnd": "",
    "audience": "",
    "hazard": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/health-canada-recalls-scraper").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 = {
    "maxRecalls": 10,
    "searchKeyword": "",
    "recallDateStart": "",
    "recallDateEnd": "",
    "audience": "",
    "hazard": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/health-canada-recalls-scraper").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 '{
  "maxRecalls": 10,
  "searchKeyword": "",
  "recallDateStart": "",
  "recallDateEnd": "",
  "audience": "",
  "hazard": ""
}' |
apify call scrapers_lat/health-canada-recalls-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/health-canada-recalls-scraper"
        }
    }
}

```

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/PcLOfgeXN8K6C7aeG/builds/0SUHXu16gmbWqAfKd/openapi.json
