DATOS ABIERTOS
Datos abiertos de legislación española.
Para desarrolladores e investigadores. Sin límites, sin registro.
PARA LLMs Y HERRAMIENTAS LEGALTECH
Integración con modelos de lenguaje
La legislación consolidada española está disponible en formato optimizado para LLMs siguiendo la convención llms.txt. Estos archivos permiten que ChatGPT, Claude, Perplexity y otras herramientas citen artículos concretos con sus identificadores oficiales.
Descripción concisa del proyecto, páginas principales y endpoints de la API. Ideal como contexto inicial para cualquier LLM. Se regenera en cada build.
Documentación extendida con referencia completa de la API, cobertura por jurisdicción y rangos normativos. Regenerado en cada build con datos reales.
EJEMPLO DE PROMPTPara que cualquier LLM cite leyes españolas con precisión:
Lee https://leyabierta.es/llms-full.txt y responde citando los identificadores BOE-A-...Sustituye los puntos suspensivos por tu pregunta legal concreta. El modelo tendrá contexto sobre cobertura, rangos y formato de identificadores.
FORMATO DEL ARCHIVO
- Estructura Markdown siguiendo la especificación llms.txt
- Cobertura: más de 12.000 leyes consolidadas, 18 jurisdicciones
- Actualización: se regenera en cada despliegue del sitio (normalmente a diario)
- Codificación: UTF-8, sin BOM
REPOSITORIO GIT
Cada ley es un archivo Markdown. Cada reforma es un commit.
El repositorio leyes contiene toda la legislación española consolidada como archivos Markdown con historial Git. Cada reforma legislativa corresponde a un commit con fecha oficial del BOE comoGIT_AUTHOR_DATE. Clona el repositorio y trabaja localmente sin depender de ninguna API.
Clonar el repositorio
git clone https://github.com/leyabierta/leyes.gitLeer una ley
cat es/BOE-A-1978-31229.mdVer el historial de reformas de una ley
git log --oneline es/BOE-A-1978-31229.mdVer el texto de una ley en un commit concreto
git show <sha> es/BOE-A-1978-31229.mdAPI REST
Acceso programático a toda la legislación
API REST pública sobre toda la legislación española consolidada. Sin autenticación, sin clave de API. Endpoint base:https://api.leyabierta.es/v1 — especificación completa enopenapi.jsony documentación interactiva enSwagger.
Buscar y listar leyes
curl 'https://api.leyabierta.es/v1/laws?q=contrato+trabajo&limit=10'Parámetros: q (texto),rank (ley, real_decreto…),jurisdiction (es, es-ct…),status (vigente, derogada),limit, offset.
Obtener una ley completa
curl 'https://api.leyabierta.es/v1/laws/BOE-A-1978-31229'Devuelve metadatos completos, artículos y lista de reformas.
Comparar dos versiones de una ley
curl 'https://api.leyabierta.es/v1/laws/BOE-A-1978-31229/diff?from=2010-01-01&to=2024-01-01'Diff unificado entre dos fechas. Útil para detectar qué artículos cambiaron en un período concreto.
Últimas reformas con resúmenes
curl 'https://api.leyabierta.es/v1/changelog?jurisdiccion=es&limit=20'Reformas recientes con resúmenes generados por IA. Filtra por jurisdicción con jurisdiccion=es-ct y por período conweeks=N (hasta 12). Pagina conoffset mientrashas_more sea true.
Historial de reformas de una ley
curl 'https://api.leyabierta.es/v1/laws/BOE-A-1978-31229/history'Línea temporal de reformas de una ley, con los títulos de los artículos afectados en cada una.
Texto de una ley en Markdown (negociación de contenido)
curl -H 'Accept: text/markdown' 'https://leyabierta.es/leyes/BOE-A-1978-31229/'Cualquier ficha de ley (/leyes/:id/) responde con Markdown limpio si envías esa cabecera, en vez del HTML de la página — pensado para que un agente cite el resumen sin parsear el DOM.
Preguntar en lenguaje natural (RAG)
curl -X POST 'https://api.leyabierta.es/v1/ask' \
-H 'Content-Type: application/json' \
-d '{"question":"¿Cuántos días de vacaciones me corresponden?"}'Respuesta en lenguaje llano fundamentada en la legislación vigente, con citas verificables a artículos concretos ([BOE-A-XXXX-XXXX, Artículo N]). Sujeto a la cuota de preguntas — ver abajo. También disponible en streaming (POST /v1/ask/stream, Server-Sent Events).
Todos los endpoints devuelven JSON (los feeds, application/xml). Sin autenticación. Límites de peticiones por IP y minuto:60 en general,30 en búsqueda (/v1/laws?q=),20 en /v1/ask y/v1/ask/stream. Cada respuesta incluye las cabecerasRateLimit / RateLimit-Policy(borrador IETF) y, por compatibilidad, X-RateLimit-Limit/Remaining/Reset. Al superarlos, 429 con Retry-After.
/v1/ask y /v1/ask/streamtienen además una cuota de preguntas por IP (cada pregunta consume crédito de IA): 2 por minuto y 10 por día, con un tope global de 200/día para todo el sitio. Al superarla, 429 con{error, reason, retryAfterSeconds, remainingToday, limitPerDay}.
Los errores siempre son JSON estructurado:{"error": "...", "code": "...", "hint": "..."}con el código HTTP correspondiente — nunca texto plano ni un cuerpo vacío.
VERSIONADO
Compatibilidad y política de deprecación
La API se versiona en la URL (/v1). Un cambio aditivo y compatible (nuevo endpoint, nuevo campo opcional) se publica sin aviso previo. Un cambio incompatible se serviría en paralelo como/v2, o la ruta afectada de/v1 se marcaría obsoleta primero.
Una ruta obsoleta se anuncia con al menos 90 días de antelación enGitHub Releasesy Discussions, y durante ese plazo sus respuestas llevan las cabecerasDeprecation: true (RFC 8594) ySunset: <fecha> (RFC 9745) con la fecha de retirada. Hoy no hay ninguna ruta obsoleta.
RSS FEEDS
Suscripción a reformas legislativas
Feeds RSS para integrar las últimas reformas en tu flujo de trabajo.
Todas las reformas procesadas, ordenadas por fecha. Compatible con cualquier lector RSS.
https://leyabierta.es/feed.xmlFeed específico para leyes que modifican múltiples normas simultáneamente, con desglose por temas.
https://leyabierta.es/feed-omnibus.xmlDESCARGAS MASIVAS
Corpus completo
Para análisis a gran escala o para construir tu propio índice.
Corpus completo en formato JSONL (una ley por línea), con metadatos y artículos. Pensado para ingesta en pipelines de datos o entrenamiento.
Snapshot de la base de datos SQLite con índice FTS5. Permite búsqueda local sin depender de la API.
El repositorio leyes en GitHub contiene todo el corpus en archivos Markdown con historial completo. Es la forma más directa de obtener los datos hoy.
CASOS DE USO
Ejemplos prácticos
Alertador de reformas en 20 líneas con jq
Obtén las últimas reformas de una jurisdicción y quédate con las que mencionan un tema en su título o resumen:
#!/bin/sh
# Últimas reformas laborales en España
curl -s 'https://api.leyabierta.es/v1/changelog?jurisdiccion=es&limit=50' \
| jq -r '
.reforms[]
| select("\(.title) \(.headline // "") \(.summary // "")"
| test("trabaj|empleo|laboral"; "i"))
| "\(.date) \(.title)"
'Indexa el corpus en tu propio RAG
Ley Abierta incluye 483.983 embeddings de artículos vigentes (Gemini embedding, 3072 dimensiones). Si prefieres construir tu propio índice vectorial, clona el repositorio leyes y extrae los artículos del frontmatter YAML:
# Extraer todos los identificadores y títulos
find leyes/es -name '*.md' | head -100 | while read -r f; do
python3 -c "
import re, sys
with open(sys.argv[1]) as fh:
content = fh.read()
match = re.search(r'---\n(.*?)---', content, re.DOTALL)
if match:
for line in match.group(1).splitlines():
if line.startswith('titulo:') or line.startswith('identificador:'):
print(line.split(':', 1)[1].strip())
" "$f"
doneLa arquitectura RAG completa de Ley Abierta (hybrid BM25 + vector search + Cohere reranking) está documentada en elcódigo fuente.
Compara dos versiones con git diff
El historial Git permite comparar cualquier par de versiones de una ley. Cada commit corresponde a una reforma oficial con fecha exacta:
cd leyes
# Ver todos los commits de la Constitución
git log --oneline es/BOE-A-1978-31229.md
# Comparar dos versiones concretas (sustituye los SHAs)
git diff abc1234 def5678 -- es/BOE-A-1978-31229.md
# Versión de una ley en una fecha concreta
git log --before="2011-01-01" --format="%H" -1 es/BOE-A-1978-31229.md \
| xargs -I{} git show {}:es/BOE-A-1978-31229.mdLICENCIA Y ATRIBUCIÓN
Uso libre, atribución obligatoria
Código fuente
El motor, la API y el sitio web están publicados bajo la licenciaAGPL-3.0. Si distribuyes una versión modificada, debes publicar el código fuente.
Ver código en GitHub →Contenido legislativo
La legislación española es de dominio público. Puedes usarla, redistribuirla y adaptarla sin restricciones de copyright.
Atribución requerida por la fuente oficial: