Use case
Spanish company data for your CRM or ERP
Keep the tax ID of your customer or supplier and complete its profile with BORME data: name, province, status, capital and current officers. And keep it up to date by requesting it again when needed.
Access status
Access is open
Create your developer account, confirm your email and enable two-factor authentication (mandatory) to create your key. The library, calculators and deadlines do not use balance; companies and assistant come with 100 trial queries, no card needed.
Access will be for verified businesses worldwide.
Who it is for
- Product teams at CRM, ERP, invoicing and operations software who want to enrich Spanish company records.
- Accounting and advisory firms that maintain client portfolios and want to detect changes.
- Integrators who connect a client’s software with official data.
How it works, step by step
1. Search by tax ID
With
GET /v1/dev/empresas?q=<CIF>you get the company identifier. Store it next to the tax ID in your record.2. Complete the profile
With
GET /v1/dev/empresas/{empresaId}you bring name, province, status, capital in euro cents, current officers and the latest filing with its gazette.3. Keep it up to date
Request the profile again when it suits you (when the customer is opened, or weekly) and compare with what you stored. A thousand companies, with one search and one profile each, are 2,000 queries: €20 of balance at the current price.
4. Flag relevant changes
The status (
situacion) and the date of the latest filing tell you whether something has changed; the linked gazette shows where it comes from.
The operations
- GET
/empresasSearch Spanish companies in the BORME by tax ID (CIF), registry sheet or name Details (Spanish)
1 euro cent per query - GET
/empresas/{empresaId}Company profile: status, capital, current officers and latest filing Details (Spanish)
1 euro cent per query - GET
/provinciasProvinces with at least one BORME gazette loaded Details (Spanish)
Free - GET
/estadoHow far the BORME is loaded Details (Spanish)
Free
Request and response examples
The examples read your key from the JURILIA_API_KEY environment variable.
Search by name or tax ID
The response carries the identifier you need for the profile.
curl
curl "https://api.jurilia.com/v1/dev/empresas?q=acme&limite=5" \
-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","limite":"5"},
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","limite":"5"});
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());Response (the shape; the values are examples)
{
"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
}
]
}The values are illustrative so you can see the exact shape of the response; they are not data from a real query.
Bring the profile
The fields are stable and money is in euro cents.
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());Response (the shape; the values are examples)
{
"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 }]
}
}The values are illustrative so you can see the exact shape of the response; they are not data from a real query.
Why you can trust what it returns
Stable JSON, no PDF reading
Fields with fixed names and types in the OpenAPI contract, so you can generate your client.
Per-query price
1 euro cent per query, with no monthly fee and no sales call.
The source, on every profile
The gazette and the official PDF of the latest filing.
Limits and what it does not do
- Only what the BORME publishes: no phone, email, website, headcount or turnover.
- It is information published in the gazette, not a registry certificate.
- Only what is loaded:
/estadosays up to which day. - 120 calls per minute per key.
Price
The first 100 company and assistant queries are a one-time trial, shared between the two. After that, 1 euro cent per query, from a prepaid balance bought in packages, with no subscription and no expiry. With no balance the call is not served (402) and no debt is ever created.
Authentication and errors
Every call carries the key of your developer account in the header Authorization: Bearer iuris_sk_…. The base address is https://api.jurilia.com. There is a limit of 120 calls per minute per key, with the headers X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset on every response. A key can carry an allow-list of IPs or networks (CIDR).
Failures come as JSON with a stable code: 401 (missing or invalid key), 402 (no balance: not served and not charged), 403 (IP not allowed), 409 (a datum that decides the calculation is missing: not charged) and 429 (too many calls in a row).
Frequently asked questions
- Can I enrich my CRM with a company data API?
- Yes: search by tax ID with
GET /v1/dev/empresas, store the identifier and bring the profile withGET /v1/dev/empresas/{empresaId}: name, province, status, capital and current officers. - What data does it not bring?
- Only what the BORME publishes: no phone, email, website, headcount or turnover.
- How much does it cost to complete a thousand companies?
- A search and a profile are two queries per company: 2,000 queries, €20 of balance at 1 euro cent per query, after the trial.
- Is there an OpenAPI file to generate a client?
- Yes: the reference documents the API’s OpenAPI 3.1 contract, which can be imported into the usual tools to generate a client.
More APIs and use cases
Spanish company registry API (BORME)
Search Spanish companies by tax ID, sheet or name; get status, capital, officers and latest filing as JSON, gazette linked. 1 euro cent per query.
See the API →Company due diligence
Check a Spanish company’s status, officers and news with the official gazette linked. BORME JSON API, 1 euro cent per query.
See the API →Spanish legislation API
Ask for an article by citation (“ET 59”) on a date; get the consolidated text with its validity and official link. Versions and search. Free.
See the API →Content reviewed on 2026-10-06