Canada Product Recalls & Safety Alerts avatar

Canada Product Recalls & Safety Alerts

Pricing

from $20.00 / 1,000 recall extracteds

Go to Apify Store
Canada Product Recalls & Safety Alerts

Canada Product Recalls & Safety Alerts

Search official Canada product recalls and safety alerts from open.canada.ca. Filter by keyword, category and date range. Returns recall details, hazards, affected products and what to do.

Pricing

from $20.00 / 1,000 recall extracteds

Rating

0.0

(0)

Developer

Oaida Adrian

Oaida Adrian

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape Canada's official product recall and safety alert database — Health Canada's recalls-rappels.canada.ca (open.canada.ca) — and get structured JSON recall records: consumer products, vehicles, food, drugs and health products. Filter by keyword, category and last-updated date.

Built for compliance teams, importers, retailers and safety monitors who need a reliable, always-current feed of Canadian recall activity — no API keys, no login, no proxy budget.

Why this Actor

  • One source, one job — reads the Government of Canada recall database directly; no third-party aggregators, no licensing ambiguity.
  • No API key, no login, no proxy — the site is fully public; the Actor just needs a browser User-Agent (the site 418s plain script clients).
  • Structured, reference-shaped output — every recall is one JSON row with 17 fields matching the community dromb/canada-recalls-safety-alerts schema, so existing consumers can switch with zero changes.
  • Filters built in — keyword full-text search plus post-filters on category and last-updated date.
  • Cheap and fast — pay only per recall extracted, plus Apify's standard platform events.

How it works

The Actor runs a full-text search against the site's Drupal search index (/en/search?search_api_fulltext=<keyword>), pages through the results, visits each recall page (/en/alert-recall/<slug>), and parses the structured Drupal fields into clean records. Archived recalls are excluded (matching the reference actor's behaviour), so every row is an active recall.

Input

{
"keyword": "battery",
"category": "Electronics",
"dateFrom": "2026-06-01",
"maxItems": 50
}
FieldTypeDescription
keywordstringFull-text search term (e.g. battery, croissant, vehicle). Empty = browse the latest recalls.
categorystringCategory filter — case-insensitive partial match against the recall category (e.g. Electronics, Household items, Vehicles).
dateFromstringOnly include recalls last updated on or after this date (YYYY-MM-DD).
maxItemsintegerMaximum recall records to extract (default 50, max 500).

All fields are optional — {} returns the most recent active recalls.

Output (one item per recall)

{
"recallId": 82426,
"title": "Portable Clip-On Rechargeable Mini Fan recalled due to fire hazard",
"dateUpdated": "2026-08-12",
"recallClass": null,
"category": "Household items",
"summary": "Fire hazard",
"affectedProducts": "Portable Clip-On Rechargeable Mini Fan",
"companies": "Consumer product safety",
"hazard": null,
"issue": "Fire hazard",
"whatToDo": "Consumers should immediately stop using the recalled product and return it to CTG Brands Inc. for a refund.For more information, consumers can contact CTG Brands Inc. by telephone at 1-888-781-8882, 8:30 a.m. to 5:00 p.m. EST, Monday to Friday, or visit the company website...",
"archived": false,
"status": "active",
"language": "en",
"sourceUrl": "https://recalls-rappels.canada.ca/en/alert-recall/portable-clip-rechargeable-mini-fan-recalled-due-fire-hazard",
"dataSource": "open.canada.ca",
"rawSourceType": "recall_record"
}

Field notes (matching the reference actor): category strips the top-level taxonomy prefix (Consumer products - ElectronicsElectronics); summary/issue mirror the short issue label (last - segment); whatToDo is the long-form consumer guidance (null when the page has none); recallClass is Type I/II/III for health-product recalls, Class 1/2/3 for food recalls, else null; companies is the issuing organization from publisher metadata (Consumer product safety, CFIA, TC); archived is always false / status always active because the search surface excludes archived recalls.

Use cases

  • 🛡️ Compliance monitoring — weekly cron on a product category (electronics, toys, food) and alert on new recalls via Telegram or webhook.
  • 🏭 Importer / retailer screening — check a product line against active recalls before ordering or listing.
  • 📊 Safety trend analysis — pull all recalls in a category over a window and analyse hazard mix, issuing agency and product types.
  • 🗄️ Data enrichment — join recall IDs against internal product SKUs for a live exposure report.

Run it from the API

Trigger the Actor and get results in one call:

curl -X POST "https://api.apify.com/v2/acts/darknezz~canada-recalls-safety-alerts/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"battery","category":"Electronics","dateFrom":"2026-06-01"}'

Python (Apify SDK):

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("darknezz~canada-recalls-safety-alerts").call(
run_input={"keyword": "battery", "category": "Electronics", "dateFrom": "2026-06-01"},
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["recallId"], item["title"])

Scheduling: attach an Apify Schedule (daily or weekly) to keep a category watchlist topped up — the dateFrom filter plus a stored last-run date gives you an incremental feed of new recalls only.

Limitations

  • HTML scraping — the site has no public JSON API, so parsing is tied to the Drupal markup. The parser targets stable field machine-names; a site redesign would need a rebuild.
  • English only — records are extracted from the /en/ surface; French (/fr/) records are not covered.
  • Archived recalls excluded — matching the reference actor; historical/archived records are not returned.
  • Politeness — detail fetches are paced; very large result sets (500+ items) take proportionally longer.

Pricing

Pay per event: a small fee for each recall extracted, plus Apify's standard platform events (actor start + dataset item). No subscription — you pay only for what you run.

FAQ

Do I need an API key or government login? No — the recall database is fully public.

Why do I get nothing for some keyword/category combos? The category filter is a post-filter on the parsed category. If the search finds no recalls whose category matches, the dataset is empty — broaden the keyword or drop the category.

How fresh is the data? The site is updated continuously; dateUpdated is the page's last-modified date, so dateFrom gives you an incremental window.

Can I get archived recalls? No — the search surface excludes them, and the Actor follows that (as does the reference actor).

Is scraping this legal? The data is Canadian government open information published for public consumption; you are responsible for how you use it.