DEV Community

OpenRegistry
OpenRegistry

Posted on

Spain BORME — post-RETIR / post-CJEU API guide

Spain BORME — post-RETIR / post-CJEU API guide

Spain is a useful registry case because the free surface is not a company-of-record database at all; it is the BORME publications gazette. That matters right now because the country’s open surface is still shaped by the post-RETIR world on the one hand and by the CJEU’s post-C-37/20 ownership-visibility limits on the other. The concrete fact readers can verify in seconds is simple: there is no free public company ID like a CIF/NIF on the BORME surface. The registry indexes by exact denominación social instead.

What the registry actually exposes

OpenRegistry’s ES adapter is built around the publication stream, not a canonical company profile. The live surface covers:

  • search_companies — title/full-text search over BORME announcements, deduped by denominación social.
  • list_filings — the strongest free endpoint; returns one filing row per Section II publication for a given exact company name.
  • get_document_metadata — format/size/page metadata for a specific publication.
  • fetch_document — raw PDF by default, or source XML when available.
  • list_actos_inscritos — a Section II/acts view for companies.
  • get_officers — a delta stream of officer-related acto paragraphs.
  • get_shareholders — a delta stream of shareholder-related acto paragraphs.

The support matrix from the live list_jurisdictions call shows Spain as real_time=true, with no caching beyond a short search-result / XML dedupe window. Every call still hits boe.es live. The public surface is intentionally thin: get_company_profile, get_persons_with_significant_control, get_charges, get_officer_appointments, and search_officers are blocked on the free path.

Auth is simple: there is none on the free tier. The response format is unified, but the jurisdiction-specific payload is where the useful data lives. For filings you get PDF/XML/HTML URLs plus the announcement text fields; for officer/shareholder deltas you get raw acto text, page numbers, and publication metadata.

What's paywalled, gated, or restricted

Spain is unusually strict about where the useful company data lives:

  • No free company-of-record profile endpoint.
  • No free PSC / beneficial ownership REST API; this surface is AML-gated.
  • No free cross-company officer-name index.
  • No free charges endpoint on the company surface; those rights sit in separate registries.
  • The registry’s status is often unknown because BORME is a gazette, not a live status feed.

The practical consequence is that the free path is publication-first. If you want the authoritative document trail, you query filings and then read the PDF/XML yourself.

Which OpenRegistry tools cover which surface

Tool Status Notes
search_companies ✅ live title match on BORME announcements
list_filings ✅ live exact denominación, Section II rows
get_document_metadata ✅ live PDF/XML metadata for a publication
fetch_document ✅ live raw PDF or source XML
list_actos_inscritos ✅ live Section II acts stream
get_officers ✅ live officer-related delta paragraphs
get_shareholders ✅ live shareholder-related delta paragraphs
get_company_profile ⛔ 501 no free profile API
get_persons_with_significant_control ⛔ 501 AML-gated BO register
get_charges ⛔ 501 separate paid registries
get_officer_appointments ⛔ 501 no free cross-company index
search_officers ⛔ 501 no free cross-company index

Country-specific quirks

  1. Use the exact denominación social. INDITEX, S.A. is the identifier shape here, not the fiscal number. Matching is tolerant, but the company name still matters.
  2. Most statuses are unknown. If you are used to Companies House or KVK, do not expect a clean active/inactive profile. On BORME, the filing trail is the source of truth.
  3. Actos are not the same as person directories. get_officers returns the relevant paragraphs, but the person names and roles are embedded in raw text and must be parsed.
  4. Shareholder visibility is partial. You can see delta events, not a complete shareholder book for most companies.
  5. get_company_profile will not save you. The free surface intentionally pushes you back to filings.

A complete worked example

Take INDITEX, S.A.. A typical workflow is:

  1. Search the company name.
  2. Pull the filing list.
  3. Fetch the publication document for the announcement you care about.

Example shape:

{
  "tool": "list_filings",
  "jurisdiction": "ES",
  "company_id": "INDITEX, S.A.",
  "limit": 1
}
Enter fullscreen mode Exit fullscreen mode

That returns a filing envelope with a BORME publication code, publication date, and direct document URLs. If you need the underlying notice:

{
  "tool": "fetch_document",
  "jurisdiction": "ES",
  "document_id": "BORME-C-2026-1234",
  "format": "pdf"
}
Enter fullscreen mode Exit fullscreen mode

The key point is that the registry gives you the source document, not a synthetic summary. For Spanish workflows, that is usually enough: read the notice, confirm the act, then use the same denominación for the next query.

Connecting an MCP client

Claude Desktop / Cursor / Cline can all point at the same server:

mcp endpoint: https://openregistry.sophymarine.com/mcp
Claude Desktop: add custom connector with that URL
Cursor / Cline: add the endpoint in MCP settings
No API key required on the free tier
Enter fullscreen mode Exit fullscreen mode

CTA

If you want to test this without signing up, use the free anonymous tier and query the example company profile path for the same name you saw above. The public web profile path for INDITEX, S.A. is /company/es/INDITEX%2C%20S.A. and the live MCP endpoint is enough to get you from search to filing without a login.


OpenRegistry's full coverage

OpenRegistry is a free remote MCP server giving AI agents real-time access to company-registry data from 30 national governments. This article focused on Spain; the same toolkit covers:

🇬🇧 UK Companies House · 🇫🇷 INSEE Sirene + INPI RNE · 🇩🇪 Handelsregister · 🇮🇹 Registro Imprese (BRIS) · 🇪🇸 BORME · 🇳🇱 KVK · 🇧🇪 KBO · 🇨🇭 Zefix · 🇳🇴 Brreg · 🇫🇮 PRH · 🇮🇪 CRO · 🇵🇱 KRS · 🇨🇿 ARES · 🇮🇸 RSK · 🇮🇲 IoM Registry · 🇨🇾 DRCOR · 🇲🇨 RCI · 🇱🇮 Liechtenstein HR · 🇰🇷 OPENDART · 🇭🇰 Companies Registry · 🇹🇼 GCIS · 🇲🇾 SSM · 🇮🇩 Ditjen AHU · 🇦🇺 ABR · 🇳🇿 Companies Office · 🇨🇦 Corporations Canada (+ BC + NWT) · 🇮🇳 MCA · 🇺🇸 NY State · 🇺🇸 California · 🇲🇽 PSM · 🇰🇾 CIMA · 🇷🇺 ЕГРЮЛ

→ Hosted MCP endpoint: https://openregistry.sophymarine.com/mcp
→ Docs: https://openregistry.sophymarine.com/docs/
→ Free anonymous tier: 20 req/min, all tools, every jurisdiction.

Made by Sophymarine.

Top comments (0)