# EIOPA Consultation Tracker (`vixendata/eiopa-consultation-tracker`) Actor

Bounded EIOPA insurance and pensions consultation inventory with official status, deadlines, target audience and document links.

- **URL**: https://apify.com/vixendata/eiopa-consultation-tracker.md
- **Developed by:** [Vixendata](https://apify.com/vixendata) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 recognized consultation/publication/alert metadata records

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## EIOPA Consultation Tracker

Typed public consultation metadata for insurance and pensions regulatory monitoring. Use deadlines and source links in an internal calendar or review queue. Independent tool; not an EIOPA service or financial/legal advice.

### Coverage and limits

Reads https://www.eiopa.europa.eu/consultations_en and at most 20 consultation detail pages. The default page currently exposes open consultations. Explicit canonical English detail URLs can be supplied for other known consultations. No archive completeness, pagination, status filtering, historical snapshots, alert delivery or inferred lifecycle transitions are promised. An empty/unrecognized inventory fails visibly rather than claiming a complete empty archive. Status is copied from the page, never calculated from today's date.

No submission forms, stakeholder responses, third-party content or document bodies are collected. Reference documents are links only. Missing optional values remain null or empty arrays. Source changes or unavailable required fields stop the run. Records written before an error remain in the dataset; check the run status before treating it as complete.

### Inputs

- `maxItems`: integer 1–20, default 5; detail-page cap.
- `discoverList`: boolean, default true; read the default inventory page.
- `consultationUrls`: up to 20 canonical HTTPS `www.eiopa.europa.eu/consultations/<slug>_en` URLs, no query or fragment. Explicit URLs are processed first and deduplicated with discovery.

Example: `{"maxItems":2,"discoverList":true,"consultationUrls":[]}`.

### Output

One record per consultation: `source`, `url`, `title`, explicit `status`, `openingDate`, `deadlineDate`, `deadlineTimeText`, `deadlineTimezoneText`, original `deadlineText`, source `openingTimestamp` and `deadlineTimestamp`, `topics`, `targetAudience`, and `referenceDocuments` with title, URL, date, language and sizeText. `topics` are verbatim page metadata keywords, not inferred regulatory classifications. Document dates are document publication labels; no unsupported consultation publication date is invented. Visible local dates are preserved independently of UTC machine timestamps.

Every record includes `observedAt`, `attribution`, `reuseNotice`, `freeSourceNotice` and `licenseUrl`. `RUN_SUMMARY` in the default key-value store states counts, coverage and truncation. Standard Apify dataset exports are supported.

### Access safeguards

Fixed host and narrow path allowlist; no arbitrary start URLs, configurable proxies, authentication, browser emulation or redirects. Uses standard runtime network transport. Fetches robots.txt first, respects crawl delay/request rate with a minimum two seconds between request starts, single request at a time. HTTP errors, access denials, redirects, invalid robots responses and unexpected HTML fail closed; no retries or alternate routes. 30-second request timeout and 2 MiB response cap. Robots policy is checked anew for each run. Documents are not fetched.

### Run and test

Install `pip install -r requirements.txt`, then `python -m unittest -v` and `python main.py`. Hosted runs use Apify input/dataset storage; local runs use the SDK's standard local storage. The eight-file source bundle embeds compressed exact public HTML/robots snapshots retrieved on 2026-10-05 in `test_main.py`, so tests work without external fixture paths or live requests. Tests exercise real list/detail records, date/time fidelity, security boundaries and failure behavior. Tests are not a guarantee against future website changes.

### Attribution and reuse

Original information is freely available on EIOPA's website. This output transforms HTML into structured metadata and is not an official publication. Source: EIOPA - European Insurance and Occupational Pensions Authority, https://eiopa.europa.eu/

This document has been drafted using material downloaded from EIOPA website

EIOPA does not endorse this publication and in no way is liable for copyright or other intellectual property rights infringements nor for any damages caused to third-parties through this publication

Source terms: https://www.eiopa.europa.eu/legal-notice_en. No EIOPA logos or special-license tools are included. Referenced materials may have their own terms; links do not grant rights to republish those files. Preserve these notices in downstream derived outputs.

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum detail pages to fetch, from 1 to 20. Explicit URLs are processed first.

## `discoverList` (type: `boolean`):

Read only the default public consultations page; no archive, filters or pagination. Disable to use explicit URLs only.

## `consultationUrls` (type: `array`):

Up to 20 HTTPS www.eiopa.europa.eu/consultations/<slug>\_en URLs. No query strings, fragments, alternate hosts or redirects.

## Actor input object example

```json
{
  "maxItems": 5,
  "discoverList": true,
  "consultationUrls": []
}
```

# 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("vixendata/eiopa-consultation-tracker").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("vixendata/eiopa-consultation-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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 vixendata/eiopa-consultation-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vixendata/eiopa-consultation-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3hVhiqdTdasM7Rc78/builds/EsfPsTifVsg55U2d5/openapi.json
