Cuando trabajas con otras empresas — como cliente, proveedor o inversor — necesitas saber si están realmente activas. Una empresa puede tener un NIF válido y seguir apareciendo en buscadores, pero estar disuelta, en concurso de acreedores o dada de baja en el Registro Mercantil desde hace años.
La fuente oficial para verificar esto en España es el BORME (Boletín Oficial del Registro Mercantil). El problema: consultar el BORME directamente implica parsear XMLs con estructura inconsistente o navegar manualmente por su web.
En esta guía te mostramos cómo hacerlo de forma programática en menos de 5 minutos.
Qué información obtienes del BORME
Cuando consultas una empresa por NIF obtienes:
- Estado registral: activa, disuelta, en liquidación, cancelada
- Nombre y nombre comercial
- Domicilio social (municipio, provincia, código postal)
- Fecha de constitución
- Capital social
- Histórico de actos: nombramientos de administradores, ceses, ampliaciones de capital, disoluciones, concursos de acreedores
Cualquiera de estos datos te permite tomar una decisión informada antes de firmar un contrato o iniciar una relación comercial.
Obtener tu API key gratuita
Primero necesitas una API key. El plan Free incluye 20 requests/mes sin tarjeta de crédito:
- Ve a apispain.es y haz clic en Empezar gratis
- Introduce tu email
- Guarda tu API key — solo se muestra una vez
Verificar una empresa por NIF
Con curl
La forma más directa. Sustituye B12345678 por el NIF que quieres consultar:
curl https://api.apispain.es/v1/borme/empresas/B12345678 \
-H "Authorization: Bearer TU_API_KEY"
Respuesta:
{
"id": "a1b2c3d4-...",
"nif": "B12345678",
"nombre": "EMPRESA EJEMPLO SL",
"nombreComercial": null,
"domicilio": "Calle Mayor 1",
"municipio": "Madrid",
"provincia": "Madrid",
"codigoPostal": "28013",
"estadoRegistral": "activa",
"fechaConstitucion": "2018-04-12T00:00:00.000Z",
"capitalSocial": "3000.00",
"createdAt": "2026-01-15T09:30:00.000Z",
"updatedAt": "2026-03-22T09:30:00.000Z"
}
El campo clave es estadoRegistral. Los valores posibles son:
| Valor | Significado |
|---|---|
activa | Empresa operativa |
disuelta | Proceso de disolución iniciado |
en liquidación | En proceso de liquidación |
cancelada | Registralmente extinguida |
desconocido | No se encontró estado en el BORME |
Con JavaScript (fetch)
const API_KEY = 'TU_API_KEY'
const NIF = 'B12345678'
async function verificarEmpresa(nif) {
const res = await fetch(`https://api.apispain.es/v1/borme/empresas/${nif}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
})
if (res.status === 404) {
return { activa: false, motivo: 'NIF no encontrado en el BORME' }
}
if (!res.ok) throw new Error(`Error ${res.status}`)
const empresa = await res.json()
return {
activa: empresa.estadoRegistral === 'activa',
nombre: empresa.nombre,
estado: empresa.estadoRegistral,
constituida: empresa.fechaConstitucion,
municipio: empresa.municipio,
}
}
// Uso
const resultado = await verificarEmpresa('B12345678')
console.log(resultado)
// { activa: true, nombre: 'EMPRESA EJEMPLO SL', estado: 'activa', ... }
Con Python
import requests
API_KEY = 'TU_API_KEY'
def verificar_empresa(nif: str) -> dict:
url = f'https://api.apispain.es/v1/borme/empresas/{nif}'
headers = {'Authorization': f'Bearer {API_KEY}'}
res = requests.get(url, headers=headers)
if res.status_code == 404:
return {'activa': False, 'motivo': 'NIF no encontrado'}
res.raise_for_status()
empresa = res.json()
return {
'activa': empresa['estadoRegistral'] == 'activa',
'nombre': empresa['nombre'],
'estado': empresa['estadoRegistral'],
'municipio': empresa.get('municipio'),
'capital': empresa.get('capitalSocial'),
}
# Uso
resultado = verificar_empresa('B12345678')
print(resultado)
Consultar el historial de actos del BORME
Saber que una empresa está “activa” a veces no es suficiente. Quizás quieres saber si ha habido cambios de administradores recientes, una ampliación de capital sospechosa o un concurso de acreedores que luego se resolvió. Para eso tienes el endpoint de actos:
curl https://api.apispain.es/v1/borme/empresas/B12345678/actos \
-H "Authorization: Bearer TU_API_KEY"
Respuesta (extracto):
[
{
"tipoActo": "Nombramiento de administrador único",
"fechaPublicacion": "2024-11-03T00:00:00.000Z",
"seccion": "B",
"datosParseados": {
"nombre": "JUAN GARCÍA LÓPEZ",
"cargo": "Administrador único"
}
},
{
"tipoActo": "Ampliación de capital",
"fechaPublicacion": "2023-06-15T00:00:00.000Z",
"seccion": "B",
"datosParseados": {
"capitalAnterior": "3000.00",
"capitalNuevo": "50000.00"
}
}
]
Caso de uso real: validación automática en un CRM
Si tu aplicación registra nuevos clientes B2B, puedes validar automáticamente el NIF en el momento del alta:
async function validarClienteNuevo(nif, nombreDeclarado) {
const empresa = await verificarEmpresa(nif)
if (!empresa.activa) {
throw new Error(`La empresa con NIF ${nif} no está activa en el Registro Mercantil`)
}
// Verificar que el nombre coincide (normalización básica)
const nombreBorme = empresa.nombre.toLowerCase().replace(/\s+/g, ' ')
const nombreInput = nombreDeclarado.toLowerCase().replace(/\s+/g, ' ')
if (!nombreBorme.includes(nombreInput.split(' ')[0])) {
console.warn(`Posible discrepancia de nombre: BORME="${empresa.nombre}", declarado="${nombreDeclarado}"`)
}
return empresa
}
Buscar empresas por nombre
Si no tienes el NIF pero sí el nombre, puedes buscarlo:
curl "https://api.apispain.es/v1/borme/empresas?nombre=acme&provincia=Madrid" \
-H "Authorization: Bearer TU_API_KEY"
Devuelve un array de empresas que coinciden, con sus NIFs y estados registrales.
Límites del plan Free
El plan gratuito incluye 20 requests/mes, suficiente para casos de uso puntuales o desarrollo. Si necesitas verificar empresas en volumen, el plan Starter (22,99€/mes) incluye 300 requests/mes y el Pro requests ilimitados.
Consulta todos los planes en apispain.es/#precios.
¿Tienes preguntas sobre la integración? Escríbenos a hola@apispain.es.
20 requests/mes gratis, sin tarjeta de crédito. API key lista al momento.