# Hacienda (`legaltech/hacienda`) Actor

Actor de Apify que automatiza la búsqueda en la Doctrina Histórica del TEAC y en el buscador DYCTEA (TEAC + TEAR) del Ministerio de Hacienda. Extrae resoluciones y criterios administrativos tributarios con soporte de extracción de texto de HTML y PDF.

- **URL**: https://apify.com/legaltech/hacienda.md
- **Developed by:** [Miguel González](https://apify.com/legaltech) (community)
- **Categories:** Automation
- **Features:** Limited permissions
- **Stats:** 66 total users, 18 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Hacienda — Doctrina Administrativa y Consultas DGT

Actor de Apify que automatiza la búsqueda en tres fuentes de doctrina administrativa tributaria del Ministerio de Hacienda:

- **DYCTEA** — criterios vinculantes y no vinculantes del TEAC y los TEAR autonómicos en `serviciostelematicosext.hacienda.gob.es/TEAC/DYCTEA/`. Cubre el TEAC central y todos los Tribunales Económico-Administrativos Regionales.
- **DGT** — Consultas Vinculantes de la Dirección General de Tributos en `petete.tributos.hacienda.gob.es/consultas`. Únicamente consultas vinculantes (V-XXXX-YY).
- **TEAC Histórica** — buscador clásico en `serviciostelematicosext.hacienda.gob.es/TEAC/DoctrinaHistoricaTEAC/`. Contiene resoluciones históricas clasificadas por concepto tributario y Vocalía.

> ⚠️ **TEAC Histórica no disponible actualmente.** El portal `serviciostelematicosext.hacienda.gob.es/TEAC/DoctrinaHistoricaTEAC/resumen.asp` está deshabilitado. Usa `source: "DYCTEA_DGT"` (valor por defecto) para búsquedas fiables. Evita `"TEAC_HISTORICA"` y `"AMBOS"` hasta que el portal esté operativo.

### Características

- Búsqueda por texto libre, rango de fechas y número de reclamación en todas las fuentes activas desde una sola ejecución.
- Filtros específicos por concepto tributario y Vocalía para TEAC Histórica (cuando esté disponible).
- Filtros por unidad resolutoria, tipo de criterio y norma jurídica para DYCTEA.
- Filtros por número de consulta, normativa, cuestión planteada y descripción de hechos para DGT.
- Extracción de texto íntegro bajo demanda: detecta HTML y PDF, sigue los enlaces a PDF embebidos.
- Estrategia HTTP-first con fallback a Playwright en cada fuente.

### Entrada (Input)

#### Campo principal

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `source` | `string` | Sistema(s) en los que buscar. Ver valores más abajo. **Por defecto `"DYCTEA_DGT"`**. |

##### Valores de `source`

| Valor | Fuentes activas | Notas |
|-------|-----------------|-------|
| `"DYCTEA_DGT"` | DYCTEA + DGT | **Recomendado. Valor por defecto.** |
| `"DYCTEA"` | Solo DYCTEA | TEAC + TEAR autonómicos |
| `"DGT"` | Solo DGT | Solo consultas vinculantes DGT |
| `"AMBOS"` | TEAC Histórica + DYCTEA + DGT | ⚠️ Incluye TEAC Histórica (actualmente no disponible) |
| `"TEAC_HISTORICA"` | Solo TEAC Histórica | ⚠️ Portal actualmente no disponible |

#### Campos comunes

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `searchText` | `string` | Texto libre. En DYCTEA se usa como parámetro `p`; en DGT como `FreeText`; en TEAC Histórica como `Texto1`. |
| `fechaInicio` | `string` | Fecha de inicio en formato `DD/MM/YYYY`. En DGT filtra por "Fecha salida desde". |
| `fechaFin` | `string` | Fecha de fin en formato `DD/MM/YYYY`. Solo aplica a TEAC Histórica y DYCTEA. |
| `numRecla` | `string` | Número de reclamación (p. ej. `"4976"`). Aplica a TEAC Histórica y DYCTEA. |
| `anoRecla` | `string` | Año de la reclamación (p. ej. `"2023"`). Aplica a TEAC Histórica y DYCTEA. |
| `fetchDetails` | `boolean` | Si `true`, accede al detalle de cada resultado para obtener el texto íntegro (HTML o PDF). Por defecto `false`. |

#### Campos exclusivos de TEAC Histórica

> ⚠️ Portal actualmente no disponible. Estos campos se ignoran con `"DYCTEA_DGT"` y `"DYCTEA"`.

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `nivel1` | `string` | Concepto nivel 1. `"XX"` = todos. Ver tabla de conceptos. |
| `nivel2` | `string` | Concepto nivel 2. `"XX"` = todos. |
| `nivel3` | `string` | Concepto nivel 3. `"XX"` = todos. |
| `sede` | `string` | Código de sede. `"00"` = todas. |
| `uniResol` | `string` | Código de Vocalía. `"XX"` = todas. |

#### Campos exclusivos de DYCTEA

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `dycteaUnidad` | `string` | Código de unidad resolutoria. Vacío = todas. Ver tabla de unidades. |
| `dycteaCriterio` | `string` | Tipo de criterio: `"0"` = Vinculantes, `"1"` = No vinculantes, `"2"` = Todos (por defecto). |
| `dycteaNorma` | `string` | Código de norma jurídica (p. ej. `"08:02:00:00:00"` para el Código Civil). |
| `dycteaSede` | `string` | Código de sede de la reclamación. Vacío = no filtrar. |
| `dycteaConcepto1` | `string` | Código de concepto nivel 1. Vacío = todos. |
| `dycteaConcepto2` | `string` | Código de concepto nivel 2. Vacío = todos. |
| `dycteaConcepto3` | `string` | Código de concepto nivel 3. Vacío = todos. |
| `dycteaMaxPages` | `integer` | Máximo de páginas de resultados (10 criterios/página). Por defecto `5`, máximo `100`. |

#### Campos exclusivos de DGT

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `dgtNumConsulta` | `string` | Número de consulta DGT (p. ej. `"V0001-24"` o `"0237-05"`). Vacío = no filtrar. |
| `dgtNormativa` | `string` | Palabras clave de normativa. Vacío = no filtrar. |
| `dgtCuestionPlanteada` | `string` | Palabras clave en la cuestión planteada. Vacío = no filtrar. |
| `dgtDescripcionHechos` | `string` | Palabras clave en la descripción de hechos. Vacío = no filtrar. |
| `dgtCriterioInteres` | `boolean` | Solo consultas marcadas como criterio de interés (a partir de 01/01/2022). Por defecto `false`. |
| `dgtOrderBy` | `string` | Campo de ordenación: `"NUM-CONSULTA"` (por defecto), `"ORGANO"`, `"FECHA-SALIDA"`. |
| `dgtOrderDir` | `string` | Dirección: `"0"` = Ascendente (por defecto), `"1"` = Descendente. |
| `dgtMaxPages` | `integer` | Máximo de páginas de resultados (20 consultas/página). Por defecto `5`, máximo `200`. |

### Ejemplos de input

Buscar criterios sobre clases pasivas en DYCTEA (vinculantes únicamente):

```json
{
  "source": "DYCTEA",
  "searchText": "clases pasivas",
  "dycteaCriterio": "0",
  "dycteaMaxPages": 3
}
```

Buscar consultas DGT sobre IRPF con texto libre:

```json
{
  "source": "DGT",
  "searchText": "irpf",
  "dgtMaxPages": 5
}
```

Búsqueda combinada DYCTEA + DGT sobre IVA (recomendado):

```json
{
  "source": "DYCTEA_DGT",
  "searchText": "iva",
  "dycteaCriterio": "0",
  "dycteaUnidad": "00",
  "dycteaMaxPages": 3,
  "dgtMaxPages": 3
}
```

Buscar criterios vinculantes del TEAR de Madrid:

```json
{
  "source": "DYCTEA",
  "searchText": "IVA",
  "dycteaUnidad": "28",
  "dycteaCriterio": "0",
  "dycteaMaxPages": 3
}
```

Buscar una consulta DGT concreta por número:

```json
{
  "source": "DGT",
  "dgtNumConsulta": "V0001-24"
}
```

Búsqueda por rango de fechas en DYCTEA:

```json
{
  "source": "DYCTEA",
  "searchText": "regularización",
  "fechaInicio": "01/01/2023",
  "fechaFin": "31/12/2024",
  "dycteaUnidad": "00",
  "dycteaMaxPages": 2
}
```

### Salida (Output)

#### DYCTEA

```json
{
  "source": "DYCTEA",
  "criterioNum": 1,
  "numeroResolucion": "28/00123/2023/00/00",
  "fecha": "20/03/2024",
  "unidad": "TEAR de Madrid",
  "asunto": "IVA. Tipo impositivo reducido. Servicios de hostelería.",
  "criterioBrief": "El servicio de catering prestado en locales del cliente...",
  "descripcionBreve": "IVA. Tipo impositivo reducido. - El servicio de catering...",
  "detailUrl": "https://serviciostelematicosext.hacienda.gob.es/TEAC/DYCTEA/criterio.aspx?id=...",
  "textoCompleto": "TRIBUNAL ECONÓMICO-ADMINISTRATIVO REGIONAL DE MADRID\n..."
}
```

#### DGT (Consultas Vinculantes)

```json
{
  "source": "DGT",
  "numConsulta": "V0001-24",
  "descripcionHechos": "La entidad consultante es una asociación de instituciones de inversión colectiva...",
  "cuestionPlanteada": "Si los importes correspondientes a estos activos sobrevenidos quedan fuera...",
  "docId": 71136,
  "detailUrl": "https://petete.tributos.hacienda.gob.es/consultas/do/document?docId=71136&tab=2",
  "textoCompleto": "DIRECCIÓN GENERAL DE TRIBUTOS\n..."
}
```

#### TEAC Histórica (cuando esté disponible)

```json
{
  "source": "TEAC_HISTORICA",
  "numeroResolucion": "00/04976/2023/00/00",
  "fecha": "15/06/2024",
  "vocalia": "Vocalía 1ª",
  "unificacionCriterio": false,
  "asunto": "IRPF. Rendimientos del capital inmobiliario.",
  "criterio": "Los gastos de reparación y conservación del inmueble arrendado...",
  "referenciasNormativas": "Ley 35/2006, art. 23",
  "conceptos": ["IRPF", "Capital inmobiliario"],
  "textoCompleto": "TRIBUNAL ECONÓMICO-ADMINISTRATIVO CENTRAL\n..."
}
```

El campo `textoCompleto` solo se incluye cuando `fetchDetails: true`.

### Flujo recomendado en dos fases

**Fase 1 — Búsqueda rápida**: metadatos y resumen.

```json
{
  "source": "DYCTEA_DGT",
  "searchText": "operaciones vinculadas",
  "dycteaUnidad": "00",
  "dycteaMaxPages": 5,
  "dgtMaxPages": 5,
  "fetchDetails": false
}
```

**Fase 2 — Texto íntegro**: activa `fetchDetails` filtrando por la fuente concreta.

```json
{
  "source": "DYCTEA",
  "searchText": "operaciones vinculadas",
  "dycteaUnidad": "00",
  "fetchDetails": true
}
```

### Conceptos tributarios — TEAC Histórica (nivel 1)

> ⚠️ Solo relevante cuando TEAC Histórica esté disponible.

| Código | Concepto |
|--------|----------|
| `01` | Impuesto sobre la Renta de las Personas Físicas (IRPF) |
| `02` | Impuesto sobre Sociedades (IS) |
| `03` | Impuesto sobre el Valor Añadido (IVA) |
| `04` | Impuestos Patrimoniales (IP, ISD, ITP y AJD) |
| `05` | Tráfico Exterior (Aduanas e importaciones) |
| `06` | Impuestos Especiales (IIEE: hidrocarburos, alcohol, tabaco…) |
| `07` | Otros Tributos y Exacciones |
| `08` | Procedimientos de Gestión |
| `09` | Procedimiento Económico-Administrativo |
| `10` | Ley General Tributaria (LGT) |
| `11` | Clases Pasivas |
| `XX` | Todos los conceptos (por defecto) |

### Unidades resolutorias — DYCTEA

| Código | Unidad |
|--------|--------|
| `00` | TEAC — Tribunal Económico-Administrativo Central |
| `12` | TEAR Andalucía |
| `24` | TEAR Cataluña |
| `28` | TEAR Madrid |
| `32` | TEAR Comunidad Valenciana |
| `48` | TEAR País Vasco |
| (vacío) | Todas las unidades |

### Ecosistema legaltech — actores relacionados

| Actor | Fuente | Tipo de documentos |
|-------|--------|--------------------|
| `legaltech/hacienda` ← este actor | DYCTEA + DGT (+ TEAC Histórica cuando disponible) | Doctrina administrativa tributaria, criterios vinculantes, consultas DGT |
| `legaltech/aepd` | AEPD | Resoluciones y guías de protección de datos |
| `legaltech/cendoj` | CENDOJ (CGPJ) | Sentencias y autos del sistema judicial español |
| `legaltech/tribunal-constitucional` | Tribunal Constitucional | Sentencias del TC, recursos de amparo |
| `legaltech/tjue` | Tribunal de Justicia de la UE (CURIA) | Sentencias, autos y conclusiones del TJUE |

#### Guía de derivación

- Doctrina tributaria del TEAC/TEAR, criterios DYCTEA, IVA, IRPF, IS, procedimientos tributarios → `legaltech/hacienda` con `source: "DYCTEA"`
- Consultas vinculantes de la DGT (V-XXXX-YY) → `legaltech/hacienda` con `source: "DGT"`
- Ambas fuentes combinadas → `legaltech/hacienda` con `source: "DYCTEA_DGT"` (por defecto)
- Protección de datos, RGPD, LOPDGDD, sanciones de la AEPD → `legaltech/aepd`
- Jurisprudencia civil, penal, laboral, contencioso-administrativa española → `legaltech/cendoj`
- Derechos fundamentales, inconstitucionalidad, recursos de amparo → `legaltech/tribunal-constitucional`
- Derecho europeo, directivas, reglamentos UE, cuestiones prejudiciales → `legaltech/tjue`
- Intersección tributario + derecho europeo (e.g. IVA, ayudas de estado) → combinar `legaltech/hacienda` y `legaltech/tjue`

# Actor input Schema

## `source` (type: `string`):

Sistema(s) en los que buscar. AVISO: TEAC Histórica (serviciostelematicosext.hacienda.gob.es/TEAC/DoctrinaHistoricaTEAC) está actualmente deshabilitada/no disponible. Usa DYCTEA_DGT como opción por defecto para obtener resultados fiables.

## `searchText` (type: `string`):

Texto libre. En TEAC Histórica se envía como Texto1; en DYCTEA como parámetro 'p'.

## `fechaInicio` (type: `string`):

Fecha de inicio en formato DD/MM/YYYY. Aplica a ambas fuentes.

## `fechaFin` (type: `string`):

Fecha de fin en formato DD/MM/YYYY. Aplica a ambas fuentes.

## `numRecla` (type: `string`):

Número de la reclamación (p.ej. '4976'). Aplica a ambas fuentes.

## `anoRecla` (type: `string`):

Año de la reclamación (p.ej. '2023'). Aplica a ambas fuentes.

## `fetchDetails` (type: `boolean`):

Si se activa, se accede al detalle de cada resolución/criterio para obtener el texto íntegro. Aumenta el tiempo de ejecución.

## `nivel1` (type: `string`):

Código de concepto nivel 1. 'XX'=todos. Ej: '01'=IRPF, '02'=IS, '03'=IVA, '04'=Impuestos Patrimoniales, '05'=Tráfico Exterior, '06'=II.EE., '07'=Otros tributos, '08'=Procedimientos de Gestión, '09'=Procedimiento Económico-Administrativo, '10'=LGT, '11'=Clases Pasivas.

## `nivel2` (type: `string`):

Código de concepto nivel 2. 'XX'=todos.

## `nivel3` (type: `string`):

Código de concepto nivel 3. 'XX'=todos.

## `sede` (type: `string`):

Código de sede para TEAC Histórica. '00'=todas.

## `uniResol` (type: `string`):

Código de Vocalía para TEAC Histórica. 'XX'=todas.

## `dycteaUnidad` (type: `string`):

Código de unidad para DYCTEA. Vacío=todas. Ej: '00'=TEAC, '12'=TEAR Andalucía, '28'=TEAR Madrid, '24'=TEAR Cataluña, '32'=TEAR Valencia.

## `dycteaCriterio` (type: `string`):

Filtra por tipo de criterio en DYCTEA.

## `dycteaNorma` (type: `string`):

Código de norma jurídica para DYCTEA (p.ej. '08:02:00:00:00' para el Código Civil). Vacío=todas.

## `dycteaSede` (type: `string`):

Código de sede de la reclamación en DYCTEA (máx. 2 caracteres). Vacío=no filtrar.

## `dycteaConcepto1` (type: `string`):

Código de concepto nivel 1 para DYCTEA. Vacío=todos.

## `dycteaConcepto2` (type: `string`):

Código de concepto nivel 2 para DYCTEA. Vacío=todos.

## `dycteaConcepto3` (type: `string`):

Código de concepto nivel 3 para DYCTEA. Vacío=todos.

## `dycteaMaxPages` (type: `integer`):

Número máximo de páginas de resultados de DYCTEA a recuperar (10 criterios/página).

## `dycteaPlaywright` (type: `boolean`):

Si se activa, usa el navegador (Playwright) como alternativa cuando la búsqueda HTTP de DYCTEA no devuelve resultados o falla. Más lento pero puede recuperar resultados si la página requiere JavaScript. Por defecto desactivado.

## `dycteaSearchResoluciones` (type: `boolean`):

Si se activa (por defecto), el texto libre se busca tanto en criterios como en el cuerpo de las resoluciones (parámetro tr=1). Desactívalo para limitar la búsqueda solo al texto del criterio.

## `dgtNumConsulta` (type: `string`):

Número de consulta DGT (p.ej. 'V0001-24' o '0237-05'). Vacío = no filtrar.

## `dgtNormativa` (type: `string`):

Texto de normativa para filtrar. Vacío = no filtrar.

## `dgtCuestionPlanteada` (type: `string`):

Palabras clave en la cuestión planteada. Vacío = no filtrar.

## `dgtDescripcionHechos` (type: `string`):

Palabras clave en la descripción de hechos. Vacío = no filtrar.

## `dgtCriterioInteres` (type: `boolean`):

Si se activa, filtra únicamente consultas marcadas como criterio de interés (disponibles a partir de 01/01/2022).

## `dgtOrderBy` (type: `string`):

Campo de ordenación de los resultados DGT.

## `dgtOrderDir` (type: `string`):

Dirección de ordenación de los resultados DGT.

## `dgtMaxPages` (type: `integer`):

Número máximo de páginas de resultados DGT a recuperar (20 consultas/página).

## `dgtMaxResults` (type: `integer`):

Detiene la paginación DGT en cuanto se alcanzan este número de consultas. 0 = sin límite.

## `dycteaMaxResults` (type: `integer`):

Detiene la paginación DYCTEA en cuanto se alcanzan este número de criterios. 0 = sin límite.

## Actor input object example

```json
{
  "source": "DGT",
  "searchText": "",
  "fechaInicio": "",
  "fechaFin": "",
  "numRecla": "",
  "anoRecla": "",
  "fetchDetails": false,
  "nivel1": "XX",
  "nivel2": "XX",
  "nivel3": "XX",
  "sede": "00",
  "uniResol": "XX",
  "dycteaUnidad": "",
  "dycteaCriterio": "2",
  "dycteaNorma": "",
  "dycteaSede": "",
  "dycteaConcepto1": "",
  "dycteaConcepto2": "",
  "dycteaConcepto3": "",
  "dycteaMaxPages": 5,
  "dycteaPlaywright": false,
  "dycteaSearchResoluciones": true,
  "dgtNumConsulta": "",
  "dgtNormativa": "",
  "dgtCuestionPlanteada": "",
  "dgtDescripcionHechos": "",
  "dgtCriterioInteres": false,
  "dgtOrderBy": "NUM-CONSULTA",
  "dgtOrderDir": "0",
  "dgtMaxPages": 5,
  "dgtMaxResults": 0,
  "dycteaMaxResults": 0
}
```

# Actor output Schema

## `overview` (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 = {
    "searchText": "",
    "fechaInicio": "",
    "fechaFin": "",
    "numRecla": "",
    "anoRecla": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("legaltech/hacienda").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 = {
    "searchText": "",
    "fechaInicio": "",
    "fechaFin": "",
    "numRecla": "",
    "anoRecla": "",
}

# Run the Actor and wait for it to finish
run = client.actor("legaltech/hacienda").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 '{
  "searchText": "",
  "fechaInicio": "",
  "fechaFin": "",
  "numRecla": "",
  "anoRecla": ""
}' |
apify call legaltech/hacienda --silent --output-dataset

```

## MCP server setup

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

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/zxapEprSh6XDtOmT6/builds/dNhwGOLGGbuce44eB/openapi.json
