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
statusis oftenunknownbecause 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
-
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. - 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.
-
Actos are not the same as person directories.
get_officersreturns the relevant paragraphs, but the person names and roles are embedded in raw text and must be parsed. - Shareholder visibility is partial. You can see delta events, not a complete shareholder book for most companies.
-
get_company_profilewill not save you. The free surface intentionally pushes you back to filings.
A complete worked example
Take INDITEX, S.A.. A typical workflow is:
- Search the company name.
- Pull the filing list.
- Fetch the publication document for the announcement you care about.
Example shape:
{
"tool": "list_filings",
"jurisdiction": "ES",
"company_id": "INDITEX, S.A.",
"limit": 1
}
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"
}
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
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)