Mi cuenta

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.

Solo lectura
JSON
REST
Datos aprobados

Cómo conectarte en 3 pasos

  1. 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. 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. 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.
URL de la petición

Abrir

Ejemplo con cURL


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 metadatos
  • read_territories — Territorios
  • read_measurements — Mediciones
  • read_map — Conjuntos de datos de mapa
  • read_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.

Saltar al contenido principal