# EEA Assessment and Publication Announcements (`vixendata/eea-assessment-and-publication-announcements`) Actor

Latest twenty-five first-page HTML press release cards only. Includes institutional news. No API, RSS, search, query URLs, details or full-archive coverage.

- **URL**: https://apify.com/vixendata/eea-assessment-and-publication-announcements.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 $1.00 / 1,000 source-linked publication/news/catalogue 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

## EEA Assessment and Publication Announcements

Latest twenty-five first-page HTML press release cards only. Includes institutional news. No API, RSS, search, query URLs, details or full-archive coverage.

### Output and use

One typed factual record per official URL. Use for publication discovery, research alerts and tracking source metadata. No legal advice or inferred compliance obligations. `publicationDate` is the source date; dates are normalized without invention. HTML whitespace is normalized. Nullable summaries reflect missing source text. `contentHash` excludes retrieval time, supporting comparisons across runs.

Fixed source: https://www.eea.europa.eu/en/newsroom/news

### Input

All filters operate locally after fetching the single fixed listing. `maxItems` is 1–25, default 25. `keyword` is an optional case-insensitive title/summary substring. The date filter accepts YYYY-MM-DD inclusive. Optional type filters, where present, require an exact case-insensitive official type label. Unknown fields and invalid values fail before network access. No arbitrary URLs, credentials or proxies accepted.

### Safety and coverage

Ordinary Python urllib HTTP and real Apify SDK. Fetch robots.txt first, obey matching rules and crawl-delay, fail closed on missing/invalid robots, and make at most two sequential requests, at least two seconds apart (or longer robots delay). No redirects, retries, proxy rotation, browser impersonation, CAPTCHA handling, authentication, query routes or API/RSS/search. Stop on denials, challenges, unexpected content types, changed card structure or malformed required metadata. Limits: elapsed-time checks target 120 seconds, with up to 25 seconds socket-read overshoot; socket timeout is at most 25 seconds (not a whole-response deadline), 5 MB per response, 10 MB overall. Never download linked documents. No archive completeness claims. Empty local-filter results are valid; an empty/unrecognized source listing fails visibly. RUN_REPORT records status, request and byte counts, coverage and zero documents fetched.

### Rights and attribution

Source: European Environment Agency (EEA), CC BY under the EEA legal notice unless otherwise stated. Metadata and dates normalized. No endorsement; logos/images/third-party material excluded.

Rights notice: https://www.eea.europa.eu/en/legal-notice

Only source metadata and official links. No document bodies, images, logos, general site layout, personal profiles or explicitly restricted third-party content. Rights of linked documents are independent. Review notices before downstream reuse.

### Local verification

Python 3.12: install requirements.txt, then `python -m unittest discover -s tests -v`. Run `python main.py` with optional Apify SDK input. Portable fixtures are official source responses from 2026-10-06. See TEST_REPORT.md and verification/ for actual SDK and parser evidence. The root dataset.schema.json is a strict typed output contract; .actor/dataset_schema.json defines the Console dataset view.

# Actor input Schema

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

Maximum records emitted after local filters; cannot exceed the fixed first-page source limit.

## `keyword` (type: `string`):

Optional case-insensitive title/summary substring, applied locally only.

## `publishedSince` (type: `string`):

Optional inclusive YYYY-MM-DD source publication/decision date, applied locally.

## Actor input object example

```json
{
  "maxItems": 25,
  "keyword": "",
  "publishedSince": ""
}
```

# 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/eea-assessment-and-publication-announcements").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/eea-assessment-and-publication-announcements").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/eea-assessment-and-publication-announcements --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vixendata/eea-assessment-and-publication-announcements"
        }
    }
}
```

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/M5X27mPxssw3RjQNE/builds/g3JzECZDefivkqDQh/openapi.json
