Manual de Referencia y Guía de Integración: API Ley Chile (BCN)
Biblioteca del Congreso Nacional de Chile (BCN)
Servicio Web RESTful Ley Chile
Versión del Documento: 1.0.0
Última actualización: 2026
Índice
- Introducción y Aspectos Generales
- Autenticación y Cuotas de Uso
- Estructura Base de las Peticiones y Respuestas
- Catálogo Completo de Endpoints
- Módulo 1: Consulta de Normas, Textos y Estructura
GET /servicio/39/— Catálogo / Listado General de idNormasGET /servicio/62/— Delta de Normas Nuevas o ModificadasGET /servicio/3/— Últimas Leyes PublicadasGET /servicio/7/— XML Estructurado de una Norma (Texto Completo)GET /servicio/7.2/— JSON Estructurado de una NormaGET /servicio/9/— Árbol Jerárquico de la Norma (TOC / Articulado)GET /servicio/80/— Historial de Versiones y ModificacionesGET /servicio/846/— Vinculaciones y Relaciones JurídicasGET /servicio/63/— Texto en HTML Plano
- Módulo 2: Buscadores y Búsquedas Especiales
GET /servicio/61/— Búsqueda por Palabras Clave o Frase ExactaGET /servicio/71/— Búsqueda deidPartepor Número de ArtículoGET /servicio/91/— Búsqueda de Norma por Boletín de OrigenGET /servicio/93/— Normas Modificadas por un Boletín en TrámiteGET /servicio/94/— Búsqueda de Norma por Código CVE (Diario Oficial)
- Módulo 3: Categorías, Agrupadores y Comisiones
- Módulo 4: Resúmenes y Lenguaje Ciudadano
- Módulo 1: Consulta de Normas, Textos y Estructura
- Modelos y Esquemas XSD / JSON
- Flujos de Integración Comunes (Recipes)
- Ejemplos de Implementación (TypeScript, Python, cURL)
- Términos de Uso, Buenas Prácticas y Atribución
1. Introducción y Aspectos Generales
La API de Ley Chile de la Biblioteca del Congreso Nacional (BCN) proporciona acceso programático estandarizado a la base de datos jurídica y normativa oficial de Chile: leyes, decretos, reglamentos, códigos, autos acordados, resoluciones, modificaciones históricas y tramitaciones legislativas vinculadas (Boletines).
Información del Servidor
- URL Base:
https://www.leychile.cl - Protocolo: HTTPS
- Método HTTP Principal:
GET - Formatos Soportados: XML (
application/xml), JSON (application/json) y HTML (text/html), según el endpoint.
2. Autenticación y Cuotas de Uso
Autenticación por Query String
Todas las solicitudes requieren una clave de acceso (API Key) suministrada por la BCN. Debe enviarse como parámetro secret en la URL de la consulta (query string).
GET https://www.leychile.cl/servicio/3/?secret=TU_API_KEY&cantidad=5
Seguridad: La API Key es personal, secreta e intransferible. No debe exponerse en repositorios públicos, clientes frontend sin proxy, ni logs de producción.
Límites de Consumo (Rate Limiting)
- Por hora: 1.000 solicitudes.
- Por día (24 horas): 10.000 solicitudes.
- Ampliación de cuota: Puede solicitarse formalmente a la BCN indicando justificación técnica, volumen esperado y medidas de mitigación (caching, etc.).
Errores de Autenticación
Si no se provee el parámetro secret o este es inválido, el servicio responde con código 401 Unauthorized en texto plano:
HTTP/1.1 401 Unauthorized
Content-Type: text/plain; charset=UTF-8
Favor proveer parámetro secret en query string. Ej: &secret=xxxxx
3. Estructura Base de las Peticiones y Respuestas
| Concepto | Detalle |
|---|---|
idNorma | Identificador numérico único global de una norma en el sistema de la BCN (ej: 206396 para la Ley N° 19.846 o 1213759 para la Ley N° 21.748). |
idLey | Número identificador específico de una Ley (ej: 19886 para la Ley de Compras Públicas, 21735). |
idParte | Identificador de una sección específica de la norma (artículo, título, libro, transitorio, anexo). |
idVersion | Fecha de la versión histórica en formato YYYY-MM-DD. |
tipoVersion | Entero 0 para solicitar la versión original (primera publicación en Diario Oficial). |
cve | Código de Validación Electrónica asignado por el Diario Oficial. |
boletin | Código del proyecto de ley legislativo (formato XXXXX-YY, ej: 14845-11). |
4. Catálogo Completo de Endpoints
Módulo 1: Consulta de Normas, Textos y Estructura
GET /servicio/39/ — Catálogo / Listado General de idNormas
Permite obtener la lista paginada de todos los identificadores de normas (idNorma) existentes en la base de datos de Ley Chile, con opción de filtrar por tipo de norma.
Parámetros:
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
secret | string | Sí | — | Tu API Key de la BCN. |
pagina | integer | No | 1 | Número de página a consultar. |
cantidad | integer | No | 100 | Cantidad de ítems por página (ej. 50, 100). |
tipo_norma | string | No | (Todos) | Filtrar por tipo de norma (ver lista de valores válidos). |
Valores válidos para
tipo_norma:
Ley,Decreto,Resolución,Auto Acordado,Acuerdo,Alcance,Aviso,Circular,Certificado,Constitución de la República,Código,Convenio,Decreto con Fuerza de Ley,Dictamen,Decreto Ley,Instrucción,Mensaje,Norma Antigua,Notificación,Oficio,Orden,Ordenanza,Sentencia,Sesión,Rectificación,Reunión extraordinaria,Reunión ordinaria,Carta Circular,Telegrama Circular,Norma de Carácter General,Bando,Senado Consulto,Reglamento Municipal,Constitución Política de la República.
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Normas pagina="1" cantidad="100" total="20000">
<i>206396</i>
<i>206397</i>
<i>206398</i>
</Normas>
GET /servicio/62/ — Delta de Normas Nuevas o Modificadas
Obtiene los IDs de las normas que han sido creadas o actualizadas dentro de una ventana temporal. Ideal para procesos de sincronización incremental y Webhooks/Crons.
Parámetros:
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
secret | string | Sí | — | Tu API Key de la BCN. |
desde | string(date) | No | Ayer | Fecha de inicio en formato YYYY-MM-DD. |
hasta | string(date) | No | Hoy | Fecha de fin en formato YYYY-MM-DD. |
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Ids>
<Id>206396</Id>
<Id>1213603</Id>
</Ids>
GET /servicio/3/ — Últimas Leyes Publicadas
Retorna una lista con las leyes promulgadas y publicadas más recientemente en el Diario Oficial.
Parámetros:
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
secret | string | Sí | — | Tu API Key de la BCN. |
cantidad | integer | No | 10 | Cantidad de leyes a retornar. |
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<NORMAS>
<NORMA idNorma="1213603" fecha_version="2025-05-24" nro_bcn="1213603">
<TIPOS_NUMEROS>
<TIPO_NUMERO>
<TIPO>XX1</TIPO>
<NUMERO>21735</NUMERO>
<DESCRIPCION>Ley</DESCRIPCION>
<COMPUESTO>Ley-21735</COMPUESTO>
</TIPO_NUMERO>
</TIPOS_NUMEROS>
<FECHA_PUBLICACION>2025-05-24</FECHA_PUBLICACION>
<FECHA_PROMULGACION>2025-05-14</FECHA_PROMULGACION>
<ORGANISMOS>
<ORGANISMO>MINISTERIO DE SALUD</ORGANISMO>
</ORGANISMOS>
<TEXTO>Establece normas sobre salud pública y prevención...</TEXTO>
</NORMA>
</NORMAS>
GET /servicio/7/ — XML Estructurado de una Norma (Texto Completo)
Entrega el documento XML completo de una norma legal, incluyendo metadatos, encabezado, articulado estructurado por partes y anexos.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Condicional* | ID de la norma en Ley Chile (excluyente con idLey). |
idLey | integer | Condicional* | Número de ley (ej: 19886, excluyente con idNorma). |
idVersion | string(date) | No | Versión por fecha (YYYY-MM-DD). Por defecto es la vigente. |
tipoVersion | integer | No | Si es 0, entrega la versión Original promulgada. |
esquemaTipo | string | No | Usar cNotas para incrustar notas explicativas inline en el XML. |
conNotas | string | No | Usar False para omitir completamente las notas del texto. |
* Debe enviarse idNorma o idLey, pero nunca ambos a la vez.
Ejemplo de Petición:
GET https://www.leychile.cl/servicio/7/?secret=MI_SECRET&idLey=19886&esquemaTipo=cNotas
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Norma xmlns="http://www.leychile.cl/esquemas" normaId="206396" fechaVersion="2024-01-01" derogado="no">
<Identificador>
<TiposNumeros>
<TipoNumero>
<Tipo>Ley</Tipo>
<Numero>19886</Numero>
<Descripcion>Ley</Descripcion>
<Compuesto>Ley-19886</Compuesto>
</TipoNumero>
</TiposNumeros>
<Organismos>
<Organismo>MINISTERIO DE HACIENDA</Organismo>
</Organismos>
<FechaPublicacion>2003-07-30</FechaPublicacion>
<TituloNorma>LEY DE BASES SOBRE CONTRATOS ADMINISTRATIVOS DE SUMINISTRO Y PRESTACIÓN DE SERVICIOS</TituloNorma>
</Identificador>
<EstructurasFuncionales>
<EstructuraFuncional idParte="871234" tipoParte="Artículo" numeroParte="1">
<Texto>El presente cuerpo legal regulará los contratos que celebre la Administración del Estado...</Texto>
</EstructuraFuncional>
</EstructurasFuncionales>
</Norma>
GET /servicio/7.2/ — JSON Estructurado de una Norma
Versión en formato JSON del contenido normativo (equivalente al endpoint /Navegar/get_norma_json).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Condicional* | ID único de la norma (ej: 1111237). |
idLey | integer | Condicional* | Número de ley (ej: 21735). |
cve | integer | Condicional* | Número CVE del Diario Oficial. |
idVersion | string(date) | No | Fecha de versión (YYYY-MM-DD). |
tipoVersion | integer | No | 0 para versión original. |
* Debe enviarse al menos uno: idNorma, idLey o cve.
Respuesta Exitosa (200 JSON):
{
"id_norma": 1111237,
"titulo": "ESTABLECE MARCO REGULATORIO...",
"organismo": ["MINISTERIO DE HACIENDA"],
"fecha_publicacion": "2023-12-15",
"fecha_promulgacion": "2023-12-01",
"articulos": [
{
"id_parte": "105942",
"numero": "1",
"texto": "Artículo 1.- Las disposiciones de la presente ley se aplicarán a..."
}
]
}
GET /servicio/9/ — Árbol Jerárquico de la Norma (TOC / Articulado)
Entrega el árbol funcional de la norma (Libros, Títulos, Capítulos, Párrafos, Artículos, Disposiciones Transitorias, Proyectos de Ley e Historias de la Ley vinculados) sin descargar la totalidad del texto continuo. Es ideal para construir tablas de contenidos interactivas.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Condicional* | ID único de la norma (ej: 206396). |
idLey | integer | Condicional* | Número de la ley (ej: 19886). |
idVersion | string(date) | No | Fecha de versión (YYYY-MM-DD). |
* idNorma e idLey son mutuamente excluyentes.
Respuesta Exitosa (200 XML según servicio 9.xsd):
<?xml version="1.0" encoding="utf-8"?>
<Norma xmlns="http://www.leychile.cl/esquemas">
<Identificador normaId="206396"/>
<Metadatos>
<HistoriasLey>
<HistoriaLey>
<Enlace>https://www.bcn.cl/historiadelaley/...</Enlace>
<Informacion>Historia de la Ley N° 19.886</Informacion>
<Categoria>Historia de la Ley</Categoria>
</HistoriaLey>
</HistoriasLey>
<ProyectosLey>
<ProyectoLey>
<Enlace>https://www.camara.cl/...</Enlace>
<Informacion>Proyecto Original</Informacion>
<Categoria>Proyecto de Ley</Categoria>
<NroBoletin>2382-05</NroBoletin>
</ProyectoLey>
</ProyectosLey>
</Metadatos>
<Encabezado idParte="9801" tipoParte="Encabezado"/>
<PartesHijas>
<Parte idParte="9802" tipoParte="Título" numeroParte="I" tituloParte="Disposiciones Generales">
<PartesHijas>
<Parte idParte="9803" tipoParte="Artículo" numeroParte="1">
<Identificador tipoParte="Artículo" numeroParte="1">
<Compuesto>Artículo 1°</Compuesto>
</Identificador>
</Parte>
</PartesHijas>
</Parte>
</PartesHijas>
<Promulgacion idParte="9899" tipoParte="Promulgación"/>
</Norma>
GET /servicio/80/ — Historial de Versiones y Modificaciones
Retorna la cronología completa de versiones de una norma o de un artículo específico, con enlaces a los textos históricos y el detalle de cada ley modificatoria.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Condicional* | ID de la norma (ej: 206396). |
idLey | integer | Condicional* | Número de ley (ej: 19886). |
idParte | string | No | ID de la Parte/Artículo obtenido en /servicio/9/ o /servicio/7/. |
Respuesta Exitosa (200 XML según servicio 80.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<Versiones id_norma="206396">
<Version tipoVersion="Modificada" vigenteDesde="2023-12-11" vigenteHasta="2024-12-01">
<UrlVersion>https://www.bcn.cl/leychile/navegar?idNorma=206396&idVersion=2023-12-11</UrlVersion>
<Modificatorias>
<Modificatoria idNorma="1198542" nroNorma="21634" tipoNorma="Ley" tipoModificacion="Modifica"
titulo="MODIFICA LEY DE COMPRAS PÚBLICAS..." organismo="MINISTERIO DE HACIENDA"
inicioVigencia="2023-12-11" fechaPublicacion="2023-12-11">
<UrlModificatoria>https://www.bcn.cl/leychile/navegar?idNorma=1198542</UrlModificatoria>
</Modificatoria>
</Modificatorias>
</Version>
</Versiones>
GET /servicio/846/ — Vinculaciones y Relaciones Jurídicas
Permite consultar la matriz de relaciones explícitas de una norma: normas a las que modifica, normas que la modifican, refundiciones, reglamentaciones, concordancias y rectificaciones.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Sí | ID de la norma a consultar (ej: 206396). |
Respuesta Exitosa (200 XML según servicio 846.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<Vinculaciones idNorma="206396">
<modifica_a>
<Norma idNorma="18248" idParte="0"/>
</modifica_a>
<modificada_por>
<Norma idNorma="1198542" idParte="5"/>
</modificada_por>
<refundida_por/>
<refunde_a/>
<reglamenta_a/>
<reglamentada_por>
<Norma idNorma="231422" idParte="0"/>
</reglamentada_por>
<concuerda_con/>
<rectificada_por/>
<rectifica_a/>
</Vinculaciones>
GET /servicio/63/ — Texto en HTML Plano
Retorna el contenido de la versión vigente de la norma formateado en HTML simple.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Sí | ID de la norma (ej: 206396). |
Respuesta Exitosa (200 HTML):
<div class="norma-body">
<h2>LEY NÚM. 19.886</h2>
<p>El presente cuerpo legal regulará los contratos...</p>
</div>
Módulo 2: Buscadores y Búsquedas Especiales
GET /servicio/61/ — Búsqueda por Palabras Clave o Frase Exacta
Buscador principal por relevancia del texto jurídico en el catálogo de Ley Chile.
Parámetros:
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
secret | string | Sí | — | Tu API Key de la BCN. |
cadena | string | Sí | — | Término o frase a buscar (ej: "contratos de suministro"). |
exacta | integer | No | 0 | 0 = Contiene todas las palabras. 1 = Coincidencia de frase exacta. |
cantidad | integer | No | 5 | Resultados a retornar (máximo 100). |
Respuesta Exitosa (200 XML según servicio 61.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<Normas fechaGeneracion="2026-08-14">
<Norma>
<IdNorma>206396</IdNorma>
<TiposNumeros>
<TipoNumero>
<Tipo>Ley</Tipo>
<Numero>19886</Numero>
<Descripcion>Ley</Descripcion>
<Abreviacion>L</Abreviacion>
<Compuesto>Ley-19886</Compuesto>
</TipoNumero>
</TiposNumeros>
<FechaPublicacion>2003-07-30</FechaPublicacion>
<TituloNorma>LEY DE BASES SOBRE CONTRATOS ADMINISTRATIVOS DE SUMINISTRO Y PRESTACIÓN DE SERVICIOS</TituloNorma>
<InicioDeVigencia>2003-08-29</InicioDeVigencia>
<Url>https://www.bcn.cl/leychile/navegar?idNorma=206396</Url>
</Norma>
</Normas>
GET /servicio/71/ — Búsqueda de idParte por Número de Artículo
Permite obtener el idParte de un artículo específico dentro de una norma, conociendo únicamente el idNorma y el número de artículo. Esencial para generar deep links y consultas de versiones a nivel de artículo.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idNorma | integer | Sí | ID de la norma (ej: 206396). |
nroParte | string | Sí | Número del artículo buscado (ej: 2, 15 bis). |
GET /servicio/91/ — Búsqueda de Norma por Boletín de Origen
Dado el número de un Boletín legislativo de origen (ej: 14845-11), entrega la norma resultante (Ley o Decreto promulgatorio) con las URLs a su versión original y versión actualizada.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
boletin | string | Sí | Número de Boletín legislativo (ej: 14845-11). |
Respuesta Exitosa (200 XML según servicio 91.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<UrlsNorma id_norma="1213759" norma="Ley 21748" fecha_publicacion="2025-05-29" nro_boletin="14845-11">
<status>ok</status>
<VersionOriginal>https://www.bcn.cl/leychile/navegar?idNorma=1213759&tipoVersion=0</VersionOriginal>
<VersionActualizada>https://www.bcn.cl/leychile/navegar?idNorma=1213759</VersionActualizada>
<mensaje></mensaje>
</UrlsNorma>
GET /servicio/93/ — Normas Modificadas por un Boletín en Trámite
Permite anticipar qué leyes serán impactadas por un proyecto de ley actualmente en trámite en el Congreso Nacional.
Nota: Esta información es curada por el equipo de análisis legislativo de la BCN durante la tramitación del boletín. Una vez promulgada la ley, se recomienda utilizar el
/servicio/846/.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
boletin | string | Sí | Número del boletín en trámite (ej: 17328-07). |
Respuesta Exitosa (200 JSON):
{
"total": 1,
"normas": [
{
"id_norma": 206396,
"identificacion": "Ley 19886",
"title": "LEY DE BASES SOBRE CONTRATOS ADMINISTRATIVOS...",
"organismo": ["MINISTERIO DE HACIENDA"],
"fechaPromulgacion": "2003-07-11",
"fechaPublicacion": "2003-07-30",
"url": "https://www.bcn.cl/leychile/navegar?idNorma=206396"
}
]
}
GET /servicio/94/ — Búsqueda de Norma por Código CVE (Diario Oficial)
Resuelve una norma a partir del Código de Validación Electrónica (CVE) impreso en el Diario Oficial.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
cve | integer | Sí | Número CVE del documento oficial (ej: 2653997). |
Respuesta Exitosa (200 JSON):
{
"numero_cve": 2653997,
"id_norma": 1213759,
"identificacion": "Ley 21748",
"title": "ESTABLECE SUBSIDIO A LA TASA DE INTERÉS HIPOTECARIA PARA LA ADQUISICIÓN DE VIVIENDAS NUEVAS...",
"organismo": [
"MINISTERIO DE HACIENDA"
],
"fechaPromulgacion": "2025-05-23",
"fechaPublicacion": "2025-05-29",
"actualizada": false,
"url": "https://www.bcn.cl/leychile/navegar?idNorma=1213759",
"url_original": "https://www.bcn.cl/leychile/navegar?idNorma=1213759&tipoVersion=0"
}
Módulo 3: Categorías, Agrupadores y Comisiones
GET /servicio/30/ — Categorías Temáticas BCN
Lista las grandes categorías editoriales y temáticas configuradas en Ley Chile.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Categorias>
<Categoria idCategoria="2">
<Descripcion>Comisiones Legislativas</Descripcion>
<Observacion>Normas agrupadas por comisión parlamentaria</Observacion>
</Categoria>
</Categorias>
GET /servicio/31/ — Agrupadores por Categoría
Retorna los sub-agrupadores asociados a una categoría obtenida en el /servicio/30/.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
agr | integer | Sí | ID de la categoría (ej: 2). |
GET /servicio/37/ — Normas de un Agrupador
Obtiene la lista de normas asignadas a un agrupador específico (idAgrupador).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
idAgrupador | integer | Sí | ID del agrupador obtenido en /servicio/31/. |
GET /servicio/92/ — Normas de Comisiones Legislativas (Cámara)
Obtiene las normas de consulta frecuente categorizadas por las comisiones legislativas de la Cámara de Diputadas y Diputados.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
secret | string | Sí | Tu API Key de la BCN. |
id | integer | Sí | ID de la comisión legislativa (ej: 1032 para Comisión de Hacienda). |
Referencia: Los IDs de comisiones se obtienen en el portal Ley Chile en
https://www.bcn.cl/leychile/consulta/agrupadores?tipCat=2.
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Normas comision="Hacienda">
<Norma>
<IdNorma>206396</IdNorma>
<Norma>Ley 19886</Norma>
<FechaPublicacion>2003-07-30</FechaPublicacion>
<Organismo>MINISTERIO DE HACIENDA</Organismo>
<Materia>Compras Públicas y Contratación del Estado</Materia>
<Url>https://www.bcn.cl/leychile/navegar?idNorma=206396</Url>
</Norma>
</Normas>
Módulo 4: Resúmenes y Lenguaje Ciudadano
GET /servicio/66/ — Resúmenes Ciudadanos e Historia de la Ley
Entrega resúmenes en lenguaje claro y accesible elaborados por la BCN (Guías Legales / Ley Fácil), junto con el enlace directo a la historia formativa de la ley.
Parámetros:
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
secret | string | Sí | — | Tu API Key de la BCN. |
idNorma | integer | No | — | Filtrar por una norma específica. |
n | integer | No | 1 | Número de página. |
i | integer | No | 10 | Cantidad de resultados por página. |
o | integer | No | 1 | Criterio de orden: <br> 1 = Fecha publicación (más reciente primero)<br> 2 = Fecha publicación (más antigua primero)<br> 3 = Número de ley (descendente)<br> 4 = Título (alfabético A-Z). |
t | integer | No | — | Total precalculado de registros (acelera la consulta en paginación continua). |
Respuesta Exitosa (200 XML):
<?xml version="1.0" encoding="UTF-8"?>
<Resultados total="1400" ahora="10" pagina="1" items_x_pag="10">
<fila>
<id_norma>206396</id_norma>
<nro_norma>19886</nro_norma>
<tiutlo_corto>Ley de Compras Públicas</tiutlo_corto>
<titulo_largo>LEY DE BASES SOBRE CONTRATOS ADMINISTRATIVOS DE SUMINISTRO Y PRESTACIÓN DE SERVICIOS</titulo_largo>
<titulo_ciudano>Guía legal sobre compras del Estado</titulo_ciudano>
<fecha_publicacion>2003-07-30</fecha_publicacion>
<historia_ley>https://www.bcn.cl/historiadelaley/nc/historia-de-la-ley/5507/</historia_ley>
<resumen>Establece que las compras y contrataciones de bienes y servicios que realizan los organismos públicos deben regirse por principios de transparencia, libre concurrencia e igualdad...</resumen>
</fila>
</Resultados>
5. Modelos y Esquemas XSD / JSON
Los esquemas XML formales (.xsd) correspondientes a las respuestas de la BCN se encuentran disponibles en el repositorio en soykoda/public/:
servicio 7 XSD por defecto.xsd: Estructura canónica del documento normativo (<Norma>,<Identificador>,<EstructurasFuncionales>,<Parte>,<Texto>).servicio 7 XSD para esquemaTipo=cNotas.xsd: Esquema extendido con notas al pie y anotaciones modificatorias incrustadas de forma inline.servicio 9 ver XSD de la respuesta.xsd: Estructura del árbol jerárquico (NormaType,ArticuloType,MetadatosType,HistoriasLey,ProyectosLey).servicio 61.xsd: Resultado de búsquedas (Normas,Norma,TiposNumeros,InicioDeVigencia).servicio 80.xsd: Historial de versiones y modificaciones (Versiones,Version,Modificatorias,Modificatoria).servicio 846.xsd: Grafo de vinculaciones (Vinculaciones,modifica_a,modificada_por,reglamentada_por, etc.).servicio 91.xsd: Mapeo de Boletín legislativo a URLs de la norma (UrlsNorma,VersionOriginal,VersionActualizada).
6. Flujos de Integración Comunes (Recipes)
Flujo A: Obtener el texto vigente completo de una ley por su número
- Consumir
GET /servicio/7/?secret=KEY&idLey=19886. - Parsear el XML resultante o transformarlo a Markdown/HTML según necesidad.
Flujo B: Sincronización Diaria de Modificaciones Normativas
- Ejecutar diariamente un Cron job a
GET /servicio/62/?secret=KEY&desde=YYYY-MM-DD&hasta=YYYY-MM-DD. - Para cada
Idretornado en la lista:- Consultar
GET /servicio/80/?secret=KEY&idNorma={Id}para verificar qué cambió. - Descargar la nueva versión con
GET /servicio/7/?secret=KEY&idNorma={Id}.
- Consultar
Flujo C: Construcción de una Tabla de Contenidos (TOC) Interactiva
- Consumir
GET /servicio/9/?secret=KEY&idLey=19886. - Recorrer el árbol
<PartesHijas>extrayendoidParte,tipoParteynumeroParte. - Al hacer clic en un artículo específico:
- Descargar únicamente la versión de esa parte o hacer scroll a la sección identificada.
Flujo D: Búsqueda Semántica o por Palabras Clave
- Ejecutar
GET /servicio/61/?secret=KEY&cadena=probidad+administrativa&exacta=0&cantidad=10. - Presentar al usuario los resultados con su
TituloNorma,FechaPublicaciony enlace aUrl.
7. Ejemplos de Implementación (TypeScript, Python, cURL)
TypeScript / Node.js (Cliente Modular)
/**
* Cliente para la API de Ley Chile (Biblioteca del Congreso Nacional)
*/
export class BcnLeyChileClient {
private readonly baseUrl = 'https://www.leychile.cl';
private readonly apiKey: string;
constructor(apiKey: string) {
if (!apiKey) {
throw new Error('Se requiere una API Key válida de la BCN.');
}
this.apiKey = apiKey;
}
private async fetchEndpoint<T = string>(endpoint: string, params: Record<string, any> = {}, isJson = false): Promise<T> {
const url = new URL(`${this.baseUrl}${endpoint}`);
url.searchParams.set('secret', this.apiKey);
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined && value !== null) {
url.searchParams.set(key, String(value));
}
});
const response = await fetch(url.toString(), {
headers: {
'Accept': isJson ? 'application/json' : 'application/xml, text/plain, */*'
}
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Error API BCN (${response.status}): ${errorText}`);
}
if (isJson) {
return response.json() as Promise<T>;
}
return response.text() as Promise<T>;
}
/** Obtiene las últimas leyes publicadas */
async getUltimasLeyes(cantidad = 10): Promise<string> {
return this.fetchEndpoint('/servicio/3/', { cantidad });
}
/** Obtiene el XML completo de una ley por número o idNorma */
async getNormaXml(options: { idNorma?: number; idLey?: number; esquemaTipo?: 'cNotas' }): Promise<string> {
return this.fetchEndpoint('/servicio/7/', options);
}
/** Obtiene el JSON de una norma */
async getNormaJson(options: { idNorma?: number; idLey?: number; cve?: number }): Promise<any> {
return this.fetchEndpoint('/servicio/7.2/', options, true);
}
/** Busca normas por texto */
async buscarNormas(cadena: string, exacta = 0, cantidad = 5): Promise<string> {
return this.fetchEndpoint('/servicio/61/', { cadena, exacta, cantidad });
}
/** Obtiene normas modificadas por un boletín legislativo */
async getNormasPorBoletin(boletin: string): Promise<any> {
return this.fetchEndpoint('/servicio/93/', { boletin }, true);
}
}
Python 3 (Requests)
import requests
from typing import Optional, Dict, Any
class BcnLeyChileAPI:
BASE_URL = "https://www.leychile.cl"
def __init__(self, api_key: str):
self.api_key = api_key
def _get(self, endpoint: str, params: Optional[Dict[str, Any]] = None, is_json: bool = False):
query_params = {"secret": self.api_key}
if params:
query_params.update(params)
response = requests.get(f"{self.BASE_URL}{endpoint}", params=query_params)
response.raise_for_status()
return response.json() if is_json else response.text
def get_norma_xml(self, id_ley: Optional[int] = None, id_norma: Optional[int] = None):
"""Descarga el XML de una norma."""
params = {}
if id_ley:
params["idLey"] = id_ley
elif id_norma:
params["idNorma"] = id_norma
else:
raise ValueError("Debe indicar id_ley o id_norma")
return self._get("/servicio/7/", params=params)
def buscar(self, texto: str, exacta: int = 0, cantidad: int = 5):
"""Busca normas por relevancia."""
return self._get("/servicio/61/", params={"cadena": texto, "exacta": exacta, "cantidad": cantidad})
def get_norma_por_cve(self, cve: int):
"""Consulta una norma por su código CVE."""
return self._get("/servicio/94/", params={"cve": cve}, is_json=True)
cURL
# 1. Obtener las últimas 5 leyes
curl -G "https://www.leychile.cl/servicio/3/" \
--data-urlencode "secret=TU_API_KEY" \
--data-urlencode "cantidad=5"
# 2. Descargar XML de la Ley 19.886 con notas al pie
curl -G "https://www.leychile.cl/servicio/7/" \
--data-urlencode "secret=TU_API_KEY" \
--data-urlencode "idLey=19886" \
--data-urlencode "esquemaTipo=cNotas" \
-o ley_19886.xml
# 3. Consultar JSON de una norma por código CVE
curl -G "https://www.leychile.cl/servicio/94/" \
--data-urlencode "secret=TU_API_KEY" \
--data-urlencode "cve=2653997" \
-H "Accept: application/json"
8. Términos de Uso, Buenas Prácticas y Atribución
- Atribución Obligatoria: En cualquier aplicación o plataforma que exponga datos derivados de este servicio, se debe incluir la siguiente mención visible:
"Fuente: Ley Chile - Biblioteca del Congreso Nacional de Chile (Fecha de consulta: DD/MM/AAAA)"
- Prohibición de Scraping Masivo y Replicación: No está permitida la extracción no autorizada de la base de datos completa con el propósito de crear un repositorio espejo sin convenio explícito con la BCN.
- Entrenamiento de Modelos de Inteligencia Artificial: El entrenamiento masivo, preentrenamiento o ajuste fino (fine-tuning) de modelos de IA con datos directos de la API requiere de una autorización expresa otorgada por la Biblioteca del Congreso Nacional.
- Caché y Eficiencia: Se recomienda implementar estrategias de almacenamiento en caché local (Redis, SQLite, Postgres) para almacenar versiones consolidadas de leyes estables y evitar sobrecargar los servidores públicos.