# Resoluciones DGSJFP y dictámenes del Consejo de Estado (`opendata-cr/doctrina-administrativa-espana`) Actor

Resoluciones de la DGSJFP sobre la calificación registral (Propiedad, Mercantil y Bienes Muebles), dictámenes del Consejo de Estado y resoluciones de Pleno del TACRC, con texto completo. Filtre por palabras, fechas o registro y reciba solo las novedades. Para notarías, registros y despachos.

- **URL**: https://apify.com/opendata-cr/doctrina-administrativa-espana.md
- **Developed by:** [Tornwar](https://apify.com/opendata-cr) (community)
- **Categories:** Business, Automation, News
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 documento con textos

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

## Doctrina administrativa de España: DGSJFP, Consejo de Estado y TACRC / Spanish administrative doctrine

Busque y monitorice doctrina administrativa española en JSON: **resoluciones de la Dirección General de Seguridad Jurídica y Fe Pública (DGSJFP)** sobre recursos contra la calificación de registradores, **dictámenes del Consejo de Estado** y **resoluciones de Pleno del Tribunal Administrativo Central de Recursos Contractuales (TACRC)**. Cada documento llega con texto completo, metadatos estructurados y enlace a la fuente oficial.

Search and monitor Spanish administrative doctrine: DGSJFP (land and commercial registry appeals), Council of State opinions and TACRC plenary decisions, with full text and structured metadata. English below.

> **Aviso.** Herramienta independiente, sin carácter oficial. No está afiliada, patrocinada ni avalada por el BOE, el Consejo de Estado, el Ministerio de Hacienda ni la DGSJFP. Solo el texto publicado en el diario oficial es auténtico: verifique la fuente antes de citar. Basado en datos de la Agencia Estatal Boletín Oficial del Estado y del Ministerio de Hacienda.

***

### Español

#### Para quién es

- Registradores, notarios, abogados y asesorías que siguen la doctrina de la DGSJFP sobre calificación registral.
- Despachos de derecho administrativo y contratación pública que necesitan dictámenes del Consejo de Estado o la doctrina de Pleno del TACRC.
- Editoriales jurídicas, universidades y equipos de tecnología legal que arman colecciones con texto limpio y metadatos.
- Alertas: «avíseme cuando se publique una resolución sobre concurso de acreedores y Registro de la Propiedad».

#### Fuentes

| Fuente | Qué contiene | De dónde sale | Cobertura |
|---|---|---|---|
| `dgsjfp` | Resoluciones de la DGSJFP (antes DGRN) en recursos contra la nota de calificación; opcionalmente instrucciones y otras resoluciones de la sección III | API de datos abiertos del BOE (sumario diario) y texto del BOE | Desde 1995 (API del BOE); las anteriores a 2020 llevan el nombre DGRN y requieren `includeDgrn` |
| `consejoEstado` | Dictámenes del Consejo de Estado con texto completo, procedencia y fecha de aprobación | Base «Dictámenes del Consejo de Estado» alojada en BOE.es | Los que el BOE ha incorporado a su base (la incorporación va con retraso respecto a la aprobación) |
| `tacrcPleno` | Resoluciones de Pleno del TACRC con texto completo | Página «Resoluciones de Pleno» del Ministerio de Hacienda (PDF) | Las resoluciones de Pleno publicadas (unas 20) |

**Qué no cubre.** Este Actor **no incluye el buscador general del TACRC**: ese buscador exige superar una verificación anti-robots (captcha) y el Actor no la elude. Solo ofrece las resoluciones de Pleno, que el Tribunal publica en una lista abierta. Tampoco consulta el sitio consejo-estado.es (bloquea el acceso automatizado): los dictámenes se leen de la base alojada en BOE.es.

#### Qué devuelve

Cada documento lleva, según la fuente:

| Campo | Descripción |
|---|---|
| `id` | Identificador estable: `BOE-A-2026-21071`, `CE-D-2026-649`, `TACRC-PLENO-1106-2026` |
| `fuente`, `organismo`, `tipoDocumento` | Origen y tipo de documento |
| `titulo` | Título de la resolución o asunto del dictamen |
| `fecha` | Fecha de la resolución (DGSJFP, TACRC) o de aprobación (Consejo de Estado) |
| `fechaPublicacion`, `boeNumero`, `paginaInicial`, `paginaFinal` | Publicación en el BOE (DGSJFP) |
| `registro` | DGSJFP: `propiedad`, `mercantil` o `bienesMuebles`, según el título |
| `expediente`, `procedencia`, `tipoAsunto`, `organoDictaminador`, `conclusion` | Consejo de Estado |
| `numeroResolucion`, `numeroRecurso`, `tema` | TACRC |
| `resultado` | Sentido de la decisión detectado en el texto (`estimado`, `desestimado`, `estimado parcialmente`, `inadmitido`), cuando se identifica |
| `normasCitadas` | Normas citadas en el texto (Ley, Real Decreto, Orden…) |
| `texto`, `textoCaracteres` | Texto completo (si «Incluir texto completo» está activo) |
| `url`, `urlPdf` | Enlaces a la fuente oficial |
| `nivelDetalle` | `texto` o `metadatos` |
| `palabrasClaveEncontradas` | Palabras clave que coincidieron |
| `fuenteDatos`, `aviso` | Atribución y aviso de uso |

El resumen de la ejecución (registro `OUTPUT` del almacén de clave-valor) indica documentos entregados, páginas consultadas, errores por fuente y si la ejecución se detuvo por el máximo a cobrar.

#### Filtros

| Campo | Qué hace |
|---|---|
| `sources` | `dgsjfp`, `consejoEstado`, `tacrcPleno`. Si se deja vacío: DGSJFP y Consejo de Estado |
| `keywords`, `keywordMode` | Palabras o frases completas, sin distinguir mayúsculas ni tildes. `any`: basta una; `all`: todas. Se buscan en el texto completo |
| `dateFrom`, `dateTo`, `recentDays` | Rango de fechas inclusive. Sin fechas, se usan los últimos `recentDays` días (30). En TACRC, sin fechas se consideran todas las resoluciones de Pleno |
| `registros` | Solo DGSJFP: `propiedad`, `mercantil`, `bienesMuebles` |
| `onlyRecursos` | Solo DGSJFP: solo resoluciones de recursos (por defecto) o también instrucciones y circulares |
| `includeDgrn` | Solo DGSJFP: incluye las resoluciones firmadas bajo el nombre anterior (Dirección General de los Registros y del Notariado) |
| `procedencias` | Solo Consejo de Estado: texto que debe contener la procedencia, por ejemplo `HACIENDA` |
| `expedientes` | Solo Consejo de Estado: expedientes concretos, como `649/2026` |
| `includeText` | Con `false` se entregan solo metadatos (más barato) |
| `maxResults` | Máximo de documentos por ejecución (50 por defecto, hasta 5,000). Salen de los más recientes a los más antiguos |
| `maxPagesToScan` | Tope de peticiones a las fuentes (2,500 por defecto) |

Notas de uso:

- Con `includeText: false`, las palabras clave solo se buscan en el título y la procedencia, y no se calculan `resultado`, `normasCitadas` ni `conclusion`.
- Un año completo del Consejo de Estado requiere unas 1,000 a 2,000 peticiones (se lee expediente por expediente). Para consultas amplias, aumente `maxPagesToScan`.
- Un día de BOE cuenta como una petición; la DGSJFP publica varias resoluciones por semana, de modo que 30 días suelen dar de decenas a un centenar de resoluciones.

#### Modo monitor

Con `mode: "monitor"` y un `monitorName`, cada ejecución devuelve solo lo que no se había entregado antes con ese nombre. La primera ejecución usa la ventana `recentDays` (o sus fechas) y deja memorizado el resto; programe el Actor a diario o semanalmente. Use un `monitorName` distinto para cada vigilancia con filtros distintos. En el Consejo de Estado, el monitor detecta también dictámenes antiguos que el BOE incorpora más tarde.

#### Precio (pago por evento)

| Evento | Precio | Se cobra por |
|---|---|---|
| `actor-start` (Inicio) | US$0.10 | Una vez por ejecución, cuando una fuente oficial responde |
| `documento-texto` (Documento con texto) | US$0.012 | Cada documento entregado con texto completo |
| `documento-metadatos` (Documento solo con metadatos) | US$0.004 | Cada documento entregado sin texto |

Ejemplos:

| Ejecución | Cálculo | Total |
|---|---|---|
| 10 resoluciones DGSJFP con texto | 0.10 + 10 × 0.012 | US$0.22 |
| 100 dictámenes con texto | 0.10 + 100 × 0.012 | US$1.30 |
| 100 documentos solo con metadatos | 0.10 + 100 × 0.004 | US$0.50 |
| Monitor diario sin novedades | solo el inicio | US$0.10 |

El inicio se cobra aunque no haya resultados. Los documentos se cobran solo cuando se escriben en el dataset. Puede fijar un máximo a cobrar por ejecución: el Actor se detiene al alcanzarlo, conserva lo ya entregado y lo indica en el mensaje de estado.

#### Ejemplo

```json
{
    "sources": ["dgsjfp"],
    "keywords": ["concurso de acreedores"],
    "registros": ["propiedad"],
    "recentDays": 60,
    "maxResults": 10
}
```

#### Condiciones de reutilización y datos personales

- **BOE** (resoluciones de la DGSJFP y dictámenes del Consejo de Estado): reutilización permitida con fines comerciales y no comerciales, con cita de la fuente («Basado en datos de la Agencia Estatal Boletín Oficial del Estado») y sin sugerir carácter oficial ni patrocinio. Condiciones: <https://www.boe.es/informacion/aviso_legal/index.php>.
- **TACRC**: reutilización permitida con cita («Origen de los datos: Ministerio de Hacienda»). Condiciones: <https://www.hacienda.gob.es/es-es/Paginas/avisolegal.aspx>.
- El Actor consulta solo la API de datos abiertos y las páginas públicas de documentos, respeta el `robots.txt` del BOE (incluidas las exclusiones de documentos concretos) y no usa los buscadores que el BOE excluye para robots.
- Los textos pueden contener datos personales (nombres de registradores, iniciales de recurrentes, razones sociales). Como reutilizador, usted es responsable de tratarlos conforme al RGPD y a la LOPDGDD.

***

### English

#### What it does

Three Spanish sources in one Actor, with the same output shape:

- **DGSJFP** (Dirección General de Seguridad Jurídica y Fe Pública): appeal resolutions on registrars' refusals to register, published in the BOE (Spain's official gazette). Discovered through the BOE open-data API.
- **Consejo de Estado** (Council of State): advisory opinions (dictámenes) from the database hosted at BOE.es.
- **TACRC** (Central Administrative Court for Contract Appeals): plenary decisions published by the Ministry of Finance.

Filter by keywords (accent- and case-insensitive), dates, registry type (property, commercial, movable assets), origin of the consultation and file number. Monitor mode returns only new documents since the previous run with the same monitor name.

#### What it does not do

- It does **not** include the TACRC general search: that search sits behind a captcha, which this Actor does not bypass. Only plenary decisions are covered.
- It does not read consejo-estado.es (it blocks automated access); opinions come from the BOE-hosted database, which is added to with a delay after approval.

#### Pricing (pay per event)

| Event | Price |
|---|---|
| Start (once per run) | US$0.10 |
| Document with full text | US$0.012 |
| Document, metadata only | US$0.004 |

You can set a maximum charge per run; the Actor stops cleanly when it is reached and keeps what was delivered.

#### Legal

Based on data from the Agencia Estatal Boletín Oficial del Estado and the Ministerio de Hacienda, reused under their published reuse conditions (attribution required, no implication of official status). This is an independent tool, not official; only the text published in the official gazette is authentic. Documents may contain personal data: handle them in line with the GDPR.

# Actor input Schema

## `sources` (type: `array`):

Qué doctrina consultar. DGSJFP: resoluciones sobre recursos contra la calificación de registradores, publicadas en el BOE. Consejo de Estado: dictámenes de la base del BOE. TACRC (Pleno): resoluciones de Pleno del Tribunal Administrativo Central de Recursos Contractuales. Si se deja vacío: DGSJFP y Consejo de Estado.

## `mode` (type: `string`):

«search» devuelve lo que coincide con los filtros. «monitor» devuelve solo los documentos nuevos desde la ejecución anterior con el mismo nombre de monitor. Search returns matches; monitor returns only new documents since the previous run.

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

Palabras o frases completas, sin distinguir mayúsculas ni tildes. Se buscan en el título y en el texto completo (en el título y la procedencia si desactiva «Incluir texto»). Words or phrases, case- and accent-insensitive.

## `keywordMode` (type: `string`):

«any»: basta una palabra clave. «all»: deben aparecer todas. Any keyword or all keywords.

## `dateFrom` (type: `string`):

Fecha inicial, inclusive (AAAA-MM-DD). DGSJFP: fecha de publicación en el BOE. Consejo de Estado: fecha de aprobación. TACRC: fecha de la resolución. Start date, inclusive.

## `dateTo` (type: `string`):

Fecha final, inclusive. Si está vacía, hoy (hora de Madrid). End date, inclusive.

## `recentDays` (type: `integer`):

Se usa cuando no hay fechas: se consultan los últimos N días (en monitor, la ventana de la primera ejecución). Used when no dates are given.

## `includeText` (type: `boolean`):

Con texto completo se cobra el evento «Documento con texto». Sin texto se devuelven solo los metadatos y se cobra «Documento solo con metadatos». Full text is billed as a text document; metadata only is billed at the lower rate.

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

Máximo de documentos que se entregan (y se cobran) por ejecución. Los resultados salen de los más recientes a los más antiguos. Maximum documents delivered per run.

## `onlyRecursos` (type: `boolean`):

Solo las resoluciones «en el recurso interpuesto contra la calificación…». Desactívelo para incluir también instrucciones, circulares y otras resoluciones de la DGSJFP en la sección III del BOE. Only appeal resolutions.

## `registros` (type: `array`):

Filtra por el registro cuya calificación se recurre, según el título de la resolución. Si se deja vacío: todos. Filter by registry type.

## `includeDgrn` (type: `boolean`):

Incluye las resoluciones de la Dirección General de los Registros y del Notariado, nombre anterior de la DGSJFP (hasta 2020). Includes the former name of the body.

## `procedencias` (type: `array`):

Texto que debe contener la procedencia de la consulta (ministerio o comunidad autónoma), por ejemplo «HACIENDA» o «CATALUÑA». Cualquiera de los textos basta. Origin of the consultation.

## `expedientes` (type: `array`):

Números de expediente con el formato «649/2026». Si se indican, se ignoran las fechas y solo se consultan esos expedientes. Specific file numbers; dates are ignored.

## `maxPagesToScan` (type: `integer`):

Tope de peticiones a las fuentes por ejecución (un día de BOE, un documento o un expediente cuentan 1). Un año completo de dictámenes del Consejo de Estado requiere unas 1,000 a 2,000. Cap on source requests per run.

## `monitorName` (type: `string`):

Solo en modo monitor. El estado (documentos ya entregados) se guarda con este nombre: use nombres distintos para vigilancias con filtros distintos. Only in monitor mode.

## `proxyConfiguration` (type: `object`):

Opcional. Las fuentes oficiales responden sin proxy desde Apify; actívelo solo si su ejecución es bloqueada. Optional: official sources respond without a proxy.

## Actor input object example

```json
{
  "sources": [
    "dgsjfp",
    "consejoEstado"
  ],
  "mode": "search",
  "keywords": [
    "concurso de acreedores"
  ],
  "keywordMode": "any",
  "recentDays": 30,
  "includeText": true,
  "maxResults": 10,
  "onlyRecursos": true,
  "includeDgrn": false,
  "maxPagesToScan": 2500,
  "monitorName": "doctrina-es-monitor",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "keywords": [
        "concurso de acreedores"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("opendata-cr/doctrina-administrativa-espana").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": ["concurso de acreedores"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("opendata-cr/doctrina-administrativa-espana").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": [
    "concurso de acreedores"
  ],
  "maxResults": 10
}' |
apify call opendata-cr/doctrina-administrativa-espana --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,opendata-cr/doctrina-administrativa-espana"
        }
    }
}
```

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/jNYnDK2RIskPqvtKB/builds/wvmzriDUqH7FaY1oT/openapi.json
