# Spain BOE Scraper — Official Gazette Monitor & Alerts (`xamto1987/spain-boe-monitor`) Actor

Scrape the Spanish Official Gazette (BOE) by keyword, section and tax ID (NIF/CIF). Stateful delta mode: every run returns only what is new, ideal for daily alerts. Monitor del BOE por palabra clave, sección y NIF, con filtro de derecho al olvido.

- **URL**: https://apify.com/xamto1987/spain-boe-monitor.md
- **Developed by:** [Santi Belloso Lopez](https://apify.com/xamto1987) (community)
- **Categories:** News, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 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/actors/running/actors-in-store.md#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

Scrape the **Spanish Official Gazette (BOE, Boletín Oficial del Estado)** by
keyword, section and tax ID (NIF/CIF). This **BOE scraper** is a stateful
monitor: every run returns **only what was published since the previous run**,
so a daily Apify Schedule turns into a **BOE alerts** feed instead of a bulk
dump. Documents withdrawn from the BOE under an exercised right-to-be-forgotten
request are excluded from the dataset.

Monitor del **BOE (Boletín Oficial del Estado)** por **palabra clave**,
**sección** y **NIF/CIF**, pensado para **alertas BOE diarias** y **vigilancia
normativa**: en cada ejecución solo entrega lo nuevo, sin repetir lo que ya te
enseñó ayer, y con **filtro de derecho al olvido (RGPD)** aplicado antes de
guardar nada.

### Spain BOE Scraper: what it does · Qué hace este monitor del BOE

The Apify Store already has several actors that dump the whole BOE. None of
them remembers what it showed you yesterday. This one does: it keeps, in its
own Key-Value Store, the last date it processed and the document identifiers it
already delivered, so you only ever see **documents you have not seen before**.

El Store de Apify ya tiene varios actores que vuelcan el BOE entero. Ninguno
recuerda qué te enseñó ayer. Este actor sí: guarda en su propio Key-Value Store
la fecha hasta la que ha procesado y los identificadores que ya entregó, así
que puedes dejarlo en un Schedule diario y solo verás **documentos nuevos**. No
es un volcado del BOE: es un **monitor con estado**.

### BOE data extracted: fields in every item · Qué datos extrae del BOE

One item per BOE document matching your filters / un ítem por documento del BOE
que coincide con tus filtros:

| Campo / Field | Qué es / What it is |
|---|---|
| `identificador` | Identificador oficial (`BOE-A-2026-17945`, `BOE-B-...`) · Official document ID |
| `fechaPublicacion` | Fecha de publicación, ISO `AAAA-MM-DD` · Publication date |
| `seccionCodigo` / `seccionNombre` | Sección del BOE (I a V-C, T) · BOE section |
| `departamentoCodigo` / `departamentoNombre` | Órgano que publica · Publishing body |
| `epigrafe` | Epígrafe dentro del departamento, si lo hay · Sub-heading, if any |
| `titulo` | Título oficial completo · Full official title |
| `rango` | Rango normativo (Ley, Real Decreto, Orden, Resolución…) cuando aplica; `null` en anuncios y otros documentos sin rango · Legal rank when applicable |
| `urlHtml` / `urlPdf` / `urlXml` | Enlaces oficiales al texto · Official links |
| `keywordsCoincidentes` | Qué palabras clave de tu input dispararon la coincidencia · Which keywords matched |
| `identificadoresCoincidentes` | Qué NIF/CIF de tu input aparecen en el documento · Which tax IDs matched |
| `fuente` / `atribucion` | Fuente oficial y cita exigida por la licencia · Source and required attribution |
| `textoCompleto` | Texto íntegro del documento — **solo si activas `incluirTextoCompleto`** · Full text, opt-in |

### BOE scraper input: filters, delta mode and examples · Parámetros de entrada y modo delta

| Parámetro / Field | Tipo / Type | Por defecto / Default | Descripción / Notes |
|---|---|---|---|
| `keywords` | lista de textos | `[]` | Términos a buscar en el título (sin distinguir mayúsculas/acentos) · Title match |
| `secciones` | lista | `[]` | `I, II-A, II-B, III, IV, V-A, V-B, V-C, T`. Vacío = todas · Empty = all sections |
| `identificadores` | lista de textos | `[]` | NIF/CIF a vigilar en el **texto íntegro** de cada documento del ámbito · Tax IDs, full-text match |
| `diasHaciaAtras` | entero | `1` | Solo importa en la **primera ejecución** (define la ventana inicial) o con `soloNuevos: false`. Máximo 30 |
| `soloNuevos` | booleano | `true` | Modo delta: no repite identificadores ya entregados · Delta mode |
| `incluirTextoCompleto` | booleano | `false` | Añade el texto íntegro a cada ítem · Adds full text |

Si dejas `keywords` e `identificadores` vacíos, el actor entrega **todo** lo
publicado en las secciones elegidas (o todo el BOE si tampoco filtras por
sección): útil para un volcado inicial, pero puede ser mucho volumen.

```json
{
  "keywords": ["subvención", "universidad"],
  "secciones": ["III"],
  "diasHaciaAtras": 10,
  "soloNuevos": false
}
```

#### How BOE delta mode works · Cómo funciona el modo delta

1. **Primera ejecución** (sin estado previo): la ventana es
   `hoy - diasHaciaAtras + 1` hasta hoy.
2. **Ejecuciones siguientes** con `soloNuevos: true`: el actor ignora
   `diasHaciaAtras` y continúa exactamente desde el día siguiente al último que
   procesó, guardado en el Key-Value Store (clave `STATE`). Si ya procesó hasta
   hoy, la ventana queda vacía y el actor termina sin entregar nada nuevo —
   **eso es el comportamiento correcto**, no un fallo.
3. Además del avance por fecha, el actor recuerda **por identificador** qué ha
   entregado ya (ventana de 90 días), como red de seguridad adicional.
4. Con `soloNuevos: false` el actor ignora el historial: vuelca de nuevo toda
   la ventana de `diasHaciaAtras`, sin deduplicar contra ejecuciones anteriores.

First run: the window is `today - diasHaciaAtras + 1` through today. Every
following run with `soloNuevos: true` ignores `diasHaciaAtras` and resumes
exactly from the day after the last one it processed (state under key `STATE`);
if it is already caught up to today, the window is empty and it correctly
delivers nothing new. A per-identifier record (90-day window) is a second
safety net. Set `soloNuevos: false` to re-scan the full `diasHaciaAtras` window
regardless of history.

### BOE output example: real items from a real run · Ejemplo de output real

Dos ítems reales del dataset, copiados tal cual de una ejecución con el input
del ejemplo de arriba (4 documentos entregados; aquí van el 1.º y el 4.º).
Two real dataset items, copied verbatim from a live run:

```json
{
  "identificador": "BOE-A-2026-18109",
  "fechaPublicacion": "2026-08-24",
  "seccionCodigo": "3",
  "seccionNombre": "III. Otras disposiciones",
  "departamentoCodigo": "9595",
  "departamentoNombre": "MINISTERIO PARA LA TRANSFORMACIÓN DIGITAL Y DE LA FUNCIÓN PÚBLICA",
  "epigrafe": "Comunidad de Castilla y León. Convenio",
  "titulo": "Resolución de 14 de agosto de 2026, de la Secretaría de Estado de Digitalización e Inteligencia Artificial, por la que se publica el Convenio con la Universidad de Valladolid, para el desarrollo de prácticas externas no retribuidas de sus estudiantes.",
  "rango": "Resolución",
  "urlHtml": "https://www.boe.es/diario_boe/txt.php?id=BOE-A-2026-18109",
  "urlPdf": "https://www.boe.es/boe/dias/2026/08/24/pdfs/BOE-A-2026-18109.pdf",
  "urlXml": "https://www.boe.es/diario_boe/xml.php?id=BOE-A-2026-18109",
  "keywordsCoincidentes": ["universidad"],
  "identificadoresCoincidentes": [],
  "fuente": "Agencia Estatal Boletín Oficial del Estado (BOE)",
  "atribucion": "Basado en datos de la Agencia Estatal Boletín Oficial del Estado (https://www.boe.es)",
  "extraidoEn": "2026-08-28T17:37:32.054Z"
}
```

```json
{
  "identificador": "BOE-A-2026-18259",
  "fechaPublicacion": "2026-08-27",
  "seccionCodigo": "3",
  "seccionNombre": "III. Otras disposiciones",
  "departamentoCodigo": "9579",
  "departamentoNombre": "MINISTERIO DE INCLUSIÓN, SEGURIDAD SOCIAL Y MIGRACIONES",
  "epigrafe": "Convenios",
  "titulo": "Resolución de 20 de agosto de 2026, de la Secretaría General Técnica, por la que se publica la Adenda de modificación al Convenio entre la Secretaría de Estado de Migraciones y Ecuasanitas, SA, sobre la prestación de asistencia sanitaria subvencionada a los emigrantes españoles residentes en Ecuador que carezcan de recursos suficientes.",
  "rango": "Resolución",
  "urlHtml": "https://www.boe.es/diario_boe/txt.php?id=BOE-A-2026-18259",
  "urlPdf": "https://www.boe.es/boe/dias/2026/08/27/pdfs/BOE-A-2026-18259.pdf",
  "urlXml": "https://www.boe.es/diario_boe/xml.php?id=BOE-A-2026-18259",
  "keywordsCoincidentes": ["subvención"],
  "identificadoresCoincidentes": [],
  "fuente": "Agencia Estatal Boletín Oficial del Estado (BOE)",
  "atribucion": "Basado en datos de la Agencia Estatal Boletín Oficial del Estado (https://www.boe.es)",
  "extraidoEn": "2026-08-28T17:37:38.044Z"
}
```

### BOE monitoring use cases · Casos de uso del monitor del BOE

#### Vigilancia normativa · Regulatory monitoring Spain

Deja el actor en un Schedule diario con tus `keywords` y tus `secciones` y
recibe cada mañana solo las disposiciones nuevas que te afectan, sin releer el
boletín entero.

#### Alertas BOE para despachos y compliance · BOE alerts for law firms

Vigila por `identificadores` (NIF/CIF) el texto íntegro de los documentos de un
ámbito acotado: sanciones, notificaciones y anuncios en los que aparece un
cliente o una contraparte.

#### Búsqueda BOE por NIF en due diligence · Tax-ID screening

Combina `identificadores` con una ventana amplia de `diasHaciaAtras` en la
primera ejecución para construir el histórico, y deja el modo delta trabajando
después.

#### Periodismo de datos y research · Data journalism

Un volcado por secciones (sin `keywords`) da la serie completa de lo publicado
en un periodo, ya estructurada en JSON, con los enlaces oficiales de cada
documento.

### BOE source, rate limits and coverage · Fuente oficial, límites y cobertura

- **Fuente oficial**: API de datos abiertos de la Agencia Estatal Boletín
  Oficial del Estado (AEBOE) — `https://www.boe.es/datosabiertos/api/`.
- El actor respeta un máximo de **~1 petición por segundo** contra el BOE:
  1 petición por día de sumario (índice completo del día, barato); 1 petición
  adicional por cada documento **entregado** (para leer su `rango` y, si se
  pide, su texto); y, si usas `identificadores`, 1 petición por cada documento
  **candidato** dentro del ámbito (secciones + fechas), coincida o no, porque
  hay que leer el texto para saber si el NIF/CIF aparece. Si tu ámbito es
  amplio, esto puede tardar: acótalo con `secciones` y `diasHaciaAtras`
  razonables.
- Rate-limited to **~1 request/second**. Keep `secciones` and `diasHaciaAtras`
  narrow when watching tax IDs over a wide scope.
- El actor no hace OCR ni interpreta el contenido: entrega el metadato oficial
  y, opcionalmente, el texto tal cual lo publica la fuente.

### Related Spanish public-data Actors · Actores relacionados

| Actor | Qué extrae / What it scrapes |
|---|---|
| [spain-borme-companies](https://apify.com/xamto1987/spain-borme-companies) | BORME: constituciones, nombramientos, ceses y concursos, campo a campo |
| [spain-grants-bdns](https://apify.com/xamto1987/spain-grants-bdns) | BDNS: convocatorias y concesiones de subvenciones públicas |
| [spain-de-minimis-aid](https://apify.com/xamto1987/spain-de-minimis-aid) | BDNS: ayudas de minimis y ayudas de Estado por NIF |
| [spain-grants-registries](https://apify.com/xamto1987/spain-grants-registries) | BDNS: grandes beneficiarios, sanciones por fraude y partidos políticos |
| [spain-cadastre-bulk](https://apify.com/xamto1987/spain-cadastre-bulk) | Catastro: enriquecimiento masivo por referencia catastral o dirección |
| [spain-bocm-gazette](https://apify.com/xamto1987/spain-bocm-gazette) | BOCM: boletín oficial de la Comunidad de Madrid, en modo delta |
| [spain-boja-gazette](https://apify.com/xamto1987/spain-boja-gazette) | BOJA: boletín oficial de la Junta de Andalucía, en modo delta |
| [catalonia-tenders](https://apify.com/xamto1987/catalonia-tenders) | Licitaciones y adjudicaciones públicas de Cataluña (PSCP) |
| [euskadi-tenders](https://apify.com/xamto1987/euskadi-tenders) | Anuncios de contratación pública del País Vasco |
| [aragon-tenders](https://apify.com/xamto1987/aragon-tenders) | Registro de contratos públicos de Aragón (CKAN) |

### BOE data: is it legal? GDPR and right to be forgotten · Aviso legal, RGPD y derecho al olvido

#### Filtro de derecho al olvido (RGPD) · GDPR right-to-be-forgotten filter

El `robots.txt` del BOE (`https://www.boe.es/robots.txt`, ~13.900 líneas)
contiene miles de líneas `Disallow: /*BOE-A-AAAA-NNNNN$` — de facto, la **lista
de documentos retirados del BOE a petición del interesado** (derecho al olvido
ejercido). Este actor descarga esa lista, la cachea 7 días en el Key-Value
Store (clave `ROBOTS_CACHE`) y **excluye esos identificadores del dataset por
completo**, aunque coincidan con tus filtros. El resumen de la ejecución
(`Actor.setValue('RESUMEN', ...)`) siempre indica cuántos documentos se
excluyeron por este motivo, incluso si son cero.

The BOE's `robots.txt` (~13,900 lines) contains thousands of
`Disallow: /*BOE-A-YYYY-NNNNN$` lines — effectively the **list of documents
removed from the BOE following an exercised right-to-be-forgotten request**.
This actor downloads that list (cached 7 days) and **excludes those identifiers
from the dataset entirely**, even if they would otherwise match your filters.
The run summary always reports how many documents were excluded this way,
including zero.

#### Fuente, licencia y aviso legal · Source, licence and disclaimer

- Este actor **solo lee datos públicos**, sin login, sin cookies y sin saltarse
  ninguna medida técnica. No es un producto oficial ni está afiliado,
  respaldado ni verificado por la AEBOE. This actor is **not** an official
  product and is not affiliated with or endorsed by the AEBOE.
- Licencia: condiciones de reutilización tipo de la AEBOE (Resolución de 27 de
  junio de 2024, al amparo de la Ley 37/2007), que **autorizan explícitamente
  el uso comercial**. Cada ítem incluye el campo `atribucion` con la cita
  exigida. Reuse — including commercial use — is authorized under Spanish Law
  37/2007 and the AEBOE's reuse conditions.
- **Aviso sobre `incluirTextoCompleto`**: la propia API enlaza al texto vía
  `/diario_boe/xml.php`, ruta que el `robots.txt` del BOE bloquea para
  rastreadores de búsqueda (`Disallow: /diario_boe/xml.php?`). La lectura
  razonable, documentada en la validación técnica de este proyecto, es que ese
  bloqueo evita duplicados en buscadores y no impide la reutilización
  autorizada por la licencia — pero por eso esta opción viene **desactivada por
  defecto**.
- Para legislación con efectos jurídicos, consulta siempre el enlace oficial
  (`urlHtml`); este actor no sustituye al BOE oficial. For legally binding
  decisions, always check the official link.

### BOE scraper FAQ · Preguntas frecuentes

#### ¿Puedo recibir alertas del BOE cada día? · Can I get daily BOE alerts?

Sí: es el caso de uso principal. Ponlo en un Schedule diario con
`soloNuevos: true` y cada ejecución entregará solo los documentos publicados
desde la anterior.

#### ¿Por qué una ejecución no ha devuelto nada? · Why did a run return nothing?

Porque el actor ya estaba al día. Con `soloNuevos: true`, si la ventana desde
la última fecha procesada está vacía, no hay nada nuevo que entregar. Es el
comportamiento correcto, no un error.

#### ¿Puedo buscar en el BOE por NIF o CIF? · Can I search the BOE by tax ID?

Sí, con `identificadores`. La búsqueda se hace sobre el **texto íntegro** de
cada documento del ámbito, así que conviene acotar `secciones` y
`diasHaciaAtras` para que el número de peticiones sea razonable.

#### ¿Trae el texto completo de cada documento? · Does it include the full text?

Solo si activas `incluirTextoCompleto`. Viene desactivado por defecto por la
razón explicada en el aviso legal.

#### ¿Qué pasa con los documentos retirados por derecho al olvido?

Nunca entran en el dataset: se excluyen antes de guardar nada, y el `RESUMEN`
de la ejecución dice cuántos fueron.

#### ¿Cubre secciones concretas del BOE? · Can I filter by BOE section?

Sí: `I, II-A, II-B, III, IV, V-A, V-B, V-C, T`. Si dejas la lista vacía, se
vigila el boletín entero.

#### ¿Sirve para el BORME o para boletines autonómicos?

No: el BORME tiene su propio actor
([spain-borme-companies](https://apify.com/xamto1987/spain-borme-companies)), y
para Madrid y Andalucía están
[spain-bocm-gazette](https://apify.com/xamto1987/spain-bocm-gazette) y
[spain-boja-gazette](https://apify.com/xamto1987/spain-boja-gazette).

#### ¿Cuánto cuesta ejecutarlo? · How much does it cost?

El modelo de precio aparece en la pestaña **Pricing** de esta misma ficha del
Store. El consumo de recursos depende sobre todo del número de peticiones
descrito arriba: un día de sumario es barato; vigilar NIF/CIF sobre un ámbito
amplio es lo que más consume.

### Support and feedback · Soporte y sugerencias

¿Falta un campo, un filtro o una sección? ¿Necesitas una variante a medida
(otro boletín, otro formato de salida, integración con tu almacén de datos)?
Abre un *issue* desde la pestaña **Issues** de esta ficha y lo miramos.

Missing a field or a filter? Need a custom variant? Open an issue from the
**Issues** tab of this Actor and we will take a look.

**Palabras clave / Keywords**: BOE scraper, Boletín Oficial del Estado,
Spanish Official Gazette API, monitor BOE por palabra clave, BOE alerts,
alertas BOE diarias, Spain legal monitoring, búsqueda BOE por NIF, official
gazette scraper Spain, BOE API JSON, regulatory monitoring Spain, vigilancia
normativa, derecho al olvido, RGPD, GDPR right to be forgotten, delta monitor.

# Actor input Schema

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

Terminos a vigilar en el titulo de cada documento del BOE (busqueda por substring, sin distinguir mayusculas ni acentos). Vacio junto con `identificadores` = se entrega TODO lo publicado en las secciones seleccionadas (o todo el BOE si tampoco hay secciones). / Terms to watch for in each BOE document's title.

## `secciones` (type: `array`):

Ambito de busqueda por seccion del BOE. Vacio = todas. Valores validos: I (Disposiciones generales), II-A (Nombramientos, situaciones e incidencias), II-B (Oposiciones y concursos), III (Otras disposiciones), IV (Administracion de Justicia), V-A (Contratacion del Sector Publico), V-B (Otros anuncios oficiales), V-C (Anuncios particulares), T (Tribunal Constitucional). / BOE section scope; empty = all sections.

## `identificadores` (type: `array`):

Lista de NIF/CIF a buscar en el TEXTO INTEGRO de cada documento del ambito (no solo el titulo). Coste alto: exige descargar el XML de cada documento candidato a 1 peticion/segundo. Acota `secciones` y `diasHaciaAtras` si usas este filtro. / Spanish tax IDs to watch for in each document's full text. Expensive: fetches the full XML per candidate document.

## `diasHaciaAtras` (type: `integer`):

Solo se usa en la PRIMERA ejecucion (define la ventana inicial) o cuando `soloNuevos` esta desactivado. En ejecuciones posteriores con `soloNuevos: true`, el actor continua automaticamente desde la ultima fecha procesada, sin necesidad de tocar este valor. Maximo 30. / Only used on the first run (defines the initial window) or when `soloNuevos` is off; later runs resume automatically from the last processed date.

## `soloNuevos` (type: `boolean`):

ACTIVADO POR DEFECTO. El actor recuerda (KV store) que identificadores ya entrego y no los vuelve a empujar: cada ejecucion trae solo lo publicado desde la anterior. Desactivalo para volcar de nuevo toda la ventana de `diasHaciaAtras`, ignorando el historial. / ON by default: the actor remembers what it already delivered and only emits new documents each run.

## `incluirTextoCompleto` (type: `boolean`):

DESACTIVADO POR DEFECTO. Anade el texto integro del documento (extraido del XML oficial) a cada item del dataset. Nota legal: la propia API del BOE enlaza a una ruta (`/diario_boe/xml.php`) que el robots.txt del sitio bloquea para rastreadores de busqueda; la licencia Ley 37/2007 autoriza la reutilizacion comercial, pero por eso esta opcion queda desactivada por defecto (ver README). / OFF by default: adds the document's full text to each item.

## Actor input object example

```json
{
  "keywords": [
    "universidad",
    "subvención"
  ],
  "secciones": [],
  "identificadores": [],
  "diasHaciaAtras": 7,
  "soloNuevos": true,
  "incluirTextoCompleto": false
}
```

# Actor output Schema

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

Documentos del BOE nuevos que coinciden con la vigilancia configurada. JSON, CSV o Excel.

# 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 = {
    "keywords": [
        "universidad",
        "subvención"
    ],
    "diasHaciaAtras": 7,
    "soloNuevos": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("xamto1987/spain-boe-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 = {
    "keywords": [
        "universidad",
        "subvención",
    ],
    "diasHaciaAtras": 7,
    "soloNuevos": False,
}

# Run the Actor and wait for it to finish
run = client.actor("xamto1987/spain-boe-monitor").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 '{
  "keywords": [
    "universidad",
    "subvención"
  ],
  "diasHaciaAtras": 7,
  "soloNuevos": false
}' |
apify call xamto1987/spain-boe-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,xamto1987/spain-boe-monitor"
        }
    }
}

```

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/bv2Fs9foAKJ4NaE0g/builds/3LqGzBwqcrSJjl6Ux/openapi.json
