OpenCorporates Spain alternative
Spanish corporate filings are published every working day in the BORME (Boletín Oficial del Registro Mercantil), administered by the AEBOE. The structured Sección II is XML; the much richer Sección I (officers, shareholders, capital changes, the actos inscritos) is a PDF stream per province. OpenRegistry wires both. Sección II goes through the structured feed. Sección I is delta-streamed and backed by an offline province index.
OpenRegistry on Spain
search_companies(ES, ...): name search against the BORME Sección II structured XML feed.get_company_profile(ES, ...): denominación social, CIF/NIF, domicilio, fecha de constitución, situación. Full BORME payload underjurisdiction_data.list_filings(ES, ...): every BORME publication for the company.get_document_metadataandfetch_document: BORME PDF and XML bytes inline.list_actos_inscritos: the delta stream of registered acts. Constitución, nombramientos, ceses, ampliación de capital, transformación, disolución.get_officers(ES, ...)andget_shareholders(ES, ...): derived from the Sección I province-PDF delta stream, backed by an offline index built from two years of BORME, ~37× faster cold-start than a full-province scan.
What OpenCorporates has for Spain
OpenCorporates includes Spanish company records in its catalogue. The identifier and name data is typically present. The richer fields (officers, shareholders, capital changes) live in the BORME province PDFs, which OC does not tend to parse, and coverage drops off past the basics.
What is out of scope
The Registro Mercantil Central full-shareholder register and the Colegio de Registradores' richer reports are paid services we do not proxy. The RETIR beneficial-ownership register is AML-gated under Ley 6/2023 transposing 5AMLD post CJEU C-37/20. Those routes return a structured 501 with the statutory portal pointer.
Why an actos-inscritos delta stream beats a normalised crawl
Spanish corporate changes (a new administrador, an ampliación de
capital, a cese de administrador único) are declarative
publications, not snapshots. The BORME publishes the act itself, not
a re-derived state. list_actos_inscritos hands back the
raw acts; the agent (or an offline pipeline) decides whether to fold
them into a synthesised state. A schema that flattens them into a
single "current officers" list will always be one publication behind.
Worked example
// MCP — find Inditex (Zara's parent) and walk its BORME stream search_companies({ jurisdiction: "ES", query: "Industria de Diseño Textil" }) // → CIF A15075062, denominación INDUSTRIA DE DISEÑO TEXTIL SA list_filings({ jurisdiction: "ES", company_id: "A15075062" }) list_actos_inscritos({ jurisdiction: "ES", company_id: "A15075062" }) fetch_document({ jurisdiction: "ES", document_id: "<BORME publication id>" })