# Spain BORME Scraper — Company Registry Filings & Data (`xamto1987/spain-borme-companies`) Actor

Scrape Spanish company registry filings (BORME): incorporations with share capital, CNAE and address, director appointments and removals, insolvency proceedings — parsed field by field, one item per company. Actos societarios del BORME parseados campo a campo.

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

## Pricing

from $2.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 **Spanish company registry filings from the BORME (Boletín Oficial del
Registro Mercantil)** — the daily gazette of the Spanish Companies Register —
parsed field by field, one item per company. This **BORME scraper** returns
incorporations with share capital, business purpose, CNAE code and registered
address; director appointments and removals with the normalised role and its
holders; and insolvency proceedings with court, case and resolution date.

Extrae los **actos societarios inscritos en el Registro Mercantil** que publica
cada día el **BORME (Boletín Oficial del Registro Mercantil)** y los devuelve
**parseados campo a campo**, no como un bloque de texto: **empresas de nueva
creación** con su capital en euros, nombramientos y ceses con el cargo
normalizado, y concursos de acreedores con juzgado y procedimiento.

### Spain BORME Scraper: what it does · Qué hace este scraper del BORME

**Un ítem = una empresa en un boletín**, con la lista de todos sus actos de ese
día. El pivote es siempre la sociedad, nunca la persona. El BORME publica el
texto de cada asiento en prosa; este actor lo convierte en campos: el capital
es un número, el domicilio va troceado en vía, municipio y código postal, y el
cargo se normaliza a un identificador estable.

One item = one company in one gazette, with all of its filings for that day,
parsed into structured fields instead of a free-text blob. The pivot is always
the company, never the individual.

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

| Campo / Field | Qué es / What it is |
|---|---|
| `denominacion`, `formaJuridica` | Razón social y forma (`SL`, `SA`, `SLU`, `COOP`…) · Legal name and form |
| `numeroAsiento`, `identificadorBoletin` | Identificación oficial del asiento · Official entry ID |
| `provincia`, `registroMercantil` | Registro Mercantil que lo inscribe · Provincial registry |
| `fechaPublicacion`, `seccion`, `numeroBoletin` | Boletín de origen · Source gazette |
| `actos[]` | **Los actos ya parseados** (ver abajo) · Parsed filings |
| `tiposActo`, `familiasActo`, `numeroActos` | Clasificación del asiento · Filing classification |
| `esConstitucion`, `capitalSocial`, `capitalResultante` | Capital **como número**, no como texto · Share capital as a number |
| `objetoSocial`, `cnae`, `cnaeDescripcion` | Actividad, con CNAE cuando el registro lo publica · Business purpose and CNAE |
| `domicilio`, `municipio`, `codigoPostal` | Domicilio social **ya troceado** · Registered address, split |
| `fechaInicioOperaciones` | Comienzo de operaciones en ISO · Start of operations |
| `unipersonal`, `socioUnico` | Unipersonalidad y socio único · Sole-shareholder status |
| `cargosNombrados[]`, `cargosCesados[]` | `{cargo, cargoNormalizado, titulares[]}` · Appointments and removals |
| `concurso` | `{procedimiento, resolucion, fechaResolucion, firme, juzgado, administradoresConcursales[]}` · Insolvency |
| `datosRegistrales` | `{tomo, folio, seccion, hoja, inscripcion, fecha}` · Registry data |
| `textoOriginal` | El texto íntegro del asiento, como red de seguridad · Raw text |
| `urlHtml`, `urlXml`, `urlPdf` | Enlaces al boletín oficial · Official gazette links |

Cada elemento de `actos[]` lleva su `tipo` (fino), su `familia` (una de las 11
del filtro), sus campos propios, su `textoOriginal` y un booleano
`estructurado`.

#### BORME filing types recognised · Tipos de acto reconocidos

Constitución · Nombramientos · Reelecciones · Ceses/Dimisiones · Revocaciones ·
Declaración y pérdida de unipersonalidad · Cambio de identidad del socio único ·
Cambio de domicilio social · Cambio / ampliación / reducción de objeto social ·
Cambio de denominación social · Ampliación y reducción de capital · Desembolso
de dividendos pasivos · Emisión de obligaciones · Modificaciones estatutarias ·
Transformación · Fusión por absorción · Escisión · Cesión global de activo y
pasivo · Reactivación · Adaptación a la Ley · Disolución · Extinción · Situación
concursal · Administrador concursal · Revocación de administradores concursales ·
Cierre y reapertura de hoja registral · Justificación de no aprobación de
cuentas (art. 378.5 RRM) · Página web corporativa · Fe de erratas · Otros
conceptos · Depósitos de proyectos de fusión (sección B).

Los cargos se normalizan a un identificador estable (`Adm. Unico`, `ADM.UNICO`
y `Administrador único` → `administrador_unico`), porque cada registro
provincial abrevia a su manera.

### BORME scraper input and delta runs · Parámetros de entrada y modo incremental

| Campo / Field | Qué hace / Notes |
|---|---|
| `fechaDesde` / `fechaHasta` | Fechas ISO; vacío = último día publicado · ISO dates, empty = last published day |
| `provincias` | Nombres de los boletines provinciales · Provincial gazette names |
| `tiposActo` | Las 11 familias de acto · The 11 filing families |
| `keywords` | Solo sobre la denominación social · Company name only |
| `maxItems` | Tope de ítems · Hard cap |
| `soloNuevos` | Modo delta con estado en el key-value store · Delta mode |

```json
{
  "provincias": ["MADRID"],
  "maxItems": 20,
  "soloNuevos": false
}
```

Con `soloNuevos = true` el actor guarda en el key-value store los asientos ya
emitidos y la última fecha procesada; la siguiente ejecución continúa donde lo
dejó y no repite nada. Es el modo recomendado para una ejecución programada
diaria. With `soloNuevos = true` the actor resumes where it left off and never
repeats a filing — the recommended mode for a daily schedule.

### BORME output example: a real item from a real run · Ejemplo de output real

Ítem real del dataset, copiado tal cual de una ejecución con el input de arriba
(registro 7 de 20). Es una **constitución** con capital, objeto social y
domicilio, más el nombramiento de su administrador único. A real dataset item,
copied verbatim:

```json
{
  "id": "BORME-A-2026-161-28-387926",
  "numeroAsiento": "387926",
  "denominacion": "LA VIGIA DE MADRID SL",
  "formaJuridica": "SL",
  "enLiquidacion": false,
  "registroMercantil": "MADRID",
  "provincia": "MADRID",
  "fechaPublicacion": "2026-08-21",
  "seccion": "A",
  "numeroBoletin": "161",
  "identificadorBoletin": "BORME-A-2026-161-28",
  "epigrafe": null,
  "numeroActos": 2,
  "actosEstructurados": 2,
  "tiposActo": ["constitucion", "nombramientos"],
  "familiasActo": ["constitucion", "nombramientos"],
  "actos": [
    {
      "orden": 1,
      "tipo": "constitucion",
      "familia": "constitucion",
      "etiqueta": "Constitución",
      "textoOriginal": "Constitución. Comienzo de operaciones: 24.07.26. Objeto social: Hoteles y alojamientos similares. Alojamientos turísticos y otros alojamientos de corta estancia. Otros alojamientos. Restaurantes y puesto de comidas. Establecimientos de bebidas. Otros servicios de comidas. Alquiler de bienes inmobiliarios por cuenta propia. Domicilio: C/ FUENCARRAL 4 - 4º IZQUIERDA (MADRID). Capital: 3.250,00 Euros.",
      "capital": 3250,
      "fechaInicioOperaciones": "2026-07-24",
      "objetoSocial": "Hoteles y alojamientos similares. Alojamientos turísticos y otros alojamientos de corta estancia. Otros alojamientos. Restaurantes y puesto de comidas. Establecimientos de bebidas. Otros servicios de comidas. Alquiler de bienes inmobiliarios por cuenta propia",
      "domicilio": "C/ FUENCARRAL 4 - 4º IZQUIERDA",
      "municipio": "MADRID",
      "estructurado": true
    },
    {
      "orden": 2,
      "tipo": "nombramientos",
      "familia": "nombramientos",
      "etiqueta": "Nombramientos",
      "textoOriginal": "Nombramientos. Adm. Unico: HURTADO RODRIGUEZ ALLEN.",
      "cargos": [
        { "cargo": "Adm. Unico", "cargoNormalizado": "administrador_unico", "titulares": ["HURTADO RODRIGUEZ ALLEN"] }
      ],
      "estructurado": true
    }
  ],
  "esConstitucion": true,
  "fechaInicioOperaciones": "2026-07-24",
  "objetoSocial": "Hoteles y alojamientos similares. Alojamientos turísticos y otros alojamientos de corta estancia. Otros alojamientos. Restaurantes y puesto de comidas. Establecimientos de bebidas. Otros servicios de comidas. Alquiler de bienes inmobiliarios por cuenta propia",
  "cnae": null,
  "cnaeDescripcion": null,
  "capitalSocial": 3250,
  "capitalResultante": null,
  "capitalAmpliado": null,
  "capitalReducido": null,
  "moneda": "EUR",
  "domicilio": "C/ FUENCARRAL 4 - 4º IZQUIERDA",
  "municipio": "MADRID",
  "codigoPostal": null,
  "unipersonal": null,
  "socioUnico": null,
  "cargosNombrados": [
    { "cargo": "Adm. Unico", "cargoNormalizado": "administrador_unico", "titulares": ["HURTADO RODRIGUEZ ALLEN"] }
  ],
  "cargosCesados": [],
  "denominacionNueva": null,
  "concurso": null,
  "datosRegistrales": {
    "tomo": null,
    "folio": null,
    "seccion": "8",
    "hoja": "M 894546",
    "inscripcion": "1",
    "fecha": "2026-08-14",
    "texto": "S 8 , H M 894546, I/A 1 (14.08.26)"
  },
  "hojaRegistral": "M 894546",
  "textoOriginal": "Constitución. Comienzo de operaciones: 24.07.26. Objeto social: Hoteles y alojamientos similares. Alojamientos turísticos y otros alojamientos de corta estancia. Otros alojamientos. Restaurantes y puesto de comidas. Establecimientos de bebidas. Otros servicios de comidas. Alquiler de bienes inmobiliarios por cuenta propia. Domicilio: C/ FUENCARRAL 4 - 4º IZQUIERDA (MADRID). Capital: 3.250,00 Euros. Nombramientos. Adm. Unico: HURTADO RODRIGUEZ ALLEN. Datos registrales. S 8 , H M 894546, I/A 1 (14.08.26).",
  "urlXml": "https://www.boe.es/diario_borme/xml.php?id=BORME-A-2026-161-28",
  "urlHtml": "https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-161-28",
  "urlPdf": "https://www.boe.es/borme/dias/2026/08/21/pdfs/BORME-A-2026-161-28.pdf",
  "fuente": "BORME - Boletin Oficial del Registro Mercantil (AEBOE)",
  "aviso": "Datos publicos del BORME (Ley 37/2007). Este actor NUNCA publica el NIF/DNI de personas fisicas."
}
```

### BORME use cases: leads, credit risk, CRM · Casos de uso

#### Prospección comercial · Spain business leads

Las **empresas de nueva creación** de ayer en tu provincia y tu CNAE, con su
domicilio y su capital social — un lead cualificado antes de que la sociedad
tenga siquiera web.

#### Riesgo de crédito · Credit risk monitoring

Concursos de acreedores, disoluciones, extinciones y cierres de hoja registral
el mismo día que se publican, con juzgado y procedimiento.

#### Inteligencia competitiva · Competitive intelligence

Cambios de administrador, ampliaciones de capital y cambios de objeto social de
las sociedades de tu sector.

#### Enriquecimiento de CRM · CRM enrichment

Cruce por denominación social y hoja registral para completar tu base de
clientes o de leads con el dato registral oficial.

### BORME parsing quality, measured not promised · Calidad medida, no prometida

Al terminar, el actor deja en el key-value store un registro `RESUMEN` con:

- `ratioActosEstructurados`: actos clasificados y parseados / actos totales.
- `ratioActosConCamposPropios`: la medida **estricta**, que excluye los actos
  que en el propio BORME son texto libre (`Otros conceptos`).
- `desglosePorTipoActo` y `desglosePorFamilia`.
- `patronesSinReconocer`: los textos que no se pudieron estructurar. Si la
  fuente cambia, aparecen aquí.

Medición sobre el día completo 21-ago-2026 (1.804 empresas, 3.500 actos):
**ratio 0,999** y **0,916 en la medida estricta**. Sobre boletines de 2010,
2015 y 2020: **1,000** y **0,895**.

### BORME source, limits and coverage · Fuente y límites

- Índice: `https://www.boe.es/datosabiertos/api/borme/sumario/{AAAAMMDD}`.
- Contenido: `https://www.boe.es/diario_borme/xml.php?id={ID}` (XML íntegro,
  **sin OCR**).
- Publicación de lunes a viernes; ~30 boletines provinciales y ~2.000 asientos
  al día; histórico electrónico desde el **5 de enero de 2009**.
- El actor respeta **1 petición/segundo** con User-Agent identificado
  (`spain-borme-companies/0.1 (Apify actor)`). Un día completo son ~35
  peticiones.

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

| Actor | Qué extrae / What it scrapes |
|---|---|
| [spain-boe-monitor](https://apify.com/xamto1987/spain-boe-monitor) | BOE: monitor incremental por palabra clave, sección y NIF |
| [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) |

### Is it legal? BORME data protection and disclaimer · Protección de datos y aviso legal

Léelo antes de comprar. El BORME publica en claro nombres de administradores,
apoderados, socios únicos y, en los actos concursales, **el NIF de personas
físicas**. Este actor:

1. **Nunca** emite un campo de NIF/DNI/NIE de persona física, **ni con opción
   de activarlo**.
2. **Redacta** ese identificador también dentro de `textoOriginal`,
   sustituyéndolo por `[NIF-PERSONA-FISICA-OMITIDO]`. Los CIF de personas
   jurídicas se conservan: son dato mercantil.
3. **No permite pivotar por persona** ni buscar por nombre de persona: el
   dataset es siempre por sociedad. Un producto "todas las empresas de
   Fulanito" sería elaboración de perfiles.
4. Sí publica el **nombre y el cargo**: son el contenido del acto registral y
   su publicidad es la finalidad legal del BORME.

El `RESUMEN` incluye `identificadoresPersonaFisicaEnDataset`, que debe ser `0`
en toda ejecución.

**Data protection**: this actor never outputs a natural person's national ID
(and redacts it from the raw text), and never pivots by person — only by
company.

Fuente: BORME (Boletín Oficial del Registro Mercantil), API de datos abiertos
de la AEBOE, sin login. Licencia: **Ley 37/2007** de reutilización de la
información del sector público — **uso comercial autorizado** citando la fuente
y enlazando a `boe.es`. Commercial reuse authorised under Spanish Law 37/2007
with attribution. Este actor no es un producto oficial ni está afiliado,
respaldado ni verificado por la AEBOE.

### BORME scraper FAQ · Preguntas frecuentes

#### ¿Puedo sacar las empresas creadas ayer en mi provincia?

Sí: filtra por `provincias` y por el tipo de acto `constitucion`. Cada ítem
trae capital social, objeto social, CNAE cuando el registro lo publica y
domicilio ya troceado.

#### ¿Devuelve el NIF de las empresas? · Does it return company tax IDs?

El BORME no publica el CIF de la sociedad en el asiento; lo que sí devuelve es
la denominación social exacta y la hoja registral, que son las claves con las
que se cruza contra registros mercantiles y bases comerciales.

#### ¿Puedo buscar por el nombre de un administrador?

No. El dataset es siempre por sociedad y el actor no permite pivotar por
persona: sería elaboración de perfiles.

#### ¿Hasta dónde llega el histórico? · How far back does it go?

El histórico electrónico del BORME empieza el **5 de enero de 2009**. La
medición de calidad de parseo se hizo también sobre boletines de 2010, 2015 y
2020\.

#### ¿Qué pasa si el BORME cambia el formato de un asiento?

Aparece en `patronesSinReconocer` dentro del `RESUMEN`, y el campo
`textoOriginal` conserva siempre el asiento íntegro como red de seguridad.

#### ¿Puedo ejecutarlo a diario sin repetir empresas?

Sí: `soloNuevos: true` guarda los asientos ya emitidos y la última fecha
procesada.

#### ¿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. En consumo de recursos, un día completo del BORME son ~35 peticiones a
1 petición/segundo.

### Support and feedback · Soporte y sugerencias

¿Falta un tipo de acto, un campo o un filtro? ¿Necesitas una variante a medida?
Abre un *issue* desde la pestaña **Issues** de esta ficha.

Missing a filing type, a field or a filter? Open an issue from the **Issues**
tab of this Actor.

**Palabras clave / Keywords**: BORME scraper, Registro Mercantil scraper,
Spanish company registry data, empresas de nueva creación España, new companies
Spain API, nombramientos y ceses BORME, company directors Spain, concursos de
acreedores, Spain business leads, capital social empresas, BORME API JSON,
insolvency data Spain.

# Actor input Schema

## `fechaDesde` (type: `string`):

Primer dia de publicacion del BORME a procesar, en ISO `AAAA-MM-DD`. Si se dejan vacias las dos fechas, el actor procesa el ULTIMO dia publicado (el BORME sale de lunes a viernes). El historico electronico empieza el 2009-01-05. / First BORME publication day (ISO). Empty = last published day.

## `fechaHasta` (type: `string`):

Ultimo dia de publicacion a procesar, en ISO `AAAA-MM-DD`. Un dia completo de BORME son ~30 boletines provinciales y ~2.000 asientos: cuenta con ~35 peticiones por dia a 1 peticion/segundo. / Last publication day (ISO).

## `provincias` (type: `array`):

Nombres de los boletines provinciales a procesar, tal y como los titula el BORME (`ALICANTE/ALACANT`, `BARCELONA`, `ILLES BALEARS`, `MADRID`...). La comparacion ignora mayusculas y acentos y admite coincidencia parcial (`alicante` vale). Vacio = todas las provincias. / Provincial gazette names; empty = all.

## `tiposActo` (type: `array`):

Familias de acto societario. Se emite la empresa si alguno de sus actos pertenece a alguna de las familias pedidas (y el item conserva TODOS sus actos). Vacio = todos. `otros` agrupa reduccion de capital, cambio de denominacion, modificaciones estatutarias, fusiones, transformaciones, pagina web, fe de erratas y cierres/reaperturas de hoja. / Filing families; empty = all.

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

Filtro por DENOMINACION SOCIAL (no por persona). Se emite la empresa si su denominacion contiene alguno de los terminos, ignorando mayusculas y acentos. Vacio = sin filtro de texto. / Filters by company name only.

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

Numero maximo de EMPRESAS a guardar (un item = una empresa en un boletin, con todos sus actos). El actor para limpiamente al alcanzarlo. / Hard cap on dataset items (one item = one company).

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

Modo monitor. Guarda en el key-value store los asientos ya emitidos y la ultima fecha procesada, para que ejecuciones sucesivas no repitan nada y continuen donde lo dejaron. Recomendado para ejecuciones programadas diarias. / Delta mode: remembers emitted filings between runs.

## Actor input object example

```json
{
  "provincias": [
    "MADRID",
    "BARCELONA"
  ],
  "tiposActo": [],
  "keywords": [],
  "maxItems": 500,
  "soloNuevos": false
}
```

# Actor output Schema

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

Empresas del BORME con sus actos societarios estructurados. 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 = {
    "provincias": [
        "MADRID",
        "BARCELONA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("xamto1987/spain-borme-companies").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 = { "provincias": [
        "MADRID",
        "BARCELONA",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("xamto1987/spain-borme-companies").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 '{
  "provincias": [
    "MADRID",
    "BARCELONA"
  ]
}' |
apify call xamto1987/spain-borme-companies --silent --output-dataset

```

## MCP server setup

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

```

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/6rq8ytvIILdmhYzLC/builds/aPHdQSGpJ1cEtAXHT/openapi.json
