El método: publicamos el método, no los datos
Todo sale de la API pública de la BDNS y cualquiera lo puede repetir. Lo explicamos paso a paso porque los datos de personas los borra la propia BDNS al acabar el año siguiente al de la concesión (Real Decreto 130/2019, art. 7.8). Si alguien quiere mirarlos, tiene que hacerlo a tiempo.
- Bajar las concesiones día a día (por fecha de concesión; con páginas de 10.000):
https://www.infosubvenciones.es/bdnstrans/api/concesiones/busqueda?page=0&pageSize=10000&fechaDesde=01/12/2025&fechaHasta=01/12/2025
La respuesta dice cuántas hay ese día (totalElements). Se siguen pidiendo páginas (page=1, 2…) hasta tenerlas todas. - Separar a las personas físicas. Su beneficiario viene con el DNI tapado (
***1234**) o el NIE (****1234*). Cada concesión trae además unidPersona: el número con el que la BDNS identifica al beneficiario. Es el mismo en todas sus ayudas. - Agrupar por convocatoria y por
idPersona: cuántas concesiones tiene cada persona en cada convocatoria y cuánto suman. - Comparar a cada persona con los demás de su convocatoria (personas y entidades, sin contarla a ella). Solo se miran convocatorias con al menos 20 beneficiarios.
- A1 cobra fuera de la cola: su total es al menos 3 veces el percentil 99 de los demás y 10 veces su mediana.
- A2 repite donde nadie repite: tiene al menos 10 veces más concesiones que la mediana, más que el percentil 99, y su dinero también pasa del percentil 99.
- Solo cuenta si su total en esa convocatoria es de 10.000 € o más.
- No cuentan los descuentos por billete de avión o barco (residentes y familias numerosas): repetir ahí es viajar.
Lo que hemos probado y no sirve, para que nadie pierda el tiempo: contar ayudas en bruto (las mensuales y las de la PAC dan muchas filas a gente corriente), contar organismos (los agricultores de la DANA cobran de diez administraciones a la vez, y es lo normal) y compararse con la mediana (la PAC se paga por hectárea, así que una gran explotación siempre está muy por encima).
Lo que no hacemos. No guardamos el idPersona ni el nombre. Cada persona pasa a ser un código que sale de una clave secreta que solo conoce el programa que baja los datos. Con el código no se vuelve a la persona, ni siquiera nosotros. No damos importes exactos, sino bandas que comparten al menos 20 personas de la convocatoria. Si la convocatoria no llega a 20, no sale importe. Tampoco damos fechas, solo el año. De lo que la BDNS ya borró, solo guardamos totales.
El código, con sus tests: boe/bdns_entera.py (bajada y seudónimo), boe/bdns_alarma.py (la comparación) y boe/bdns_ficha.py (las bandas).