Spain Company Registry API — Officers, Insolvencies (BORME)
Pricing
from $1.00 / 1,000 company events
Spain Company Registry API — Officers, Insolvencies (BORME)
Daily structured events from Spain's official company registry (BORME/BOE): incorporations, director appointments and removals, capital changes, insolvency proceedings. Typed English fields, 9.5M+ events since 2009, official source.
Pricing
from $1.00 / 1,000 company events
Rating
0.0
(0)
Developer
Heorhii Kozlitin
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
12 days ago
Last modified
Categories
Share
Spain Company Registry API — Company Officers, Capital, Insolvencies (BORME)
Structured, typed English events from Spain's official company registry gazette (BORME — Boletín Oficial del Registro Mercantil, published by BOE): incorporations, director appointments and removals, capital changes, insolvency proceedings, dissolutions, and 40+ more act types. No Spanish required, no PDF scraping, no manual gazette monitoring.
A real event, abridged for readability (one Sevilla company, five chained acts in a single gazette entry — sole-shareholder change, director termination, new director + proxy appointments):
{"event_id": "sha1:02030cddb9436152cfcfa64e5a4acb5b5fd81744","date": "2026-08-06","borme_id": "BORME-A-2026-150-41","province": "SEVILLA","act_number": 368350,"company_name": "CEMEK-ALO 26 SL.","company_slug": "cemek-alo-26-sl","company_flags": [],"acts": [{"act_type_raw": "Sociedad unipersonal", "act_type": "SOLE_SHAREHOLDER_STATUS"},{"act_type_raw": "Cambio de identidad del socio único", "act_type": "SOLE_SHAREHOLDER_CHANGE","payload_raw": "THE SEVEN HOUSE FAMILY PROJECT MANAGEMENT LLC."},{"act_type_raw": "Ceses/Dimisiones", "act_type": "TERMINATIONS","roles": [{"role_raw": "Adm. Unico", "role": "SOLE_DIRECTOR", "names": ["MONTESA KAIJSER CARLOS DAVID"]}]},{"act_type_raw": "Nombramientos", "act_type": "APPOINTMENTS","roles": [{"role_raw": "Adm. Unico", "role": "SOLE_DIRECTOR", "names": ["THE SEVEN HOUSE FAMILY PROJECT MANAGEMENT LLC"]},{"role_raw": "Apoderado", "role": "PROXY_HOLDER", "names": ["MONTESA KAIJSER CARLOS DAVID"]},{"role_raw": "Apo.Sol.", "role": "SOLE_PROXY_HOLDER", "names": ["MONTESA KAIJSER CARLOS DAVID", "ESPEJO RODRIGUEZ MARIA"]}]},{"act_type_raw": "Otros conceptos", "act_type": "OTHER","payload_raw": "El nuevo administrador único, esto es la sociedad THE SEVEN HOUSE FAMILY PROJECT MANAGEMENT LLC, designa como REPRESENTANTE PERSONA FISICA a DON ZIED RIAHI con NIE Z2040540P."}],"registral": {"seccion": 8, "hoja": "SE155277", "inscription": "2", "reg_date": "2026-07-30","raw": "S 8 , H SE155277, I/A 2 (30.07.26)."},"source": "parser"}
(raw_text and unparsed_spans abridged here for readability — every record the actor returns carries the full schema, including verbatim source text for audit. Pulled live from the hosted API on 2026-08-06.)
Field reference
| Field | Type | Meaning |
|---|---|---|
event_id | string | Deterministic SHA1 — stable across re-runs, safe to deduplicate. |
date | string (YYYY-MM-DD) | BORME publication date. |
borme_id | string | Official gazette entry ID (traceable back to the source PDF). |
province | string | Spanish province as printed in BORME. |
act_number | integer | Sequential act number within the BORME issue. |
company_name / company_slug | string | Registered name and a normalized slug. |
company_flags | array | Notable status flags (e.g. sole-shareholder). |
acts | array | One or more chained acts in this gazette entry (a single entry often reports several changes at once). |
acts[].act_type | enum (52 values) | Typed English event kind — see full list below. |
acts[].act_type_raw | string | Original Spanish label, always preserved. |
acts[].roles | array | Officer role changes: role (56 normalized values), role_raw, names. |
acts[].payload_raw | string | Act-specific free text (amounts, addresses, identities) not yet split into typed fields. |
registral | object | Sheet, section, inscription number, registration date — the registry coordinates of the entry. |
raw_text | string | Full original gazette text for the entry, always present, for audit. |
unparsed_spans | array | Any fragment the parser could not classify — never silently dropped. |
source | string | parser for normally processed entries. |
Quickstart
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("zon4a/spain-company-registry-borme-events").call(run_input={"dateFrom": "2026-08-01", "dateTo": "2026-08-01"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["company_name"], [a["act_type"] for a in item["acts"]])
Coverage, freshness & accuracy
- 9.5M+ events in the dataset, growing daily.
- Full history: every publication date from 2009-01-02 to today (BORME publishes Monday–Friday).
- Updated daily on each publication day.
- Parse completeness 99.89% over the last 30 days (consumed/total characters, measured per file) — anything unrecognized is preserved verbatim in
unparsed_spans, never silently dropped. - ~3.28M distinct companies represented in the underlying dataset.
- Source: BORME, fetched via the official BOE open-data API — every record traceable to its official gazette entry.
Pricing
Pay-per-event: $0.01 per actor start + $0.001 per event actually delivered after your filters. You pay for what you receive — filters are applied before charging.
Why this actor
BORME is published only in Spanish, only as daily gazette issues, and the raw acts are dense legal shorthand ("Ceses/Dimisiones. Adm. Unico: ..."). This actor turns them into a normalized event stream:
- Structured fields (since v0.1.8): incorporations carry
capital_eur,cnae(printed or inferred),municipality,address,start_date; capital acts carry amounts in EUR; insolvencies carry case number, court and phase. - 52 typed event kinds (English enums):
INCORPORATION,APPOINTMENTS,TERMINATIONS,CAPITAL_INCREASE,MERGER_BY_ABSORPTION,INSOLVENCY_STATUS,DISSOLUTION,SOLE_SHAREHOLDER_CHANGE,PROVISIONAL_SHEET_CLOSURE_NIF_REVOKED, … - 56 normalized officer roles:
SOLE_DIRECTOR,JOINT_AND_SEVERAL_DIRECTOR,PROXY_HOLDER,LIQUIDATOR,AUDITOR, … with person/entity names extracted per role. - Registry coordinates (
Datos registrales: sheet, section, inscription, registration date) parsed into fields. - Nothing silently dropped: parse completeness is measured per file; any unrecognized fragment is preserved verbatim in
unparsed_spans, and the full original text is always inraw_text. - Stable IDs:
event_idis deterministic — safe to deduplicate across re-runs.
Use cases
- KYC / AML / onboarding — verify a Spanish counterparty's current directors, check for insolvency proceedings, liquidation status, or a tax-authority sheet closure before signing.
- Company registry API for Spain — pull officer changes, capital events and incorporations programmatically instead of reading gazette PDFs.
- Sales intelligence & lead generation — newly incorporated companies by province and day; leadership changes as buying signals.
- Credit & supplier risk monitoring — watch portfolio companies for
INSOLVENCY_STATUS,DISSOLUTION,CAPITAL_REDUCTION,EXTINCTION. - AI agents & LLM pipelines — typed JSON with English enums slots directly into agent tools, RAG corpora and workflow automations (n8n, Make, Zapier via Apify integrations). This actor runs with limited permissions and plain run-to-completion semantics, so it is safe to call from autonomous agents.
- Journalism & research — corporate activity by region, sector dynamics, officer networks.
Input
All fields are optional — the default run fetches yesterday's issue, all provinces, all event types.
{"dateFrom": "2026-06-30","dateTo": "2026-06-30","provinces": ["MADRID", "BARCELONA"],"actTypes": ["INCORPORATION", "APPOINTMENTS", "TERMINATIONS"],"companyNameFilter": "metales"}
| Field | Meaning |
|---|---|
dateFrom / dateTo | Publication date range (YYYY-MM-DD), any dates since 2009-01-02. Defaults: yesterday / dateFrom. |
provinces | Province names as printed in BORME (MADRID, VALENCIA, …). Empty = all ~50. |
actTypes | Filter by typed event kind (see full list below). Empty = all. |
companyNameFilter | Case-insensitive substring match on company name — cheap way to watch specific companies. |
All 52 event types
ACCOUNTS_NON_APPROVAL_JUSTIFICATION, ADDRESS_CHANGE, APPOINTMENTS, APPOINTMENT_CANCELLATIONS, BAD_DEBT_WRITE_OFF, BANKRUPTCY_LEGACY, BOND_ISSUE, BRANCH, CALLED_UP_CAPITAL_PAID, CAPITAL_INCREASE, CAPITAL_INCREASE_UNEXECUTED, CAPITAL_REDUCTION, COMPANY_REACTIVATION, COMPANY_WEBSITE, DISSOLUTION, DURATION_CHANGE, ERRATUM, EXTINCTION, FIRST_INSCRIPTION, FOREIGN_BRANCH_FIRST, GLOBAL_TRANSFER_ASSETS_LIABILITIES, INCORPORATION, INSOLVENCY_DECLARATION, INSOLVENCY_STATUS, LEGAL_ADAPTATION, MERGER_BY_ABSORPTION, MERGER_BY_UNION, NAME_CHANGE, OTHER, PARTIAL_SPIN_OFF, POWERS_MODIFICATION, PREVENTIVE_ANNOTATION, PROVISIONAL_SHEET_CLOSURE_INSOLVENCY, PROVISIONAL_SHEET_CLOSURE_NIF_REVOKED, PROVISIONAL_SHEET_CLOSURE_TAX, PURPOSE_CHANGE, PURPOSE_EXTENSION, REGISTRAL_DATA, REGISTRY_SHEET_REOPENED, REVOCATIONS, RE_ELECTIONS, SEGREGATION, SOLE_SHAREHOLDER_CHANGE, SOLE_SHAREHOLDER_DECLARATION, SOLE_SHAREHOLDER_STATUS, SOLE_SHAREHOLDER_STATUS_LOST, SOLE_TRADER, STATUTORY_AMENDMENTS, SUSPENSION_OF_PAYMENTS, TERMINATIONS, TOTAL_SPIN_OFF, TRANSFORMATION
How this compares
Several Spain business registry actors exist. Judge them all — including this one — by verifiable numbers, not adjectives:
- Measured parse completeness: 99.89% over the last 30 days, and anything unrecognized is preserved in
unparsed_spans— never silently dropped. - Full history: any date since 2009-01-02, not a rolling window.
- 52 typed event kinds + 56 normalized roles — filterable enums, not raw Spanish strings.
- Deterministic: same input, same output, stable
event_ids — safe for pipelines and dedup.
Data quality & guarantees
- Source: official BOE open-data API (
boe.es/datosabiertos) — the authoritative publisher of BORME. Polite fetching (≤1 req/s, identifying User-Agent). - Per-file parse completeness is computed as consumed-characters / total-characters and logged; a warning is emitted for any file under 99.5%. Measured 99.89% over the last 30 days.
- Unmapped labels come through as
act_type: "OTHER"/role: "UNKNOWN_ROLE"with the raw Spanish label preserved — never dropped. - Deterministic parser (no LLM in the hot path): identical input always yields identical output.
Hosted API
A REST API over the full 2009+ archive — company timelines, watchlists with webhooks, MCP for agents — is opening soon: bormeapi.com.
Legal & attribution
- Contains public-sector information from the Agencia Estatal Boletín Oficial del Estado (BORME), reused under Spanish open-data rules (Law 18/2015, RD 1495/2011). This actor is not affiliated with or endorsed by BOE.
- BORME data is official public registry information. If you are an individual named in the registry and wish to exercise data-protection rights over derived outputs, contact the address in the actor's support section.
Use from AI agents (MCP)
Two ways to plug BORME into an agent:
1. Run this actor via Apify's MCP server — the agent starts paid runs on your Apify account (full firehose, any filters):
{ "mcpServers": { "apify": {"type": "http","url": "https://mcp.apify.com/?actors=zon4a/spain-company-registry-borme-events","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" } } } }
2. Free public MCP endpoint (read-only queries over the full 2009+ database — search, company timelines, daily digest; capped at 50 rows per response):
{ "mcpServers": { "borme": {"type": "http","url": "https://mcp.bormeapi.com/mcp" } } }
Ask your agent things like "which companies declared insolvency in Madrid this week?" or "full registry timeline of ACME IBERIA SL".
FAQ
Does it cover the whole history? Yes — BORME has been published digitally since 2009-01-02; any date range since then works. BORME publishes Monday–Friday (no weekend/holiday issues; those days simply produce no records).
Is this the "official" registry (Registro Mercantil) full text? BORME is the official gazette of the registry: it publishes every registrable act (appointments, capital changes, insolvency…). It does not include full deed texts or annual accounts — for those you need the registry itself. For monitoring and screening, BORME is the canonical public source.
How fresh is the data? Each issue is published in the morning (Europe/Madrid) of its date; a run with dateFrom = today after publication returns same-day events.
Can I run it from an AI agent? Yes — see the MCP section above: call the actor via mcp.apify.com, or query the hosted database for free at mcp.bormeapi.com. Limited permissions, plain JSON output, deterministic charges per delivered record.
Engineering notes: You don't need to scrape BORME