Bien estructurado, pero sólo en pequeñas porciones.

España aún no estaba planificada directamente, pero poder llenar un gran espacio vacío en el mapa de una sola vez fue bastante motivador.

La primera investigación mostró que la integración a través de API es relativamente sencilla y está bien documentada.
AEMET tiene un portal OpenData y podría empezar a trabajar ahora mismo. Los datos están claramente estructurados, pero las claves API, las solicitudes de dos pasos, los períodos de tiempo reducidos y un límite de tasa ajustado hicieron que la importación histórica fuera principalmente una cuestión de tiempo.

la primera impresion

Una API documentada: inicialmente parecía simple

Para España, quería traer los datos meteorológicos y climáticos a Crónica Climática a través del servicio de datos abiertos de AEMET. A primera vista, parecía alentadoramente sencillo, porque ya estaba todo ahí: una API REST documentada, identificadores de estaciones y valores climáticos mensuales. Exactamente el tipo de oferta de datos con la que inicialmente asumo que un país puede conectarse de manera comparativamente directa.

La implementación real tampoco fue entonces el problema. Más difícil fue el acceso y, sobre todo, la lentitud con la que se puede construir un inventario histórico de unas 900 estaciones meteorológicas. Una fuente fundamentalmente bien estructurada se convirtió así en una exportación que no se adaptaba bien a los datos históricos, porque el progreso sólo era posible en pequeñas porciones.
Busqué otras opciones para obtener los datos, pero parece que solo existe la API con los valores mensuales.

Acceso y estructura API

Cada conjunto de datos comienza con una clave y un desvío.

Sin una clave API registrada, casi nada funciona con AEMET OpenData. Tuve que registrarme en el servicio, solicitar una clave personal y enviarla con las solicitudes. La API funciona en dos pasos: la primera respuesta inicialmente contiene solo una referencia a una segunda URL. Sólo allí residen los datos mensuales reales. Técnicamente, esta es una solución limpia, pero para una descarga histórica grande prácticamente significa two requests per data window. No pude encontrar una descarga masiva para todas las estaciones y años de esta serie; por lo tanto, los datos debían consultarse estación por estación y período por período. Datos Abiertos de AEMET era mi fuente de datos real, mientras la documentación API definió el proceso técnico.

El siguiente límite está integrado directamente en el intervalo de tiempo de una solicitud: una sola solicitud puede cubrir como máximo 36 meses. Por lo tanto, para series meteorológicas históricas largas, tuve que dividir las consultas en ventanas de tres años, omitir períodos vacíos y luego fusionar las partes individuales nuevamente.

Además, el inventario de la estación no proporciona un año de inicio para cada estación. Si una emisora ​​comienza muy temprano o mucho más tarde, sólo se descubre durante la descarga. En lugar de consultar ciegamente ventana tras ventana desde el año 1700 para cada estación, primero busco exponencialmente el período más antiguo en el que realmente existen datos.

Con poco más de 900 estaciones, los pequeños desvíos técnicos se acumulan rápidamente. Por lo tanto, lo importante no era sólo poder recuperar datos, sino generar la menor cantidad posible de solicitudes vacías o innecesarias.

El verdadero cuello de botella

40 solicitudes por minuto y muchas claves API

AEMET limita las descargas a 40 solicitudes por minuto y por clave.

Para un funcionamiento en curso, en el que sólo me quedan unos pocos meses, esto no sería un gran problema.
Para una construcción histórica única con un poco más de 900 estaciones, ventanas de tres años, búsqueda del año de inicio y recuperación en dos pasos de datos de referencia y reales, este límite se convierte rápidamente en el factor decisivo.

Con una sola clave, la descarga del inventario histórico completo habría durado muchos días. Por eso utilicé 8 claves API en paralelo. Datos Abiertos de AEMET permaneció limitado a las 40 solicitudes por minuto prescritas para cada clave individual.

En total, teóricamente eran posibles hasta 320 solicitudes por minuto.
Ésa fue mi solución pragmática para construir el inventario histórico una vez, a una escala razonable.

Soy consciente de que el uso de varias claves puede parecer una solución alternativa al límite de velocidad. Mi objetivo, sin embargo, no era cargar mucho el servicio de forma duradera o extraer los datos comercialmente en masa, sino reunir el inventario histórico para Crónica Climática una vez, en su totalidad. Una vez que este inventario base esté en su lugar, sólo se necesitan pequeñas descargas de seguimiento para los nuevos años.

Idioma y estado actual

Algunos pasos de traducción adicionales, pero los datos están en línea

Más allá de las limitaciones técnicas, el idioma volvió a ser un pequeño punto de fricción para mí. La documentación, la interfaz y también muchas etiquetas dentro de la API están en español. Por supuesto, hoy en día casi todo se puede traducir rápidamente, pero durante la investigación, cada paso adicional de traducción supone una pequeña interrupción en el flujo. Cuando trabaja con puntos finales, parámetros y campos de respuesta al mismo tiempo, esto se nota más de lo que esperaba.

Aún así, esto es una queja a un alto nivel. Agradezco a AEMET que los datos climáticos y de las estaciones meteorológicas se proporcionen de forma tan estructurada y abierta. El registro, la clave API, las respuestas de dos pasos y los pequeños periodos de tiempo hacen que el camino sea un poco más engorroso, pero la documentación fue utilizable para mis propósitos y el acceso se pudo establecer comparativamente rápido.

Mi descargador y el mapeador, en cierto sentido los dos motores detrás de Crónica Climática, fueron "españoles" en unas pocas horas 🇪🇸 ¡Olé! :D

Fuentes y recursos

AEMET OpenData y documentos técnicos

Estado:18.08.2026