# EU Harmonised Standards & CE Marking Monitor (`nordicdataforge/eu-harmonised-standards-monitor`) Actor

Monitor official EU harmonised-standard references, legal-effect dates, publication decisions, and withdrawals across 13 CE-relevant product-law areas.

- **URL**: https://apify.com/nordicdataforge/eu-harmonised-standards-monitor.md
- **Developed by:** [Nordic Data Forge](https://apify.com/nordicdataforge) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 standard results

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Harmonised Standards & CE Marking Monitor

Monitor official European Commission harmonised-standard references, legal-effect dates, publication decisions, and withdrawals without maintaining a scraper or buying access to standards text.

This Actor converts the Commission's official summary workbooks into consistent, filterable records for 13 product-law areas:

- General Product Safety Regulation
- Personal Protective Equipment
- Toy Safety
- Radio Equipment
- Medical Devices
- In Vitro Diagnostic Medical Devices
- Machinery
- Equipment for Explosive Atmospheres (ATEX)
- Pressure Equipment
- Lifts and Safety Components
- Measuring Instruments
- Gas Appliances
- Recreational Craft and Personal Watercraft

No European Commission account, API key, proxy, browser session, CAPTCHA service, or standards subscription is required. The default input works immediately.

### What you receive

Every result contains the standard reference and title, European standardisation organisation, covered EU legislation, current legal-effect status, start and end dates, Official Journal references, implementing-decision references and EUR-Lex links, source snapshot date, and direct official source links.

Persistent monitoring marks each item as `new`, `updated`, `unchanged`, or `removed` and lists exactly which legal fields changed. A record that leaves the current list because its legal effect ended retains the newly published end and withdrawal metadata in the removal event.

This is metadata for compliance monitoring, not the full text of any EN, ISO, IEC, ETSI, CEN, or CENELEC standard.

### Quick start

1. Keep the default input.
2. Click **Start**.
3. Open the default dataset as JSON, CSV, Excel, RSS, or through the Apify API.

The default checks all 13 supported areas, excludes references whose legal effect has already ended, and returns up to 250 records. Select a smaller set of areas or filter by reference for focused monitoring.

#### Example input

```json
{
    "legislations": ["medical-devices", "in-vitro-diagnostics"],
    "maxResults": 500,
    "keywords": ["sterilization"],
    "standardReferences": ["EN ISO 13485"],
    "includeEndedReferences": false,
    "enableChangeMonitoring": true,
    "outputMode": "new-updated-removed"
}
```

Keywords use AND matching across the standard title, reference, legislation, standardisation body, and legal-publication metadata. Reference filters use case-insensitive partial matching and match any supplied reference.

### Output example

```json
{
    "legislationTitle": "Medical Devices",
    "legislationReference": "Regulation (EU) 2017/745",
    "standardisationBody": "CEN",
    "primaryReference": "EN ISO 13485:2016",
    "standardReferences": ["EN ISO 13485:2016"],
    "title": "Medical devices — Quality management systems — Requirements for regulatory purposes",
    "legalEffectStatus": "in-force",
    "startOfLegalEffect": "2022-01-05",
    "endOfLegalEffect": null,
    "publicationDecisionReference": "2022/6",
    "publicationDecisionUrl": "https://eur-lex.europa.eu/eli/dec_impl/2022/6/oj/eng",
    "sourcePageUrl": "https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/medical-devices_en",
    "changeType": "new"
}
```

The example illustrates the output shape. Source values can be corrected or replaced by the European Commission.

### Suggested monitoring setup

For a low-noise weekly compliance feed:

1. Save an input with the relevant product-law areas or standard references.
2. Set `outputMode` to `new-updated-removed`.
3. Create a weekly Apify schedule.
4. Connect the dataset or webhook to your quality-management system, regulatory workflow, database, email automation, or BI tool.

History is scoped to the selected areas, filters, ended-reference setting, and result cap. History advances only after all selected sources succeed and all selected records are delivered. A failed source or spending limit cannot silently create false removals or mark undelivered changes as seen.

### Pricing and charging safety

The first **10 delivered records per run are free**. After that, the Store price is charged only when a result is successfully written to the dataset using the `standards-result` event. The Actor verifies that Apify's automatic dataset-item event is disabled, preventing double charging. Local runs and non-Pay-per-event builds never charge.

If an Apify spending limit is reached, the Actor stops before charging or marking an undelivered record as seen.

### Data source, reuse, and responsible use

Source: the European Commission's [harmonised standards service](https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards_en). The Commission's [legal notice](https://commission.europa.eu/legal-notice_en) governs reuse and must be checked for any source-specific exception. Each result preserves the Commission attribution, legal-notice link, official source page, and exact source workbook URL.

This is an independent product by Nordic Data Forge. It is not affiliated with, endorsed by, or operated by the European Union, European Commission, CEN, CENELEC, ETSI, ISO, or IEC. It uses no EU emblem, institutional mark, standards-organisation logo, or official visual identity.

Only non-personal legal and standards-reference metadata is processed. The Actor does not request local files, browser data, cookies, credentials, contact data, or private information from the user. It only connects to exact allowlisted European Commission and Commission CIRCABC hostnames over HTTPS.

The Actor does not reproduce or provide paid standards documents. A harmonised reference can support a presumption of conformity only within its exact legal context, dates, limitations, and applicable legislation. This product is not legal, regulatory, certification, engineering, or conformity-assessment advice. Verify the linked Commission and EUR-Lex sources before a compliance, market-access, purchasing, or product-safety decision.

### Source and operational limitations

- The European Commission controls publication timing, workbook structure, coverage, corrections, and availability.
- Version 1 supports the 13 listed areas whose Commission pages expose stable current XLSX summaries. It is not a catalogue of every EU harmonisation act.
- The title and metadata do not replace the normative text of a standard or the applicable legislation.
- A Commission workbook can contain historic, upcoming, or transitional references; use the supplied status and dates together.
- `removed` means the record left the complete monitored result set or became ended under an active-only input. It does not by itself state why the legal source changed.
- Removed-record detection is disabled automatically when any selected source fails or when the result cap truncates the matching set.
- The Actor retries temporary `408`, `425`, `429`, and `5xx` responses, respects `Retry-After`, paces requests, validates source-file signatures, and fails closed on schema drift or off-domain redirects.

### Support

For reproducible support, include the Actor run ID, selected legislation key, input with secrets removed, primary standard reference, and the unexpected field or behavior. This Actor does not require or accept source credentials.

# Actor input Schema

## `legislations` (type: `array`):

Use all for broad monitoring, or enter one or more supported keys: general-product-safety, ppe, toy-safety, radio-equipment, medical-devices, in-vitro-diagnostics, machinery, atex, pressure-equipment, lifts, measuring-instruments, gas-appliances, recreational-craft.

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

Maximum matching standard references delivered by this run.

## `keywords` (type: `array`):

Optional case-insensitive terms. Every term must occur across the standard title, reference, legislation, body, or legal-publication metadata.

## `standardReferences` (type: `array`):

Optional partial references such as EN ISO 13485, EN 71, or ETSI EN 301. A result is included when any requested reference matches.

## `includeEndedReferences` (type: `boolean`):

Include references whose end-of-legal-effect date has passed. Keep disabled for a current operational list.

## `enableChangeMonitoring` (type: `boolean`):

Compare results with the prior successful run of exactly the same filters in persistent Apify storage.

## `outputMode` (type: `string`):

On the first run every result is new. Later runs can emit only actionable deltas, including references removed from a complete source snapshot.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each official European Commission request.

## `maxRetries` (type: `integer`):

Retries temporary timeouts, rate limits, and server errors with backoff.

## `minRequestIntervalMillis` (type: `integer`):

Polite minimum delay between requests to the official service.

## Actor input object example

```json
{
  "legislations": [
    "all"
  ],
  "maxResults": 250,
  "keywords": [],
  "standardReferences": [],
  "includeEndedReferences": false,
  "enableChangeMonitoring": true,
  "outputMode": "all",
  "requestTimeoutSecs": 45,
  "maxRetries": 3,
  "minRequestIntervalMillis": 150
}
```

# Actor output Schema

## `results` (type: `string`):

Standard references, legal-effect dates, EU publication decisions, withdrawal metadata, and monitoring changes.

## `summary` (type: `string`):

Per-source status, record counts, delivery status, licence, privacy statement, and change totals.

# 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("nordicdataforge/eu-harmonised-standards-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("nordicdataforge/eu-harmonised-standards-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 nordicdataforge/eu-harmonised-standards-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/TxIussdkLP6MTVlDo/builds/cPyxHJbpAx4HtXC9b/openapi.json
