# EU Safety Gate Product Recalls & Alerts API (`koalastuff/eu-safety-gate-alert-monitor`) Actor

Collect official EU Safety Gate product recalls and non-food safety alerts. Filter by risk, category, country, and keyword for compliance workflows.

- **URL**: https://apify.com/koalastuff/eu-safety-gate-alert-monitor.md
- **Developed by:** [Timo Schmidt](https://apify.com/koalastuff) (community)
- **Categories:** E-commerce, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 product safety alerts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## EU Safety Gate Product Alert Monitor

Collect official EU Safety Gate product recalls and non-food safety alerts. Filter by risk, category, country, and keyword for compliance workflows.

This is an unofficial community Actor. It is not affiliated with or endorsed by the European Commission or European Union.

### Try this first

Start with the example input below to inspect recent serious-risk alerts. Results are written to the default dataset with official alert links, measures, and source attribution.

[![EU Safety Gate Product Alert Monitor icon](https://api.apify.com/v2/key-value-stores/JoHkELuyqjk6waZJX/records/icon-eu-safety-gate-alert-monitor.png)](https://apify.com/koalastuff/eu-safety-gate-alert-monitor)

#### Example output

[![Example output preview](https://api.apify.com/v2/key-value-stores/JoHkELuyqjk6waZJX/records/preview-eu-safety-gate-alert-monitor.svg)](https://apify.com/koalastuff/eu-safety-gate-alert-monitor)

This preview is generated from a checked-in official-source fixture. It shows the normalized output shape without inventing live demand or results.

### Use cases

- Monitor newly published product safety alerts and recalls.
- Filter alerts by product category, risk level, notifying country, or keyword.
- Feed compliance, marketplace, retail, procurement, and consumer-safety workflows.
- Export stable alert rows with official links, photos, risks, and measures.

### Input

| Field | Description | Default |
| --- | --- | --- |
| `reportCount` | Latest weekly reports to inspect, from 1 to 52 | `1` |
| `keywords` | Text match across product, brand, model, description, risk, and measures | none |
| `categories` | Exact official product-category labels | all |
| `riskLevels` | Exact official risk-level labels | all |
| `notifyingCountries` | Exact official notifying-country names | all |
| `maxResults` | Hard unique-output and billing limit | `100` |
| `requestDelayMs` | Delay between weekly detail exports | `500` |

```json
{
  "reportCount": 4,
  "keywords": "battery",
  "categories": ["Electrical appliances and equipment"],
  "riskLevels": ["Serious risk"],
  "maxResults": 100
}
````

### Output

Every dataset row contains the official alert number, report date, category, product identity, brand, model, batch and barcode data, risk types and description, measures, countries, recall links, picture links, and official source URLs. Missing optional source fields remain `null` or empty arrays; the Actor does not guess them.

### Reliability and limits

- Official public XML exports only; no page scraping, browser, proxy, account, or paid service.
- The official weekly-report index currently covers reports from 2005 onward and links to each detail XML export.
- One request at a time, up to 52 reports, configurable delay, and three retries.
- Duplicate removal uses the stable Safety Gate case number.
- Maximum 10,000 unique results per run.
- Text filters run after downloading the selected reports because the official weekly XML export is the source of truth.

### Pricing

Pay per event:

- Actor start: USD 0.00005
- Normalized alert: USD 0.001

No proxy, browser, paid API, or external subscription is required. The user's configured maximum charge per run remains the hard billing limit.

A two-result Apify smoke run on 256 MB used USD 0.0003611224 of platform resources and completed in 22.603 seconds.

### Data source and reuse

Source: <https://ec.europa.eu/safety-gate-alerts/api/download/weeklyReport/list/xml/en>.

Required source acknowledgement included in every result: “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)”.

Safety Gate authorizes reuse provided the original meaning is not distorted and the source is acknowledged. This Actor preserves the official content, adds normalized fields, and includes that acknowledgement in every dataset row.

Users must verify current measures and product identity on the linked official alert before taking compliance, commercial, or legal action.

### Support

Report reproducible problems with the input, run link, expected field, and affected alert number. Do not include credentials or private customer data.

### Related Actors

- [FDA Enforcement Report Finder](https://apify.com/koalastuff/fda-enforcement-report-finder) for FDA enforcement-report research and export.
- [CISA KEV Priority & Remediation Monitor](https://apify.com/koalastuff/cisa-kev-priority-monitor) for exploited-vulnerability prioritization.

# Actor input Schema

## `reportCount` (type: `integer`):

Number of latest official weekly reports to inspect.

## `keywords` (type: `string`):

Optional case-insensitive text match across product, brand, model, description, risk, and measures.

## `categories` (type: `array`):

Optional exact category names, for example Toys or Motor vehicles.

## `riskLevels` (type: `array`):

Optional exact official risk-level labels, for example Serious risk.

## `notifyingCountries` (type: `array`):

Optional exact country names reported by Safety Gate.

## `maxResults` (type: `integer`):

Hard unique-output and billing limit after filtering.

## `requestDelayMs` (type: `integer`):

Conservative delay in milliseconds between official detail exports.

## Actor input object example

```json
{
  "reportCount": 1,
  "maxResults": 100,
  "requestDelayMs": 500
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("koalastuff/eu-safety-gate-alert-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("koalastuff/eu-safety-gate-alert-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call koalastuff/eu-safety-gate-alert-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=koalastuff/eu-safety-gate-alert-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Safety Gate Product Recalls & Alerts API",
        "description": "Collect official EU Safety Gate product recalls and non-food safety alerts. Filter by risk, category, country, and keyword for compliance workflows.",
        "version": "0.1",
        "x-build-id": "rSjzYQtBsvqjzbbNm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/koalastuff~eu-safety-gate-alert-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-koalastuff-eu-safety-gate-alert-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/koalastuff~eu-safety-gate-alert-monitor/runs": {
            "post": {
                "operationId": "runs-sync-koalastuff-eu-safety-gate-alert-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/koalastuff~eu-safety-gate-alert-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-koalastuff-eu-safety-gate-alert-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "reportCount": {
                        "title": "Latest weekly reports",
                        "minimum": 1,
                        "maximum": 52,
                        "type": "integer",
                        "description": "Number of latest official weekly reports to inspect.",
                        "default": 1
                    },
                    "keywords": {
                        "title": "Keywords",
                        "maxLength": 200,
                        "type": "string",
                        "description": "Optional case-insensitive text match across product, brand, model, description, risk, and measures."
                    },
                    "categories": {
                        "title": "Product categories",
                        "maxItems": 30,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional exact category names, for example Toys or Motor vehicles.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                        }
                    },
                    "riskLevels": {
                        "title": "Risk levels",
                        "maxItems": 20,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional exact official risk-level labels, for example Serious risk.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                        }
                    },
                    "notifyingCountries": {
                        "title": "Notifying countries",
                        "maxItems": 40,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional exact country names reported by Safety Gate.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                        }
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard unique-output and billing limit after filtering.",
                        "default": 100
                    },
                    "requestDelayMs": {
                        "title": "Delay between reports",
                        "minimum": 0,
                        "maximum": 60000,
                        "type": "integer",
                        "description": "Conservative delay in milliseconds between official detail exports.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
