EU Safety Gate recall alerts by GTIN, brand and category avatar

EU Safety Gate recall alerts by GTIN, brand and category

Pricing

from $2.00 / 1,000 recall alert returneds

Go to Apify Store
EU Safety Gate recall alerts by GTIN, brand and category

EU Safety Gate recall alerts by GTIN, brand and category

Every product-safety alert the EU Safety Gate publishes, normalised into one row per case, filterable by category, risk level and notifying country, and matchable against your own GTIN or brand watchlist.

Pricing

from $2.00 / 1,000 recall alert returneds

Rating

0.0

(0)

Developer

Kittiwake Data

Kittiwake Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Every product-safety alert the EU Safety Gate publishes, turned into clean rows you can filter, schedule and match against your own catalogue.

The European Commission publishes a Safety Gate report every Friday: dangerous non-food products found in the EU, what the hazard is, and what an authority ordered or a company did about it. It is public — but it arrives as an XML export with run-together fields and dd/mm/yyyy dates, which is not something you can drop into a spreadsheet or a database.

This Actor reads it and gives you one tidy row per alert, with the messy parts already parsed.

What it is for

  • Marketplaces and retailers — check new alerts against the GTINs you list, every week, and get the hits and nothing else.
  • Importers, distributors and manufacturers — watch your own brands and your competitors'.
  • Compliance, QA and product-safety teams — a filtered feed by category, risk level or notifying country, into your own systems.
  • Analysts — the whole archive back to 2005 is reachable, one weekly report at a time.

What makes it different from just downloading the XML

raw Safety Gate exportthis Actor
measuresone run-together string: …were ordered: ManufacturerCategory of measure(s): Recall of the product from end usersDate of entry into force: 14/08/2026a list of {economicOperator, category, inForceFrom, ordered} — and ordered tells you mandatory vs voluntary
dates14/08/2026, or the literal UnknownISO 2026-08-14, or null. Never a wrong date
barcodesas printed, sometimes emptydigits only, plus a GTIN check-digit result — and null when it isn't checkable, so you can tell "invalid" from "unknown"
online tradersOther(www.a.dewww.b.de) / [{platform: "Other", reference: "www.a.de"}, {platform: "Other", reference: "www.b.de"}]
your catalogueyou write the matchingwatchBarcodes / watchBrands — matched rows carry watchlistMatch, and onlyWatchlistMatches returns just those
duplicatesa case can reappear in a later reportdeduplicated by case number within a run
attributionyou have to add it yourselfthe Commission-required credit line is on every row (source)

The raw measures string is kept in measuresRaw, so you can always audit the parse.

Quick start

Everything from the last 4 weeks:

{ "weeks": 4 }

Only serious risks in toys and childcare, notified by Germany or France:

{
"weeks": 8,
"categories": ["Toys", "Childcare articles and children's equipment"],
"riskLevels": ["Serious risk"],
"notifyingCountries": ["Germany", "France"]
}

Watch your own catalogue and return only the hits — the way most people run this on a schedule:

{
"sinceDate": "2026-08-01",
"watchBarcodes": ["4067683465416", "5901234123457"],
"watchBrands": ["JOYHUT", "Acme Toys"],
"onlyWatchlistMatches": true
}

Run it weekly. Set sinceDate to the date of your last run, or leave weeks: 1 and schedule it for Saturday — the Commission publishes on Friday.

Input

fieldtypedefaultwhat it does
weeksinteger4How many of the most recent weekly reports to read
sinceDateYYYY-MM-DDRead every report published on or after this date. Overrides weeks
categoriesstring[]alle.g. Toys, Cosmetics, Electrical appliances and equipment
riskLevelsstring[]alle.g. Serious risk
notifyingCountriesstring[]alle.g. Germany
alertTypesstring[]bothConsumer or Professional
keywordsstring[]Free text across product, brand, description, hazard, category, risk type and model
watchBarcodesstring[]Your GTINs. Punctuation ignored
watchBrandsstring[]Your brands. Case-insensitive, matched both ways
onlyWatchlistMatchesbooleanfalseReturn only watchlist hits
includePicturesbooleanfalseAdd product photo URLs
maxAlertsintegerStop after N alerts
requestDelayMsinteger1000Pause between report requests

All filters are case-insensitive, and an empty list means "no filter on that field".

Output

One row per alert:

{
"caseNumber": "SR/02365/26",
"alertUrl": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10099536",
"reportReference": "Report-2026-35",
"reportDate": "2026-09-04",
"category": "Toys",
"product": "Toy gun set",
"brand": null,
"productName": "City Super Police Set",
"modelNumber": "No. 333",
"barcode": "4067683465416",
"barcodeChecksumValid": true,
"riskType": "Choking",
"riskLevel": "Serious risk",
"danger": "The toy has small parts (the suction cups) that can easily detach. …",
"description": "Toy gun set for shooting suction cup darts, with three darts.",
"measures": [
{ "economicOperator": "Manufacturer",
"category": "Recall of the product from end users",
"inForceFrom": "2026-08-14",
"ordered": true }
],
"notifyingCountry": "Germany",
"countryOfOrigin": "People's Republic of China",
"alertType": "Consumer",
"recallUrl": "https://www.landahl.de/produktrueckruf-city-super-police-set-46541",
"onlineTraders": [
{ "platform": "Other", "reference": "www.jeschke-kg.de" },
{ "platform": "Other", "reference": "www.landahl.de" }
],
"source": "Alerts from the Rapid Alert System for dangerous non-food products, published free of charge on the Safety Gate website (https://ec.europa.eu/safety-gate-alerts) © European Union, 2005 – 2026"
}

An empty field in the source becomes null, never "" — so a missing barcode and a blank one are the same thing, and barcodeChecksumValid is null rather than false when there is nothing to check.

What you pay for

eventpricewhen
Recall alert returned$0.002one alert written to the dataset, after it is saved
Weekly report read$0.01one weekly report fetched and parsed — only when both succeed
Watchlist match$0.05an alert matched one of your barcodes or brands. Zero if you supply no watchlist

Nothing is charged for a request that failed, and the run stops when it reaches the spending limit you set — the rows already saved are yours, and nothing beyond the limit is billed.

What this Actor does not do

  • No personal data. The source has none: it describes products, hazards and the measures taken. There is no name, contact, address or user content in the feed or in the output. Brands, shop domains and a company's own recall page are business identifiers and are passed through as published.
  • No logins, no proxies, no CAPTCHA solving. It reads a public, unauthenticated XML export from ec.europa.eu — the same file the portal's own Download button gives you — with one identifying User-Agent and a pause between requests. If the Commission ever refuses a request, this Actor fails loudly rather than trying again differently.
  • No guessing. An unparseable date is null, not a plausible-looking wrong date. An unrecognised measures shape is kept whole rather than silently dropped.

Source, accuracy and attribution

Data comes from the EU Safety Gate rapid alert system, ec.europa.eu/safety-gate-alerts. This Actor reformats what the Commission publishes and adds nothing to it. Where an alert is incomplete, it is incomplete here too — the alertUrl on every row takes you to the official page, which is always the authority.

Reports are published weekly, on Fridays. Nothing here is legal advice about your obligations.

Reuse of Safety Gate alerts is authorised by the Commission's Safety Gate disclaimer (reuse policy under Commission Decision 2011/833/EU), provided the original meaning is not distorted and the source is acknowledged. The required attribution is reproduced verbatim below and on every row of this Actor's output (source field), so it travels with the data even if you filter or re-export individual rows:

"Alerts from the Rapid Alert System for dangerous non-food products, published free of charge on the Safety Gate website (https://ec.europa.eu/safety-gate-alerts) © European Union, 2005 – 2026"

Support

Use the Issues tab on this Actor. Include the run id and the input you used.