Notas de ingeniería
No hace falta rascar el BORME: el registro mercantil español tiene API de datos abiertos
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).
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.