API
La API de datos
Los mismos proyectos que exporta a Excel, leídos desde su propio programa: su CRM, su hoja de cálculo o su cuadro de mandos. Es solo de Enterprise Plus, con una clave personal, y gasta del mismo cupo mensual de proyectos exportados que el Excel, el CSV y los informes (500 proyectos distintos al mes). No tiene precio propio.
Empezar
- Cree una clave en el buscador, en «Mi espacio», pestaña «API». Se le muestra una sola vez: cópiela entonces. Puede tener hasta tres activas y revocar cualquiera cuando quiera.
- Mándela en cada petición, en la cabecera
Authorization: Bearer sdv_…. - Pida los proyectos con
GET /api/v1/proyectos.
curl -H "Authorization: Bearer $SONDEVA_CLAVE" \
"https://renovables.sondeva.es/api/v1/proyectos?pagina=1&por_pagina=50"
Con filtros (el parámetro f es un JSON, el mismo que usa el buscador; hay que escaparlo en la dirección):
curl -G -H "Authorization: Bearer $SONDEVA_CLAVE" \
--data-urlencode 'f={"tecnologias":["eolica"],"ccaa":["Aragón"],"mw_min":20,"dias":365}' \
"https://renovables.sondeva.es/api/v1/proyectos"
La clave es de usted y abre lo que abre su cuenta: no la ponga en una página web, en un programa que corra en el navegador de otras personas ni en un repositorio. La API no admite peticiones desde otras páginas. Si se le escapa, revóquela en «Mi espacio» y cree otra: la anterior deja de abrir al instante.
Conectar su asistente de IA (MCP)
Con el conector, su asistente (Claude, Cursor o cualquiera que use el Model Context Protocol) busca proyectos y lee fichas con su clave, y le contesta con el enlace al anuncio oficial de cada uno. Es un solo fichero de Python, sin nada que instalar: sondeva-mcp.py. Corre en su ordenador; Sondeva no ve sus conversaciones, solo las mismas peticiones que haría su programa, y gasta del mismo cupo.
En Claude Code:
claude mcp add sondeva --env SONDEVA_CLAVE=sdv_… -- python /ruta/a/sondeva-mcp.py
En Claude Desktop, en claude_desktop_config.json:
{"mcpServers": {"sondeva": {"command": "python",
"args": ["/ruta/a/sondeva-mcp.py"],
"env": {"SONDEVA_CLAVE": "sdv_…"}}}}
Le da dos herramientas: buscar_proyectos (los filtros de abajo, por páginas) y ver_proyecto (un proyecto por su id). Solo leen.
Plantilla: de la API a un CSV
sondeva-a-csv.py pide todas las páginas de una búsqueda y las guarda en un CSV que Excel abre sin preguntar, con las citas de las fuentes al final. Cambie FILTROS por los suyos y ejecútelo:
SONDEVA_CLAVE=sdv_… python sondeva-a-csv.py proyectos.csv
GET /api/v1/proyectos
Lo que encaja con sus filtros, del más nuevo al más viejo, uno por anuncio (como el Excel). Sin f, todos los proyectos de todo el histórico.
| Parámetro | Qué es |
|---|---|
f | Los filtros, como un JSON (abajo). Sin él, ninguno. |
pagina | Desde 1. Por defecto, 1. |
por_pagina | De 1 a 100. Por defecto, 50. |
Los filtros (f)
| Clave | Valor |
|---|---|
tecnologias | Lista de textos: eolica, fotovoltaica, evacuacion, hibrida, almacenamiento, termosolar, centro_datos, biogas, hidrogeno. |
fases | Lista de fases: informacion_publica, evaluacion_ambiental, autorizacion_previa, autorizacion_construccion, acuerdo_ejecucion, interes_autonomico, utilidad_publica, prorroga, transmision, otro. |
estados | Lista: vivo, desistido, caducado, denegado. Vacía, todos. |
fuentes, ccaa, provincias | Listas de textos, como en el buscador («BOE», «Aragón», «Soria»). |
mw_min, mw_max | Números. La potencia es la mayor cifra del título. incluir_sin_mw (por defecto true) decide si entran los que no la dicen. |
hibridacion, repotenciacion | incluir, excluir o solo. |
cambio_de_manos | incluir o solo (los que han cambiado de dueño en el último año, según el BORME). |
clientes, relacion | Una lista de empresas y todos, clientes o nuevos: solo sus clientes o solo promotores que no lo son. |
dias | Un entero (los últimos N días) o null (todo el histórico). |
texto | Palabras que tienen que estar todas en el título, el nombre, el promotor, las provincias, los nudos, el identificador o la marca y el modelo de equipo que declara el anuncio (hasta 200 caracteres). |
La respuesta
{
"cupo": {"mes": "2026-10", "usados": 50, "limite": 500},
"total": 1234, "pagina": 1, "por_pagina": 50, "paginas": 25,
"items": [
{"id": "BOE:BOE-B-2026-12345", "fuente": "BOE", "proyecto": "Viento Sur", "fase": "informacion_publica", "mw": 49.9, "...": "..."},
{"id": "BOE:BOE-B-2026-12346", "fuera_del_cupo": true}
],
"fuentes": ["Boletín Oficial del Estado (Agencia Estatal BOE, datos abiertos)"],
"nota_ambiental": null
}
total es todo lo que encaja, no solo la página. fuentes son las citas que exige cada boletín de los que salen en la página, y hay que conservarlas si republica los datos.
GET /api/v1/proyectos/<id>
Un proyecto por su id (con los dos puntos escritos tal cual o como %3A). Devuelve {"cupo": …, "proyecto": …}, o 404 si no existe.
El cupo
- Es el mismo que el del Excel. Cada cuenta de Enterprise Plus puede sacar 500 proyectos distintos al mes entre el Excel, el CSV, los informes, la hoja viva y la API. El mes es el de Madrid y el día 1 se empieza de cero.
- Volver a sacar un proyecto no gasta. Repetir la misma petición, o pedir por la API uno que ya sacó en el Excel ese mes, no se descuenta.
- Gasta lo que sale, no lo que se busca. De una búsqueda con miles de resultados solo se descuenta la página que pide.
- Lo que ya no cabe sale como
{"id": "…", "fuera_del_cupo": true}, sin más datos.cupo.usadosycupo.limitedicen cómo va el mes.
Los campos de cada proyecto
Son los del Excel, dichos para un programa: las claves están siempre, con null donde el dato no está. Ningún dato de personas físicas: ni quien firma por la sociedad, ni administradores o apoderados, ni correos personales; eso se queda en la ficha del buscador. Lo de la empresa, su web, su correo general y su teléfono (de su propia web), sí sale.
| Campo | Qué es |
|---|---|
id | El identificador en Sondeva: boletín y anuncio, «BOE:BOE-B-2026-12345». Es el que se pasa a /api/v1/proyectos/<id>. |
fuente | El boletín (BOE, BOA, BOJA, DOCM…). |
identificador | El identificador del anuncio en su boletín. |
fecha_publicacion | La fecha del anuncio, AAAA-MM-DD. |
proyecto | El nombre del proyecto, si el anuncio lo dice. |
titulo | El título oficial del anuncio. |
enlace | El enlace al anuncio en el boletín, que es el que vale. |
fase | La fase administrativa (la clave de arriba). |
fase_nombre | La fase, con su nombre. |
estado | vivo, desistido, caducado, denegado o fuera. |
estado_nombre | El estado, con su nombre. |
estado_segun | Si lo dice otro anuncio del mismo parque, {"fuente", "fecha"}. |
tecnologias | Lista de tecnologías (las claves de arriba). |
tecnologias_nombre | Las mismas, con su nombre. |
hibridacion | true si es una hibridación. |
repotenciacion | true si es una repotenciación. |
mw | La mayor cifra de potencia del título, en MW (número). |
mw_lista | Todas las cifras de potencia del título. |
promotor | La sociedad promotora. |
cif | Su CIF. |
promotor_segun | Si el promotor lo dice otro anuncio del mismo parque, {"fuente", "fecha"}. |
provincias | Lista de provincias. |
comunidades | Lista de comunidades autónomas. |
es_cliente | true si el promotor está en la lista clientes del filtro. |
nudos | Los nudos o subestaciones por los que evacua, como los escribe el boletín. |
mw_libres_nudo | Los MW que le quedan al nudo, de la CNMC (número, o null si no se sabe). |
comparten_nudo | Con cuántos promotores distintos comparte nudo. |
detras | La sociedad que hay detrás del promotor (socio único), según el BORME. |
municipio | El municipio que nombra el anuncio. |
latitud | Solo si el anuncio trae las coordenadas del proyecto. |
longitud | Solo si el anuncio trae las coordenadas del proyecto. |
tension_kv | Las tensiones que cita el texto, en kV. |
superficie_ha | La superficie que cita el texto, en hectáreas. |
presupuesto_eur | El presupuesto que cita el texto, en euros. |
expediente | El número de expediente que cita el texto. |
motivo_rechazo | Solo de un proyecto denegado, lo que declara la resolución: dia_desfavorable (declaración de impacto ambiental desfavorable), acceso_caducado (caducidad del permiso de acceso a la red, Real Decreto-ley 23/2020) u otro (el texto no dice ninguno de los dos). null si no está denegado o no se leyó el texto. |
alegaciones_recibidas | Cuántas alegaciones recibió en la información pública, si el anuncio lo cuenta (casi siempre la declaración de impacto ambiental): {"n", "mas_de"}. Es la primera cifra que da el anuncio; null si no la da. |
colectoras | La subestación colectora que nombra el anuncio antes del nudo de la red, y cuántos otros parques de su provincia nombran la misma: [{"nombre", "parques_que_la_comparten"}]. Lista vacía si no nombra ninguna. |
equipos | La marca y el modelo que declara el anuncio de cada pieza: {"aerogeneradores": {"marca", "modelo"}, "modulos": …, "inversores": …, "estructura": …, "baterias": …}, solo las piezas que lo dicen. Es lo que el promotor declara, casi siempre «o similar»: no una compra. |
sensibilidad_eolica | La zonificación ambiental del MITECO para eólica en el punto del proyecto. |
sensibilidad_fotovoltaica | La misma, para fotovoltaica. |
red_natura | {"dentro", "espacios"}: si el punto cae en la Red Natura 2000 y en cuáles. Es un apoyo a la decisión, no una prohibición ni un permiso. |
contacto | Cómo contactar con la empresa, de su propia web: {"web", "correos", "telefonos"}. |
Los campos de lo que dice el texto del anuncio (tensión, superficie, presupuesto, expediente) valen null cuando no se localizan: no significa que el anuncio no lo diga.
Errores
Siempre un JSON con {"error": "…"}.
| Código | Cuándo |
|---|---|
400 | Un parámetro no vale: f no es un JSON, pagina o por_pagina fuera de rango. |
401 | Sin clave, con una mal escrita o inventada, o revocada. Es el mismo mensaje en los cuatro casos. |
403 | La cuenta de la clave ya no es Enterprise Plus. |
404 | El proyecto no existe, o la dirección no es de la API. |
405 | La API solo responde a GET. |
429 | Más de 60 peticiones en un minuto con la misma clave. La cabecera Retry-After dice cuántos segundos esperar. |
503 | La API no está abierta todavía o no se puede contar su cupo ahora mismo: vuelva a intentarlo más tarde. |
Cómo se lee
- Los datos salen de los boletines oficiales y del registro mercantil: una fase o un estado son los que dice el anuncio más reciente que conocemos, no una verificación de que el proyecto vaya a construirse.
- Una respuesta de la API no se guarda en ninguna memoria compartida (
Cache-Control: no-store).