EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper avatar

EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper

Pricing

from $10.20 / 1,000 results

Go to Apify Store
EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper

EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper

Scrape EU Safety Gate (RAPEX) dangerous non-food product alerts: alert number, product, brand, risk type, measures (recall/withdrawal/ban), origin & notifying country, importer. JSON/CSV/Excel.

Pricing

from $10.20 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper

EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper

Here is one real result, with every field the actor returns:

{
"alertNumber": "SR/02169/26",
"alertLevel": "Serious risk",
"productName": "Camping chair",
"productCategory": "Furniture",
"brand": "Biltema",
"model": "37-516",
"specificName": "Campingstol, 8 positioner",
"barcodes": [],
"batchNumbers": [],
"riskTypes": ["Injuries"],
"riskDescription": "The aluminium chair frame breaks where the inner metal reinforcement ends and the chair may unexpectedly collapse, leading to injuries. The product does not comply with the General Product Safety Regulation nor with the European standards EN 581-1 and EN 581-2.",
"description": "Outdoor folding chair for camping use.",
"measures": [
{
"operator": "Manufacturer",
"category": "Recall of the product from end users",
"entryIntoForceDate": "29/06/2026"
}
],
"measuresText": "Type of economic operator to whom the measure(s) were ordered: Manufacturer. Category of measure(s): Recall of the product from end users. Date of entry into force: 29/06/2026",
"recallUrl": "https://www.biltema.se/om-biltema/kundservice/produktinformation/aterkallelser/aterkallelse-av-campingstol-37-516/",
"companyRecallCode": null,
"productionDates": null,
"notifyingCountry": "Sweden",
"countryOfOrigin": "People's Republic of China",
"productType": "Consumer",
"onlineTrader": "Other(https://www.biltema.se) /",
"soldOnline": "Yes",
"images": [
"https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11229134",
"https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11229135"
],
"imageUrl": "https://ec.europa.eu/safety-gate-alerts/public/api/notification/image/11229134",
"url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10099512",
"notificationId": 10099512,
"reportReference": "Report-2026-31",
"publicationDate": "2026-08-07",
"publicationWeek": 31,
"publicationYear": 2026,
"observedAt": "2026-08-11T23:18:25.409Z",
"error": null
}

The most complete EU Safety Gate (RAPEX) scraper available. It returns every field the European Commission Safety Gate alerts portal exposes for each dangerous non-food product alert, including risk description, ordered measures, notifying country, country of origin and online-trader details, plus optional AI add-ons for summaries, severity scoring and structured extraction, and gives you nine filters to target exactly the alerts you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor collects dangerous non-food product alerts from the EU Safety Gate (RAPEX) portal run by the European Commission. It scans the weekly reports newest-first, applies the filters you pass as input, and writes one normalized record per alert to the run's dataset. Missing source values are returned as null, and structured fields such as measures, riskTypes, barcodes and images are parsed into clean arrays.

Three optional AI add-ons are available on paid Apify plans and off by default: a plain-language aiSummary, an aiSeverity risk classification with aiRiskScore and aiRiskRationale, and a structured aiExtract. Each is billed only when it produces output.

The source is reached through Apify Residential proxy in the EU (Germany) by default, which is the most reliable way to load the European Commission portal from a datacenter.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 5 recent Safety Gate alerts.

{
"maxAlerts": 5,
"soldOnlineOnly": false
}

Every input field is optional. With an empty input the actor returns the most recent alerts (default maxAlerts is 10) with no AI add-ons.

Input reference

FieldTypeRequiredDefaultDescription
maxAlertsintegerno10Maximum alerts to collect. Free Apify plans are capped at 10 per run.
publicationDateFromstringno(empty)Include alerts published on or after this date (YYYY-MM-DD). Alerts are scanned newest-first, so a from-date makes large pulls fast.
publicationDateTostringno(empty)Include alerts published on or before this date (YYYY-MM-DD).
productCategorystringno(empty)Keyword matched against product category, for example toys, electrical, cosmetics, motor vehicles, childcare.
riskTypestringno(empty)Keyword matched against risk type, for example chemical, choking, strangulation, burns, electric shock, fire.
notifyingCountrystringno(empty)Country that reported the alert. Name or ISO code, for example Germany or DE.
countryOfOriginstringno(empty)Country where the product was made. Name or ISO code, for example China or CN.
measureTypestringno(empty)Keyword matched against ordered measures, for example recall, withdrawal, ban, import rejection.
keywordstringno(empty)Keyword matched against product name, brand, model, description and reference number, for example a brand or lithium battery.
soldOnlineOnlybooleannofalseIf enabled, only include alerts for products sold online.
maxScanintegerno200Safety cap on how many weekly reports (newest first) are opened. Each report holds roughly 40 to 70 alerts. Raise it for large historical pulls with narrow filters.
proxyConfigurationobjectnoResidential (DE)Standard Apify proxy configuration. Defaults to Apify Residential proxy in the EU.
withSummarybooleannofalsePaid AI add-on. Adds a plain-language aiSummary. Billed only when produced. Requires a paid Apify plan.
withSeveritybooleannofalsePaid AI add-on. Adds aiSeverity (low/medium/high/serious), a 0 to 100 aiRiskScore and aiRiskRationale. Billed only when produced. Requires a paid Apify plan.
withExtractbooleannofalsePaid AI add-on. Adds a structured aiExtract (product, hazard type, risk, brand, origin, measures). Billed only when produced. Requires a paid Apify plan.

Text filters are case-insensitive and match on "contains". Filters combine with logical AND.

Output reference

One dataset item per alert. Types: string, integer, string[], object[], or null when the source value is absent.

FieldTypeDescription
alertNumberstringSafety Gate alert number, for example SR/02169/26.
alertLevelstringRisk level, for example Serious risk.
productNamestringProduct name.
productCategorystringProduct category, for example Furniture, Toys.
brandstringBrand name.
modelstringModel or type number.
specificNamestringSpecific product name as reported.
barcodesstring[]Product barcodes / EAN codes.
batchNumbersstring[]Affected batch numbers.
riskTypesstring[]Risk types, for example Injuries, Chemical.
riskDescriptionstringFull description of the hazard and non-compliance.
descriptionstringProduct description.
measuresobject[]Ordered measures, each with operator, category, entryIntoForceDate.
measuresTextstringMeasures as a single text block.
recallUrlstringExternal company recall page, or null.
companyRecallCodestringCompany recall code, or null.
productionDatesstringProduction dates, or null.
notifyingCountrystringCountry that reported the alert.
countryOfOriginstringCountry where the product was made.
productTypestringProduct type, for example Consumer.
onlineTraderstringOnline trader details, or null.
soldOnlinestringWhether the product was sold online (Yes / No).
imagesstring[]Product image URLs.
imageUrlstringPrimary product image URL.
urlstringCanonical Safety Gate alert detail URL.
notificationIdintegerInternal Safety Gate notification ID.
reportReferencestringWeekly report reference, for example Report-2026-31.
publicationDatestringDate the alert was published (YYYY-MM-DD).
publicationWeekintegerWeek number of publication.
publicationYearintegerYear of publication.
aiSummarystringAI plain-language summary. Present only when the withSummary add-on ran.
aiSeveritystringAI severity class. Present only when withSeverity ran.
aiRiskScoreintegerAI risk score 0 to 100. Present only when withSeverity ran.
aiRiskRationalestringOne-sentence rationale. Present only when withSeverity ran.
aiExtractobjectAI structured extract. Present only when withExtract ran.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"maxAlerts": 5, "soldOnlineOnly": false}):

{
"alertNumber": "SR/02169/26",
"alertLevel": "Serious risk",
"productName": "Camping chair",
"productCategory": "Furniture",
"brand": "Biltema",
"model": "37-516",
"riskTypes": ["Injuries"],
"riskDescription": "The aluminium chair frame breaks where the inner metal reinforcement ends and the chair may unexpectedly collapse, leading to injuries.",
"measures": [
{ "operator": "Manufacturer", "category": "Recall of the product from end users", "entryIntoForceDate": "29/06/2026" }
],
"recallUrl": "https://www.biltema.se/om-biltema/kundservice/produktinformation/aterkallelser/aterkallelse-av-campingstol-37-516/",
"notifyingCountry": "Sweden",
"countryOfOrigin": "People's Republic of China",
"soldOnline": "Yes",
"url": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/10099512",
"notificationId": 10099512,
"reportReference": "Report-2026-31",
"publicationDate": "2026-08-07",
"publicationWeek": 31,
"publicationYear": 2026,
"observedAt": "2026-08-11T23:18:25.409Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~eu-safety-gate-recalls-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"productCategory":"toys","riskType":"choking","maxAlerts":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~eu-safety-gate-recalls-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"countryOfOrigin":"China","publicationDateFrom":"2026-01-01","maxAlerts":100}'

Apify CLI:

apify call scrapers_lat/eu-safety-gate-recalls-scraper \
--input '{"keyword":"lithium battery","maxAlerts":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per alert record returned (result event). See the pricing tab for the current per-result price.
  • Optional AI add-ons are billed as separate events only when they produce output: ai_summary, ai_severity and ai_extract. They are off by default and require a paid Apify plan.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results and add-ons.
  • Free Apify plans are capped at 10 records per run and cannot use the AI add-ons. Upgrade for higher maxAlerts.

FAQ and troubleshooting

A run returned 0 records. Why? The filter combination matched nothing within the weekly reports scanned. Loosen filters, widen the date range, or raise maxScan. Zero-result runs are not charged.

Why did a filtered historical pull stop early? Weekly reports are opened newest-first up to maxScan (default 200). Raise maxScan for large historical pulls with narrow filters.

Why are the ai* fields missing? The AI add-ons are off by default. Enable withSummary, withSeverity or withExtract on a paid Apify plan. Free plans cannot use them.

Why is recallUrl, companyRecallCode or productionDates null? The Safety Gate alert did not include that value. Missing source values are returned as null, never invented.

Is this an official European Commission tool? No. This actor is independent and has no affiliation with the European Commission. It reads only data that is publicly available on the Safety Gate portal. Use it in accordance with the portal terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the European Commission. Accesses only publicly available EU Safety Gate data. Use in accordance with the portal terms.