Datos abiertos
API pública de datos ODS
Conecta tus aplicaciones, investigaciones o webs colaboradoras directamente con los datos públicos y aprobados de la plataforma ODS. La API es de solo lectura, está documentada y devuelve respuestas en formato JSON.
JSON
REST
Datos aprobados
Cómo conectarte en 3 pasos
-
1
Solicita una API key
Las claves se entregan a entidades y personas identificadas. Pídela y te asignaremos los permisos (scopes) adecuados. Solicita tu API key
-
2
Construye tu petición
Usa el generador de abajo para elegir el endpoint, rellenar los parámetros y obtener la URL lista para usar.
-
3
Autentica y consume
Envía tu clave en la cabecera Authorization. La API responde en JSON, con paginación y metadatos.
Generador de enlaces de la API
Selecciona un recurso, ajusta los parámetros y copia la URL o el comando cURL.
Se usa en tu navegador para el ejemplo de cURL y, si pulsas «Probar», se envía a esta misma API para ejecutar la consulta. Si el acceso público está activo, puedes probar sin clave.
El generador interactivo necesita JavaScript. Más abajo tienes la referencia completa de endpoints.
Referencia de endpoints
URL base: https://odslocal.es/wp-json/bdw/v1/ods-api
| Endpoint | Descripción |
|---|---|
GET /meta |
Versión del catálogo, años disponibles y conteos públicos. |
GET /catalog?group=ODS1 |
Catálogo público de indicadores. |
GET /ods-groups |
Objetivos ODS con su clave y nombre en español. |
GET /territories?type=municipality&search=Vigo |
Territorios activos (paginado). |
GET /territories/{id} |
Un territorio con su jerarquía. |
GET /territories/ine/{code_ine} |
Un territorio por su código INE. |
GET /measurements?territory_id=123&year=2024 |
Mediciones aprobadas de un territorio. |
GET /measurements?indicator_key=...&year=2024 |
Conjunto de datos de un indicador y año. |
GET /map?indicator_key=...&year=2024 |
Datos listos para mapa, indexados por código INE. |
GET /compare?ids=1,2,3&indicator_key=...&year=2024 |
Compara hasta 50 territorios. |
GET /evolution?territory_id=123&indicator_key=... |
Serie temporal (años → valor) de un indicador en un territorio. |
GET /aggregate?territory_id=10&indicator_key=...&year=2024 |
Media del indicador entre los municipios hijos de un territorio. |
Formato de respuesta
Todas las respuestas son JSON con la misma estructura y nombres de campo en español:
{
"exito": true,
"datos": [ /* … */ ],
"meta": {
"generado_en": "2024-05-01 09:00:00",
"conteo": 25,
"total": 313,
"total_paginas": 7,
"pagina": 1,
"por_pagina": 50,
"limite_peticiones": 120,
"peticiones_restantes": 119
}
}
Campos de la envoltura
| Campo | Descripción |
|---|---|
exito |
Booleano: indica si la petición fue correcta. |
datos |
Carga útil: objeto o lista de resultados. |
meta.generado_en |
Fecha/hora UTC de generación. |
meta.conteo |
Número de elementos devueltos en esta respuesta. |
meta.total / total_paginas / pagina / por_pagina |
Datos de paginación (en listados). |
meta.limite_peticiones / peticiones_restantes |
Cupo de peticiones y cuántas te quedan. |
Campos habituales en los datos
| Campo | Descripción |
|---|---|
id_territorio |
ID del territorio. |
territorio |
Nombre del territorio. |
codigo_ine |
Código INE del territorio. |
clave_indicador |
Clave del indicador ODS. |
grupo_ods |
Grupo/objetivo ODS (p. ej. ODS1). |
anio |
Año de la medición. |
valor / valor_texto |
Valor numérico o textual de la medición. |
fuente |
Fuente del dato. |
indicador |
Metadatos del indicador (código, indicador, unidad, objetivo). |
Paginación
Los listados aceptan los parámetros page y per_page. El número de resultados por página puede estar limitado en el modo de acceso público.
Límites de uso
Cada respuesta incluye las cabeceras X-RateLimit-Limit y X-RateLimit-Remaining.
Si superas el cupo recibirás un código HTTP 429. Limita la frecuencia y cachea las respuestas siempre que puedas.
Errores
Los errores devuelven un código HTTP adecuado (400, 401, 403, 404, 429, 503) y un cuerpo JSON con esta forma:
{
"code": "rate_limit_exceeded",
"message": "Has superado el límite de peticiones por IP…",
"data": { "status": 429 }
}
Autenticación
Envía tu clave en una de estas cabeceras HTTP:
Authorization: Bearer TU_API_KEY
X-BDW-ODS-API-Key: TU_API_KEY
Ejemplo
curl -H "Authorization: Bearer TU_API_KEY" "https://odslocal.es/wp-json/bdw/v1/ods-api/catalog"
Permisos (scopes)
read_catalog— Catálogo y metadatosread_territories— Territoriosread_measurements— Medicionesread_map— Conjuntos de datos de maparead_compare— Comparaciones
¿Prefieres descargar los datos?
Si no necesitas integración programática, también puedes exportar los datos en otras pestañas de la plataforma (CSV y otros formatos), sin necesidad de API key.