# Spanish Company Register Events (BORME) (`viperthruster/borme-company-events`) Actor

New companies, capital changes, address and name changes, dissolutions and closures from Spain's official Commercial Register gazette (BORME), structured per company. Names of people are never returned.

- **URL**: https://apify.com/viperthruster/borme-company-events.md
- **Developed by:** [David Rincon](https://apify.com/viperthruster) (community)
- **Categories:** Business, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 company announcements

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

## Spanish Company Register Events (BORME)

Get the companies registered, changed and closed in Spain, every working day, from the official Commercial Register gazette (BORME), as clean structured data. Each row has the company, its legal form, the province, the registered events and, when the announcement states them, its capital, registered address and corporate purpose.

- **New companies and changes in one feed:** constitutions, capital increases and reductions, address, name and purpose changes, mergers, dissolutions, closures and insolvency proceedings.
- **Structured per company:** one row per announcement, with the events as a list you can filter, and capital as a number in euros.
- **Companies only, no personal data:** names of directors, shareholders, attorneys and liquidators are never returned. Officer changes appear only as event types, and sole traders are left out.
- **Monitor mode:** schedule it daily with `latest` and get only the new announcements.

### Output example

```json
{
  "entryId": "BORME-A-2026-189-28/500001",
  "companyName": "ACME DEMO SOCIEDAD LIMITADA",
  "legalForm": "SL",
  "province": "MADRID",
  "publicationDate": "2026-09-30",
  "registrationDate": "2026-09-22",
  "actTypes": ["constitution", "sole_shareholder", "appointments"],
  "capitalEur": 3000.0,
  "registeredAddress": "C/ EJEMPLO 1 28001 (MADRID)",
  "corporatePurpose": "Desarrollo de programas informáticos, CNAE 6201",
  "newCompanyName": null,
  "documentId": "BORME-A-2026-189-28",
  "sourceUrl": "https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-189-28",
  "pdfUrl": "https://www.boe.es/borme/dias/2026/09/30/pdfs/BORME-A-2026-189-28.pdf",
  "attribution": "Basado en datos de la Agencia Estatal Boletín Oficial del Estado (https://www.boe.es)"
}
```

The company above is a made-up example. Use `entryId` to deduplicate across runs.

### Use cases

- **Sales prospecting:** new companies in your province and sector the day they are registered.
- **Know-your-business and credit risk:** spot dissolutions, closures, insolvency proceedings and capital reductions in your customer or supplier list.
- **Market research:** count constitutions and closures by province and month.
- **AI agents:** look up what happened to a Spanish company in the official gazette, with a link to the source.

### Cost

You pay per company announcement returned: US$0.004 each, so **1,000 announcements = US$4.00**, plus US$0.00005 per run start. A run with the default 50 results costs about US$0.20.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `dates` | array of strings | required | Publication dates as `YYYY-MM-DD`, or `latest`; up to 31. Days without a BORME (weekends, holidays) are skipped. |
| `provinces` | array of strings | all | Provinces as printed in the BORME, for example `MADRID` or `MÁLAGA`; accents and case do not matter. |
| `actTypes` | array | all | Only companies with at least one of these events, for example `constitution`, `dissolution` or `insolvency`. |
| `maxItems` | integer | 50 | Stop after this many results, up to 10000. A busy day has about 2,000 announcements across Spain. |
| `monitorMode` | boolean | false | Return only announcements not returned by a previous run with this option on. |

### Event types

`constitution`, `capital_increase`, `capital_reduction`, `address_change`, `purpose_change`, `name_change`, `bylaws_change`, `dissolution`, `extinction`, `merger`, `split`, `transformation`, `sole_shareholder`, `sole_shareholder_lost`, `insolvency`, `appointments`, `reappointments`, `dismissals`, `revocations` and `other`.

`appointments`, `reappointments`, `dismissals` and `revocations` tell you that the company changed its officers or attorneys, never who they are.

### FAQ

**Where does the data come from?** From the BORME, section A ("actos inscritos"), through the official open data API of Spain's Agencia Estatal Boletín Oficial del Estado and the HTML version of each province's daily document. Every row links to the official page and PDF.

**Why are some announcements missing?** The Actor skips any document that the BOE excludes in its robots.txt (usually withdrawn for data protection reasons) and announcements of sole traders, which identify a person. The run summary counts both.

**Can I get the names of directors or shareholders?** No. Those are personal data, and this Actor is built not to return them.

**How fresh is it?** The BORME is published every working day in the morning, Spanish time. With `latest` you get the most recent one.

**Can AI agents use it?** Yes. Input is a plain list of dates, limits are stated in the input descriptions, and a default run takes a few seconds.

### Legal

The data comes from the BORME and is reused under the reuse terms of the Agencia Estatal Boletín Oficial del Estado, which allow commercial reuse with attribution. Each row carries the required citation: "Basado en datos de la Agencia Estatal Boletín Oficial del Estado". This Actor is not affiliated with or endorsed by the BOE, and only the official BORME publication is authentic. Personal data in the source is discarded and never stored in the output.

### Related Actors

- [Tax ID & VAT Number Validator (65 countries)](https://apify.com/viperthruster/global-tax-id-validator): check Spanish and other EU VAT numbers, and business tax IDs from 65 countries, in bulk and offline.
- [Spain Official Gazette Daily Summary (BOE)](https://apify.com/viperthruster/boe-daily-summary): daily laws, grants, public jobs and tenders from Spain's BOE, filtered by section, ministry and keyword.

### En español

Empresas constituidas, ampliaciones y reducciones de capital, cambios de domicilio, denominación u objeto, disoluciones, extinciones y concursos publicados en el BORME (sección A), estructurados por empresa y provincia. Nunca devuelve nombres de administradores, socios ni apoderados. Datos de la Agencia Estatal BOE reutilizados conforme a sus condiciones.

### Changelog

- 0.1: first version.

# Actor input Schema

## `dates` (type: `array`):

BORME publication dates as YYYY-MM-DD, or latest for the most recent one; up to 31. The BORME is published on working days; dates without one are skipped.

## `provinces` (type: `array`):

Spanish provinces as printed in the BORME, for example MADRID, BARCELONA, VALENCIA, MÁLAGA or BIZKAIA; up to 60. Accents and case do not matter. Leave empty for all provinces.

## `actTypes` (type: `array`):

Return only companies with at least one of these events. Leave empty for all. Officer appointments and removals are reported as event types only: the names of people are never returned.

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

Stop after this many companies in total, up to 10000. A busy day has about 2,000 announcements across Spain.

## `monitorMode` (type: `boolean`):

Return only announcements not returned by a previous run with this option on. Useful for a daily schedule with dates set to latest.

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

Not needed: the BOE open data API is public. Leave empty to connect directly.

## Actor input object example

```json
{
  "dates": [
    "latest"
  ],
  "provinces": [],
  "actTypes": [],
  "maxItems": 50,
  "monitorMode": false
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "dates": [
        "latest"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("viperthruster/borme-company-events").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 = { "dates": ["latest"] }

# Run the Actor and wait for it to finish
run = client.actor("viperthruster/borme-company-events").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 '{
  "dates": [
    "latest"
  ]
}' |
apify call viperthruster/borme-company-events --silent --output-dataset

```

## MCP server setup

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

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/sEQKjVbyLNrtMdfmU/builds/itNlfqArXTEJHebFO/openapi.json
