Skip to main content

BDNS Fetch

PyPI version License: GPL v3 Python 3.11+

🇬🇧 English version

Cliente Python y CLI para la API REST de la BDNS. Cubre los 29 endpoints disponibles con soporte completo de parámetros, paginación automática y reintentos configurables.

Instalación

pip install bdns-fetch

o desde el repositorio:

git clone https://github.com/cruzlorite/bdns-fetch.git
cd bdns-fetch
pip install .

Uso

Cliente Python

from bdns.fetch.client import BDNSClient

client = BDNSClient()

for org in client.fetch_organos(idAdmon="C"):
    print(org["codigo"], "-", org["descripcion"])

Búsqueda paginada:

resultados = client.fetch_ayudasestado_busqueda(
    descripcion="investigación",
    pageSize=1000,
    num_pages=5,
    from_page=0,
)
for item in resultados:
    print(item)

Descarga de documentos binarios:

pdf_bytes = client.fetch_convocatorias_pdf(id=608268, vpd="A07")
with open("convocatoria.pdf", "wb") as f:
    f.write(pdf_bytes)

Configuración del cliente:

client = BDNSClient(
    max_retries=5,    # reintentos por petición fallida
    wait_time=2,      # segundos entre reintentos
    max_workers=10,   # hilos concurrentes para paginación
    return_raw=False, # True devuelve objetos de página completos
)

CLI

# Ver ayuda
bdns-fetch --help
bdns-fetch <comando> --help

# Guardar a fichero
bdns-fetch --output-file organos.jsonl organos --idAdmon C

# Búsqueda con filtros
bdns-fetch --output-file resultado.jsonl ayudasestado-busqueda \
    --descripcion "innovación" --fechaDesde "2023-01-01" --fechaHasta "2024-12-31"

# Paginación
bdns-fetch concesiones-busqueda --num-pages 0 --pageSize 10000

# Salida a stdout (por defecto)
bdns-fetch convocatorias-ultimas | jq .

Opciones globales:

Opción Alias Por defecto Descripción
--output-file -o - (stdout) Fichero de salida en formato JSONL
--max-retries -mr 3 Reintentos por petición fallida
--wait-time -wt 2 Segundos entre reintentos
--max-workers -mw 5 Hilos concurrentes para paginación
--return-raw -rr false Devolver objetos de página completos
--verbose -v false Log detallado de peticiones HTTP

Comandos disponibles

Comando Método cliente
actividades fetch_actividades
sectores fetch_sectores
regiones fetch_regiones
finalidades fetch_finalidades
beneficiarios fetch_beneficiarios
instrumentos fetch_instrumentos
reglamentos fetch_reglamentos
objetivos fetch_objetivos
organos fetch_organos
organos-agrupacion fetch_organos_agrupacion
organos-codigo fetch_organos_codigo
organos-codigoadmin fetch_organos_codigoadmin
convocatorias fetch_convocatorias
convocatorias-busqueda fetch_convocatorias_busqueda
convocatorias-ultimas fetch_convocatorias_ultimas
convocatorias-documentos fetch_convocatorias_documentos
convocatorias-pdf fetch_convocatorias_pdf
concesiones-busqueda fetch_concesiones_busqueda
ayudasestado-busqueda fetch_ayudasestado_busqueda
minimis-busqueda fetch_minimis_busqueda
grandesbeneficiarios-anios fetch_grandesbeneficiarios_anios
grandesbeneficiarios-busqueda fetch_grandesbeneficiarios_busqueda
planesestrategicos fetch_planesestrategicos
planesestrategicos-busqueda fetch_planesestrategicos_busqueda
planesestrategicos-documentos fetch_planesestrategicos_documentos
planesestrategicos-vigencia fetch_planesestrategicos_vigencia
partidospoliticos-busqueda fetch_partidospoliticos_busqueda
sanciones-busqueda fetch_sanciones_busqueda
terceros fetch_terceros

Buenas prácticas (oficiales)

Según el documento oficial "Buenas prácticas API SNPSAP":

  • Límite de peticiones: máximo 10 peticiones GET/segundo por IP. bdns-fetch lo aplica internamente con un limitador tipo token-bucket compartido entre todas las peticiones HTTP, independientemente de --max-workers.
  • Sincronización incremental: usa fechaRegInicio/fechaRegFin (fecha de registro) para detectar altas/cambios, no fechaConcesion/fechaDesde/fechaHasta (fecha de concesión) — son filtros independientes. Disponible en concesiones-busqueda, ayudasestado-busqueda, minimis-busqueda, partidospoliticos-busqueda.
  • terceros: el documento señala este endpoint como redundante — concesiones-busqueda ya devuelve toda la información del beneficiario. Usa concesiones-busqueda y evita terceros.

Limitaciones

  • No implementa los endpoints de exportación (CSV/XLSX) ni los de configuración del portal.
  • Los resultados de paginación concurrente no están ordenados por número de página.

Licencia y enlaces

Para más información sobre los datos disponibles, consulta el portal oficial.


bdns-fetch es software libre. ¡Las contribuciones son bienvenidas!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bdns_fetch-1.3.0.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bdns_fetch-1.3.0-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file bdns_fetch-1.3.0.tar.gz.

File metadata

  • Download URL: bdns_fetch-1.3.0.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bdns_fetch-1.3.0.tar.gz
Algorithm Hash digest
SHA256 2a4d75295df33c9168f8c1bcf35faec9d949dfcd62d32e830e3e8f39a84520d7
MD5 fc5a0364032c977fa53fcdc76bfb441b
BLAKE2b-256 8e6ba07c4b20057c798bf8f8f86506008c67877ec393ede80e1c0550b4b76d68

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdns_fetch-1.3.0.tar.gz:

Publisher: ci-cd.yml on cruzlorite/bdns-fetch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bdns_fetch-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: bdns_fetch-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bdns_fetch-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fcb6fd0337b0fdf5a181f62e77fd62b8e28210a9237f4217170937cf8630cb9
MD5 c3fd5bff838d35a345e9bac7b8492296
BLAKE2b-256 afc91e274f17db5bcc3a5e1c75e85ec512f20f526eac2f5dda81809463080d1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdns_fetch-1.3.0-py3-none-any.whl:

Publisher: ci-cd.yml on cruzlorite/bdns-fetch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page