EU Safety Gate (RAPEX) Product Recalls & Alerts Scraper
Pricing
from $10.20 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxAlerts | integer | no | 10 | Maximum alerts to collect. Free Apify plans are capped at 10 per run. |
publicationDateFrom | string | no | (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. |
publicationDateTo | string | no | (empty) | Include alerts published on or before this date (YYYY-MM-DD). |
productCategory | string | no | (empty) | Keyword matched against product category, for example toys, electrical, cosmetics, motor vehicles, childcare. |
riskType | string | no | (empty) | Keyword matched against risk type, for example chemical, choking, strangulation, burns, electric shock, fire. |
notifyingCountry | string | no | (empty) | Country that reported the alert. Name or ISO code, for example Germany or DE. |
countryOfOrigin | string | no | (empty) | Country where the product was made. Name or ISO code, for example China or CN. |
measureType | string | no | (empty) | Keyword matched against ordered measures, for example recall, withdrawal, ban, import rejection. |
keyword | string | no | (empty) | Keyword matched against product name, brand, model, description and reference number, for example a brand or lithium battery. |
soldOnlineOnly | boolean | no | false | If enabled, only include alerts for products sold online. |
maxScan | integer | no | 200 | Safety 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. |
proxyConfiguration | object | no | Residential (DE) | Standard Apify proxy configuration. Defaults to Apify Residential proxy in the EU. |
withSummary | boolean | no | false | Paid AI add-on. Adds a plain-language aiSummary. Billed only when produced. Requires a paid Apify plan. |
withSeverity | boolean | no | false | Paid 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. |
withExtract | boolean | no | false | Paid 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.
| Field | Type | Description |
|---|---|---|
alertNumber | string | Safety Gate alert number, for example SR/02169/26. |
alertLevel | string | Risk level, for example Serious risk. |
productName | string | Product name. |
productCategory | string | Product category, for example Furniture, Toys. |
brand | string | Brand name. |
model | string | Model or type number. |
specificName | string | Specific product name as reported. |
barcodes | string[] | Product barcodes / EAN codes. |
batchNumbers | string[] | Affected batch numbers. |
riskTypes | string[] | Risk types, for example Injuries, Chemical. |
riskDescription | string | Full description of the hazard and non-compliance. |
description | string | Product description. |
measures | object[] | Ordered measures, each with operator, category, entryIntoForceDate. |
measuresText | string | Measures as a single text block. |
recallUrl | string | External company recall page, or null. |
companyRecallCode | string | Company recall code, or null. |
productionDates | string | Production dates, or null. |
notifyingCountry | string | Country that reported the alert. |
countryOfOrigin | string | Country where the product was made. |
productType | string | Product type, for example Consumer. |
onlineTrader | string | Online trader details, or null. |
soldOnline | string | Whether the product was sold online (Yes / No). |
images | string[] | Product image URLs. |
imageUrl | string | Primary product image URL. |
url | string | Canonical Safety Gate alert detail URL. |
notificationId | integer | Internal Safety Gate notification ID. |
reportReference | string | Weekly report reference, for example Report-2026-31. |
publicationDate | string | Date the alert was published (YYYY-MM-DD). |
publicationWeek | integer | Week number of publication. |
publicationYear | integer | Year of publication. |
aiSummary | string | AI plain-language summary. Present only when the withSummary add-on ran. |
aiSeverity | string | AI severity class. Present only when withSeverity ran. |
aiRiskScore | integer | AI risk score 0 to 100. Present only when withSeverity ran. |
aiRiskRationale | string | One-sentence rationale. Present only when withSeverity ran. |
aiExtract | object | AI structured extract. Present only when withExtract ran. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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_severityandai_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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- CPSC Product Recalls Scraper: US consumer product recalls with hazards and remedies.
- Health Canada Recalls & Safety Alerts Scraper: Canadian consumer product and food recalls.
- MHRA UK Drug & Device Safety Alerts Scraper: UK drug and device safety alerts and recalls.
- USDA FSIS Meat & Poultry Recalls Scraper: US meat, poultry and egg recalls.
- openFDA Food Recall & Enforcement Scraper: US FDA food recalls and enforcement reports.
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.
