boe
Cliente en Python de la API de datos abiertos del BOE: sumarios diarios del BOE y del BORME, legislación consolidada (búsqueda, fichas, relaciones entre normas y texto vigente artículo a artículo, con todas sus versiones) y tablas auxiliares. Sin dependencias.
pip install boe
>>> from boe import BOE
>>> boe = BOE()
>>> sumario = boe.sumario("2026-10-08")
>>> sumario.numero, len(sumario.disposiciones)
('250', 208)
>>> for d in sumario.buscar("vivienda"):
... print(d.identificador, d.titulo)
>>> ley = boe.norma("BOE-A-2015-10565")
>>> ley.titulo
'Ley 39/2015, de 1 de octubre, del Procedimiento Administrativo Común de las Administraciones Públicas.'
>>> ley.vigente, ley.fecha_vigencia
(True, datetime.date(2016, 10, 2))
>>> print(boe.articulo("BOE-A-2015-10565", 30).texto)
Artículo 30. Cómputo de plazos.
1. Salvo que por Ley o en el Derecho de la Unión Europea se disponga otro cómputo, cuando los plazos se señalen por horas...
Qué incluye
| Método | Devuelve |
|---|---|
sumario(fecha) / sumario_borme(fecha) |
Sumario del día: número, PDF y la lista de Disposicion con sección, departamento, epígrafe, enlaces y páginas, incluidos los números extraordinarios del día (numeros). Filtros de_seccion("III.") y buscar("texto"). |
buscar(...) |
Lista de Norma de la legislación consolidada, con filtros por texto, título, rango, departamento, ámbito, materia, número oficial, vigencia y fechas, orden y paginación. |
norma(id) |
Ficha de una norma: rango, departamento, fechas, vigencia, derogación, ELI. |
analisis(id) |
Materias, notas y relaciones con otras normas (deroga, modifica, cita…). |
indice(id) |
Bloques de la norma: preámbulo, títulos, artículos, disposiciones. |
bloque(id, id_bloque) / articulo(id, n) |
Texto consolidado de un bloque con todas sus versiones; .texto da la vigente y .en_fecha(fecha) la que estaba en vigor ese día. |
texto_xml(id) |
Texto consolidado completo en el XML original. |
rangos(), departamentos(), materias(), ambitos()… |
Tablas auxiliares de códigos. |
Las fechas se pueden pasar como date o como texto AAAA-MM-DD o AAAAMMDD.
Buscar legislación
>>> boe.rangos()["1300"]
'Ley'
>>> for n in boe.buscar(titulo="vivienda", rango="1300", vigentes=True, publicadas_desde="2020-01-01", limite=5):
... print(n.fecha_publicacion, n.numero_oficial, n.titulo)
>>> boe.buscar(numero_oficial="39/2015", rango="1300")[0].identificador
'BOE-A-2015-10565'
Por defecto se ordena por fecha de publicación, de la más reciente a la más antigua (orden="-fecha_publicacion").
Para condiciones más complejas, consulta acepta la sintaxis propia de la API y se combina con el resto de filtros:
>>> boe.buscar(consulta="materia@codigo:6658 or materia@codigo:4107", limite=10)
Versiones de un artículo
>>> from datetime import date
>>> art = boe.articulo("BOE-A-2015-10565", 30)
>>> [v.fecha_vigencia for v in art.versiones]
[datetime.date(2016, 10, 2)]
>>> art.en_fecha(date(2016, 1, 1)) is None # todavía no estaba en vigor
True
Errores
NoEncontrado: la información no existe, por ejemplo un domingo (no hay BOE) o un identificador erróneo.ErrorBOE: cualquier otro error de la API (parámetros incorrectos, fallo del servidor, respuesta ilegible).NoEncontradoes una subclase, y ambas tienen el código HTTP en.codigo.
Línea de comandos
boe sumario 2026-10-08 --seccion "I." --buscar vivienda
boe sumario 2026-10-08 --borme
boe buscar --titulo "procedimiento administrativo" --rango 1300 --vigentes
boe norma BOE-A-2015-10565
boe articulo BOE-A-2015-10565 30
boe rangos
Desarrollo
pip install -e ".[dev]"
pytest # sin red: usa respuestas reales guardadas en tests/datos
BOE_RED=1 pytest # además, comprueba la API real
ruff check . && ruff format --check . && mypy
Licencia y datos
Código bajo licencia MIT. Los datos son de la Agencia Estatal Boletín Oficial del Estado; su reutilización está sujeta a las condiciones de reutilización del BOE. Este proyecto no está afiliado al BOE.
Metadata
Release files for boe 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| boe-0.1.1.tar.gz | 79.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| boe-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 94.7 kB
Release files / boe-0.1.1.tar.gz
| Download URL | boe-0.1.1.tar.gz |
|---|---|
| Size | 79.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
930fa2439c257f22d3e3bc7ea309054e53b4527a9d85bb418681413a1e5f969d
|
|
BLAKE2b-256 checksum How to use checksums |
4a181555a8e1ebeff6288b55cf599fbf5229229b4bd770da5ea6025e62632023
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / boe-0.1.1-py3-none-any.whl
| Download URL | boe-0.1.1-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b4e17349521c6270e388943f046bdb00f2a98fa9da117c3be3cc81f42c06faa
|
|
BLAKE2b-256 checksum How to use checksums |
e74dbafb5ff9847889f160b2e80c645e9fe184773ffd6b7e787ff0a0cc09e8ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log