API de empresas

API de empresas españolas con los datos del BORME

Busca una sociedad por CIF, hoja registral o nombre y recibe en JSON su situación, su capital, sus cargos vigentes y la última inscripción, con el enlace al boletín oficial del que sale. Sin leer PDF a mano.

Estado del acceso

El acceso está abierto

Crea tu cuenta de desarrollador, confirma el correo y activa el segundo factor (obligatorio) para crear tu clave. Biblioteca, calculadoras y plazos no gastan saldo; empresas y asistente tienen 100 consultas de prueba, sin tarjeta.

El acceso será para empresas de cualquier país, previa verificación.

Para quién es

  • Equipos que construyen un CRM, un ERP o una herramienta de gestión y quieren completar la ficha de una empresa española a partir de su CIF.
  • Quien hace diligencia debida o verificación de proveedores y clientes y necesita ver la situación de una sociedad y quién figura en sus cargos.
  • Periodismo de datos e investigación que sigue las novedades del Registro Mercantil día a día.
  • Gestorías, asesorías y despachos con equipo técnico que automatizan comprobaciones repetitivas.

Qué puedes hacer

Buscar por CIF, hoja o nombre

Una sola búsqueda entiende un CIF, una hoja registral («M 167931») o un nombre, y la respuesta dice en tipo cómo la ha entendido. Se puede filtrar por provincia y por división CNAE (dos dígitos) del objeto social publicado.

Ficha de la empresa

Situación (activa, concurso, disuelta o extinguida, con su fecha), capital en céntimos, cargos vigentes, número de inscripciones y la última inscripción con su boletín y el PDF oficial.

Personas, con aviso de homónimos

Busca un nombre y obtén las sociedades en las que figura. El BORME no publica el DNI: la respuesta marca los homónimos posibles y nunca pone una etiqueta sobre la persona, sólo el hecho publicado.

Novedades y estadística

Los días con boletín de un mes, el detalle de un día por provincia con el PDF oficial de cada boletín y el recuento de actos por tipo y de inscripciones por provincia (hasta 31 días por consulta).

Hasta dónde llega lo cargado

GET /v1/dev/estado dice cuál es el último día cargado y cuántos días e inscripciones hay: así sabes si «sin resultados» es eso o es un retraso.

Las operaciones

  • GET/empresas

    Buscar empresas en el BORME Detalle

    1 céntimo por consulta
  • GET/empresas/{empresaId}

    Cabecera de la ficha de una empresa Detalle

    1 céntimo por consulta
  • GET/personas

    Buscar personas en el BORME por su nombre Detalle

    1 céntimo por consulta
  • GET/personas/{slug}

    Ficha de una persona del BORME Detalle

    1 céntimo por consulta
  • GET/provincias

    Provincias con algún boletín del BORME cargado Detalle

    Gratis
  • GET/boletines

    Los días con BORME cargado de un mes Detalle

    1 céntimo por consulta
  • GET/boletines/{fecha}

    Las novedades publicadas en una fecha Detalle

    1 céntimo por consulta
  • GET/estadisticas

    Cuántos actos por tipo y cuántas inscripciones por provincia Detalle

    1 céntimo por consulta
  • GET/estado

    Hasta dónde está cargado el BORME Detalle

    Gratis

Ejemplos de petición y respuesta

Los ejemplos usan tu clave desde la variable de entorno JURILIA_API_KEY.

Buscar una empresa por nombre

Con el filtro de provincia. Cambia q por un CIF o una hoja registral y la búsqueda se entiende igual.

curl

curl "https://api.jurilia.com/v1/dev/empresas?q=acme&provincia=Madrid" \
  -H "Authorization: Bearer $JURILIA_API_KEY"

Python

import os
import requests

r = requests.get(
    "https://api.jurilia.com/v1/dev/empresas",
    headers={"Authorization": f"Bearer {os.environ['JURILIA_API_KEY']}"},
    params={"q":"acme","provincia":"Madrid"},
    timeout=30,
)
r.raise_for_status()
print(r.json())

JavaScript

const url = new URL("https://api.jurilia.com/v1/dev/empresas");
url.search = new URLSearchParams({"q":"acme","provincia":"Madrid"});
const r = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.JURILIA_API_KEY}` },
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());

Respuesta (la forma; los valores son de ejemplo)

{
  "tipo": "nombre",
  "sugerencia": null,
  "empresas": [
    {
      "id": "1234567",
      "denominacion": "ACME SOCIEDAD LIMITADA",
      "provincia": "Madrid",
      "hoja": "M 167931",
      "titular": "sociedad",
      "primeraPublicacion": "2010-03-15",
      "ultimaPublicacion": "2026-06-02",
      "concursalPublicadoEn": null,
      "disolucionPublicadaEn": null,
      "extincionPublicadaEn": null,
      "nombreQueCasa": null
    }
  ]
}

Los valores son ilustrativos para que veas la forma exacta de la respuesta, no datos de una consulta real.

La ficha de una empresa

El identificador es el que devuelve la búsqueda.

curl

curl "https://api.jurilia.com/v1/dev/empresas/1234567" \
  -H "Authorization: Bearer $JURILIA_API_KEY"

Python

import os
import requests

r = requests.get(
    "https://api.jurilia.com/v1/dev/empresas/1234567",
    headers={"Authorization": f"Bearer {os.environ['JURILIA_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
print(r.json())

JavaScript

const url = new URL("https://api.jurilia.com/v1/dev/empresas/1234567");
const r = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.JURILIA_API_KEY}` },
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());

Respuesta (la forma; los valores son de ejemplo)

{
  "id": "1234567",
  "denominacion": "ACME SOCIEDAD LIMITADA",
  "provincia": "Madrid",
  "hoja": "M 167931",
  "titular": "sociedad",
  "situacion": "activa",
  "situacionFecha": null,
  "constitucionFecha": "2010-03-15",
  "primeraPublicacion": "2010-03-15",
  "ultimaPublicacion": "2026-06-02",
  "capitalCentimos": 300000,
  "totalInscripciones": 14,
  "denominaciones": [],
  "cargosVigentes": [{ "cargo": "Administrador único", "nombre": "…" }],
  "ultimaInscripcion": {
    "fecha": "2026-06-02",
    "boletin": "BORME-A-2026-104-12",
    "urlPdf": "https://www.boe.es/borme/dias/2026/06/02/pdfs/…pdf",
    "actos": [{ "tipo": "cambio_de_administradores", "etiqueta": null }]
  }
}

Los valores son ilustrativos para que veas la forma exacta de la respuesta, no datos de una consulta real.

Las novedades de un día

Los boletines provinciales de una fecha, cada uno con su PDF oficial.

curl

curl "https://api.jurilia.com/v1/dev/boletines/2026-09-30" \
  -H "Authorization: Bearer $JURILIA_API_KEY"

Python

import os
import requests

r = requests.get(
    "https://api.jurilia.com/v1/dev/boletines/2026-09-30",
    headers={"Authorization": f"Bearer {os.environ['JURILIA_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
print(r.json())

JavaScript

const url = new URL("https://api.jurilia.com/v1/dev/boletines/2026-09-30");
const r = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.JURILIA_API_KEY}` },
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
console.log(await r.json());

Respuesta (la forma; los valores son de ejemplo)

{
  "fecha": "2026-09-30",
  "numero": 184,
  "documentos": 52,
  "inscripciones": 1402,
  "provincias": [
    {
      "identificador": "BORME-A-2026-184-28",
      "provincia": "Madrid",
      "urlPdf": "https://www.boe.es/borme/dias/2026/09/30/pdfs/…pdf",
      "anuncios": 311
    }
  ]
}

Los valores son ilustrativos para que veas la forma exacta de la respuesta, no datos de una consulta real.

Por qué fiarse de lo que devuelve

La fuente, en cada ficha

Cada ficha trae el identificador del boletín y el PDF oficial de boe.es del que sale la última inscripción.

Datos del propio boletín

Son los publicados en el Boletín Oficial del Registro Mercantil, con su fecha y su boletín.

«No encontrado» es una respuesta

Si no está en lo cargado, 404; y /estado dice hasta dónde llega lo cargado. Nunca se inventa una ficha.

Precio por consulta, sin llamada comercial

1 céntimo por consulta con un saldo de prepago sin caducidad y sin cuota mensual.

Límites y lo que no hace

  • Sólo lo que publica el BORME: constituciones, nombramientos y ceses, capital, concursos, disoluciones y similares. No incluye cuentas anuales ni datos de facturación.
  • Es información publicada en el boletín, no una certificación registral.
  • Nombres iguales pueden ser personas distintas: la respuesta lo marca con homonimos.
  • 120 llamadas por minuto por clave.
  • El intervalo de /estadisticas se acota a 31 días; si se recorta, la respuesta lo dice.

Precio

Las 100 primeras consultas de empresas y asistente son de prueba, una sola vez y compartidas. Después, 1 céntimo por consulta, de un saldo de prepago por paquetes, sin suscripción ni caducidad. Sin saldo, la llamada no se sirve (402) y nunca se genera deuda.

Autenticación y errores

Cada llamada lleva la clave de tu cuenta de desarrollador en la cabecera Authorization: Bearer iuris_sk_…. La dirección base es https://api.jurilia.com. Hay un límite de 120 llamadas por minuto por clave, con las cabeceras X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset en cada respuesta. Una clave puede llevar una lista blanca de IP o redes (CIDR).

Los fallos llegan en JSON con un código estable: 401 (clave ausente o inválida), 402 (sin saldo: no se sirve ni se cobra), 403 (IP no permitida), 409 (falta un dato que decide el cálculo: no se cobra) y 429 (demasiadas llamadas seguidas).

Preguntas frecuentes

¿Se puede buscar una empresa por su CIF?
Sí. GET /v1/dev/empresas?q= admite un CIF, una hoja registral o un nombre, y la respuesta indica en el campo tipo cómo la ha entendido.
¿De dónde salen los datos?
Del Boletín Oficial del Registro Mercantil, publicado en el BOE. Cada ficha lleva el boletín y el PDF oficial del que sale su última inscripción.
¿Cuánto cuesta cada consulta?
Las 100 primeras consultas de empresas y asistente son de prueba, una sola vez y compartidas. Después, 1 céntimo por consulta, de un saldo de prepago por paquetes, sin suscripción ni caducidad. Sin saldo, la llamada no se sirve (402) y nunca se genera deuda. Las rutas de servicio (comprobar la clave, el estado de la carga y las provincias) son gratis.
¿Cómo sé si el BORME está al día?
GET /v1/dev/estado devuelve el último día con BORME cargado y cuántos días e inscripciones hay en total. Compruébalo antes de fiarte de un «sin resultados».
¿Puedo usarlo para verificar a un cliente o a un proveedor?
Puedes consultar la situación y los cargos publicados de una sociedad con su fuente. Es información del boletín, no una certificación del Registro Mercantil, y la decisión de diligencia debida sigue siendo tuya.