BORME API

Notas de ingeniería

No hace falta rascar el BORME: el registro mercantil español tiene API de datos abiertos

2026-07-08 · 8 min · bormeapi.com

España publica todos los actos del registro mercantil —constituciones, cambios de administradores, concursos— en un boletín oficial llamado BORME (Boletín Oficial del Registro Mercantil). Casi todas las herramientas que encontramos rascan sus PDF. Resulta que no hace falta: desde 2009 existe una API oficial de datos abiertos en boe.es que casi nadie parece usar. Acabamos de completar la carga histórica entera —9,5 millones de eventos societarios, de 2009 hasta hoy— y estas son las notas que nos habría gustado tener al empezar.

La API de la que nadie habla

El resumen diario está en https://www.boe.es/datosabiertos/api/borme/sumario/{YYYYMMDD} con Accept: application/json: devuelve unos 50 ficheros XML provinciales por día hábil, cada uno con su url_xml directa. Sin autenticación, sin claves, sin cabeceras de límite de uso.

El XML es limpio, está estructurado y se corresponde uno a uno con los PDF. Si hoy estás procesando PDF del BORME: para. El XML hace desaparecer toda una clase de problemas (¡saltos de página en mitad de un registro!).

Seis trampas que nos costaron tiempo de verdad

El 404 miente sobre su tipo de contenido. Los días sin publicación (fines de semana, festivos) devuelven 404 — con un cuerpo XML, incluso habiendo pedido application/json. Comprueba el código de estado antes de analizar nada.

Los documentos que faltan devuelven HTTP 200. Una provincia que no publicó te da un 200 OK con <error><descripcion>No se encontró el documento original</descripcion></error> dentro. Si solo miras códigos de estado, acabarás cacheando basura.

El punto final es un campo de minas. 312077 - DAMI DELUSION S.L. — ¿ese punto final cierra la frase o forma parte de «S.L.»? Un rstrip('.') ingenuo corrompe miles de denominaciones sociales.

Un párrafo es una cadena de actos. Una sola entrada empaqueta habitualmente entre tres y seis actos: Ceses/Dimisiones. Adm. Unico: X. Nombramientos. Liquidador: X. Disolución. Extinción. Datos registrales… Hace falta un escáner sobre vocabulario ordenado, no una expresión regular por línea.

Los dialectos provinciales existen. Barcelona GRITA EN MAYÚSCULAS, las cooperativas tienen Consejo Rector en lugar de administradores, las asociaciones una Junta Directiva, y los nombres de provincia llevan acentos que nunca coinciden con lo que teclea el usuario (ARABA/ÁLAVA).

Las fechas llegan en al menos cinco formatos (26.06.26, 4.05.09, 15/11/16, 2-10-2009, 21 DE FEBRERO DE 2006) — y los registros anteriores al euro todavía citan Ptas.

Lo que sí funcionó

Un analizador determinista sobre un vocabulario cerrado, sin LLM en el camino crítico. La taquigrafía del boletín es un lenguaje regular sobre unas 50 etiquetas de tipo de acto y unas 80 de cargo. Un escáner más expresiones regulares por acto procesa el corpus entero de 17 años en minutos y es reproducible byte a byte. (Los LLM sí fueron útiles: para redactar casos de prueba.)

**Mide lo que *no* has analizado. La mejor métrica de calidad que encontramos: caracteres consumidos ÷ caracteres totales, por fichero. Todo lo no consumido se entrega literal en la salida como unparsed_spans, de modo que una deriva de formato aparece como un número que baja — y no como una pérdida silenciosa de datos. Media a largo plazo: 99,9 %**.

La cortesía escala perfectamente. Una petición por segundo como máximo, un User-Agent identificativo y reintentos con espera progresiva. La carga histórica completa de 2009 a hoy son unas 160.000 peticiones — unos dos días de reloj, totalmente reanudable (idempotente por fichero, con puntos de control mensuales).

Números para dimensionar: entre 2.000 y 2.500 eventos por día hábil en la actualidad; unos 6 GB de XML en bruto para la historia completa; 9,5 millones de eventos procesados sobre 3,2 millones de empresas en Postgres.

La parte sutil: tres épocas de formato

La disposición del XML difiere de forma sutil entre 2009, 2015 y 2026. Dos ejemplos que nos tocaron en producción: unos pocos ficheros traen un articulo sin número que contiene una nota de errata ( - o - NOMBRE DE LA EMPRESA antes de un párrafo de «Fe de erratas» o «Corrección de errores») — hay que rechazar el par, no el fichero; y un día de 2024 llegó con las coordenadas registrales sin ninguno de los marcadores T / F / S. Un analizador estricto que se niega a adivinar, más una métrica de lo que ha omitido, caza cada uno de estos casos como un número — revisamos todos a mano, y 17 años de boletín arrojaron apenas un puñado. El formato es notablemente estable; el BOE merece más crédito por ello.

Prueba los datos ahora mismo

La clave gratuita se pide desde la página principal: 50 peticiones al día sobre los últimos 7 días de eventos, y la clave llega al correo en segundos.

Y si prefieres no construir todo esto tú mismo: el feed completo ya procesado —52 tipos de acto tipados, cargos con nombres, coordenadas registrales— está disponible como conjunto de datos de pago por evento, como API REST con webhooks y como servidor MCP para agentes de IA.

Ejecutarlo en Apify — 1 $ por cada 1.000 eventos Documentación de la API REST

Todo lo anterior sigue valiendo si decides construirlo por tu cuenta — la fuente es oficial, abierta y de trato genuinamente agradable una vez conocidas las trampas.

build 2026.08.19·2ba6b50