FEGA — Beneficiarios de ayudas de la PAC
Publicación oficial de quién recibe los fondos agrícolas europeos FEAGA y Feader en España: beneficiario, municipio, medida e importe pagado en cada ejercicio financiero. Buscador web y descarga completa en ZIP por ejercicio.
Ficha técnica
- Formato
- ZIP con TXT delimitado por ; (ISO-8859-1)
- Registros
- ~2,1M pagos / ~593.000 beneficiarios (ejercicio 2025)
- Cobertura
- Los dos últimos ejercicios financieros (hoy, 2024 y 2025)
- Actualización
- Anual (mayo-junio)
- Licencia
- Reutilización libre citando la fuente (aviso legal del FEGA, Ley 37/2007)
- Entidad
- FEGA — Ministerio de Agricultura, Pesca y Alimentación
Descripción
El Fondo Español de Garantía Agraria (FEGA), organismo autónomo del Ministerio de Agricultura, Pesca y Alimentación, publica cada año la relación de beneficiarios de los dos fondos agrícolas europeos: el FEAGA (pagos directos y medidas de mercado) y el Feader (desarrollo rural). Es una obligación de transparencia que fijan los artículos 98 a 100 del Reglamento (UE) 2021/2116 y los artículos 58 a 62 del Reglamento de Ejecución (UE) 2022/128, y abarca a todos los organismos pagadores, tanto de las comunidades autónomas como del Estado.
Cada fila es un pago por beneficiario y operación dentro de un ejercicio financiero, que va del 16 de octubre del año anterior al 15 de octubre. Incluye el nombre o la razón social, el grupo empresarial al que pertenece (con el NIF de la matriz), la provincia y el municipio, la medida o tipo de intervención, el objetivo específico de la PAC, las fechas de las operaciones plurianuales y el desglose del importe entre FEAGA, Feader y cofinanciación nacional. No se publica el NIF del beneficiario. Además del buscador web, el FEGA ofrece un ZIP con el fichero completo de cada ejercicio; como el nombre del fichero cambia de un año a otro, conviene partir siempre de la página de descarga.
Por ley, los datos solo pueden consultarse durante dos años desde su publicación: cada primavera entra un ejercicio nuevo y sale el más antiguo, así que quien quiera una serie histórica tiene que guardar los ficheros. A quien cobra 1.250 euros o menos en el ejercicio no se le identifica por el nombre, sino por un código (ES#00001698), y si además vive en un municipio con diez beneficiarios o menos, el municipio aparece enmascarado a nivel de provincia (08XXX - XXXXX). Los importes negativos son reintegros y sanciones. Al tratarse de datos personales, su reutilización debe respetar la normativa de protección de datos.
Estructura de datos
- BENEFICIARIO — Nombre y apellidos o razón social; código ES#nnnnnnnn si cobró 1.250 euros o menos
- GRUPO_EMPRESA — NIF y nombre de la empresa matriz ("-" si no pertenece a un grupo)
- PROVINCIA — Provincia de residencia o domicilio social
- MUNICIPIO — Código INE y nombre del municipio (PPXXX - XXXXX si está enmascarado)
- MEDIDA — Código y nombre de la medida o tipo de intervención (I.1 Ayuda básica a la renta, V.1 Compromisos medioambientales...)
- OBJETIVO_ESP — Objetivos específicos de la PAC, separados por | (OE1|OE6)
- FEC_INI / FEC_FIN — Inicio y fin de la operación (solo operaciones plurianuales, dd/mm/aaaa)
- FEAGA — Importe con cargo al FEAGA (coma decimal)
- FEADER — Importe con cargo al Feader
- IMPORTECOFIN — Cofinanciación nacional de la parte Feader
- FEADER_COFIN — Feader más cofinanciación
- IMPORTE_EUROS — Importe total pagado en el ejercicio (negativo en reintegros)
Ejemplos de código
URL="https://www.fega.gob.es/sites/default/files/files/document/Beneficiarios_municipio_ejercicio_financiero-2025.zip"
# Comprobar tamaño y fecha sin descargar
curl -sI "$URL" | grep -iE "content-length|last-modified"
# Descargar (~35 MB) y ver las primeras filas convertidas a UTF-8
curl -sL -o pac_2025.zip "$URL"
unzip -p pac_2025.zip | iconv -f ISO-8859-1 -t UTF-8 | head -5 import csv
import io
import zipfile
from collections import defaultdict
from urllib.request import urlretrieve
URL = ('https://www.fega.gob.es/sites/default/files/files/document/'
'Beneficiarios_municipio_ejercicio_financiero-2025.zip')
urlretrieve(URL, 'pac_2025.zip')
total_por_provincia = defaultdict(float)
with zipfile.ZipFile('pac_2025.zip') as z:
nombre = z.namelist()[0] # un único .txt dentro del ZIP
with z.open(nombre) as raw:
texto = io.TextIOWrapper(raw, encoding='latin-1', newline='')
for fila in csv.DictReader(texto, delimiter=';'):
importe = float(fila['IMPORTE_EUROS'].replace(',', '.') or 0)
total_por_provincia[fila['PROVINCIA']] += importe
for prov, total in sorted(total_por_provincia.items(), key=lambda x: -x[1])[:10]:
print(f'{prov:<25} {total:>18,.2f} EUR') # Suma IMPORTE_EUROS por beneficiario, excluye los anonimizados (ES#...)
unzip -p pac_2025.zip | iconv -f ISO-8859-1 -t UTF-8 \
| LC_ALL=C awk -F';' 'NR>1 && $1 !~ /^ES#/ {gsub(",",".",$13); t[$1]+=$13}
END {for (b in t) printf "%.2f\t%s\n", t[b], b}' \
| LC_ALL=C sort -rn | head -20