Subvenciones y Ayudas Públicas España (BDNS)
Pricing
from $6.00 / 1,000 results
Subvenciones y Ayudas Públicas España (BDNS)
Extrae convocatorias de subvenciones y ayudas públicas de la Base de Datos Nacional de Subvenciones (BDNS) española: órgano, importe, sector (CNAE), región, finalidad y plazos. Fuente: API oficial abierta de la IGAE, sin proxy ni riesgo de bloqueo.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
Bluewither
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
bdns-subvenciones
Actor de Apify que lee la API oficial y abierta de la Base de Datos Nacional de Subvenciones (BDNS) española y devuelve, por cada convocatoria: título, órgano convocante, importe, sector (código CNAE), región, finalidad, plazos y enlace a la ficha pública.
Segundo actor construido con la misma plantilla que
../placsp-licitaciones: la separación
bdnsClient.js (red + paginación) / parser.js (normalización) /
main.js (orquestación + Apify SDK) es el mismo patrón, reutilizado.
Por qué este dataset
- API REST pública, JSON, sin autenticación — mantenida por la IGAE (Intervención General de la Administración del Estado). Sin anti-bot, sin captchas, sin necesidad de proxy.
- Sin datos personales: las convocatorias son de organismos públicos y personas jurídicas, no de personas físicas beneficiarias.
- Sin competencia detectada en Apify Store en el momento de construirlo.
- Mismo comprador que el actor 1 (PLACSP): consultoras, gestorías, constructoras e ingenierías que ya monitorizan licitaciones también monitorizan subvenciones — venta cruzada natural a la misma cartera de clientes potenciales.
- Filtro por sector real: el campo
sectores[].codigode la API es un código tipo CNAE, así que el input soportacnaePrefijosigual queplacsp-licitacionessoportacpvPrefijos.
Estado actual (2026-08-11)
- ✅ API investigada y verificada con peticiones reales (no solo
documentación): endpoints de listado (
/convocatorias/busqueda) y detalle (/convocatorias?numConv=X&vpd=GE) confirmados, con ejemplo real de respuesta capturado (vertest/sample-detalle.json, basado en la convocatoria BDNS 924629, Principado de Asturias). - ✅ Patrón de URL pública para el campo
enlaceverificado navegando a la ficha real:https://www.infosubvenciones.es/bdnstrans/GE/es/convocatorias/{codigoBDNS}. - ✅ Cliente, parser y orquestación implementados y probados (
npm test, 6/6 OK) contra fixtures con datos reales capturados, incluyendo un caso con campos opcionales ausentes. - ⏳ Pendiente de desplegar y probar con runs reales en Apify (mismo
motivo que en el actor 1: este entorno de desarrollo en la nube no tiene
salida de red a
infosubvenciones.es, solo a un puñado de dominios permitidos —node src/main.jsaquí falla conHTTP 403, que es el bloqueo del sandbox, no necesariamente de BDNS. Hay que confirmarlo en Apify real, igual que se hizo con PLACSP). - ⏳ Pendiente: ficha de tienda (
STORE_LISTING.md) y precio — a fijar con datos reales de volumen del primer run, como se hizo con PLACSP.
Estructura del proyecto
.actor/actor.json Metadatos del actor para Apify.actor/input_schema.json Formulario de input (fecha, filtro CNAE, límites)Dockerfile Imagen del actor (apify/actor-node:20)src/config.js Constantes de la API BDNS (URL base, cabeceras, concurrencia)src/bdnsClient.js Listado (con paginación) + detalle de convocatoriassrc/parser.js Normalización del JSON crudo -> esquema de salidasrc/main.js Orquestación: input -> listado del día -> detalle -> dataset + monitortest/parser.test.js Tests con fixtures de datos reales capturados (npm test)test/sample-detalle.json Fixture: convocatoria real (BDNS 924629)test/sample-detalle-minimo.json Fixture: caso con campos opcionales ausentes
Campos que devuelve cada convocatoria
codigoBDNS, titulo, organo (ambito, entidad, departamento),
importe.presupuestoTotal, instrumentos (tipo de ayuda), tiposBeneficiarios,
sectores (array de {codigo, descripcion}, tipo CNAE), regiones (array
de descripciones NUTS), finalidad, basesReguladoras (titulo, url),
sePublicaDiarioOficial, abierto, plazo (fechaInicioSolicitud,
fechaFinSolicitud), mecanismoRecuperacionResiliencia (fondos Next
Generation), fechaRecepcion, enlace.
Cómo probarlo
npm installnpm test # tests del parser contra datos reales capturadosnode src/main.js # ejecución completa (necesita salida a internet real)
node src/main.js en este entorno de desarrollo en la nube fallará con
HTTP 403 — es la lista blanca de salida de red de este entorno, no
necesariamente un bloqueo real de BDNS (ver "Estado actual" arriba).
Pruébalo desde tu propio ordenador o, mejor, directamente en Apify.
Input
Ver .actor/input_schema.json. Por defecto: fecha de hoy (Europe/Madrid),
sin filtro de sector CNAE, hasta 50 páginas de 100 resultados cada una.
Riesgo conocido / a vigilar
- La API no documenta un rate limit numérico, solo advierte de que puede
restringir el acceso ante "abuso manifiesto del servicio" (texto embebido
en las propias respuestas). El cliente ya throttlea las peticiones de
detalle (concurrencia limitada + pausa entre lotes, ver
src/config.js) — vigilar si esto es suficiente con volumen real. - El volumen diario real (~400 convocatorias/día a nivel nacional el
2026-08-11, verificado) implica ~400 peticiones de detalle por run sin
filtro — bastantes más peticiones por run que PLACSP. Repetir el mismo
ejercicio que se hizo con PLACSP: correr sin filtro para ver el volumen y
coste real, y con 1-2
cnaePrefijospara dimensionar el caso de uso por sector antes de fijar precio.
Siguientes pasos (en orden)
- Desplegar este actor en Apify (Web IDE, igual que PLACSP) y lanzar un run de prueba real sin filtro, para confirmar que no hay bloqueo y ver el volumen/coste real.
- Repetir con 1-2
cnaePrefijosrepresentativos (p. ej.["62"]programación informática,["41"]construcción) para calibrar el precio por sector. - Escribir
STORE_LISTING.mdcon los datos reales de volumen (mismo patrón que PLACSP: no vender "toda España cada día" si el volumen nacional es demasiado alto para el precio por ítem). - Configurar monetización pay-per-event, publicar en la Store.
- Reutilizar el mismo repo de monitorización (
placsp-licitaciones-monitor) o crear uno nuevo análogo para este actor.