Base URLhttps://polls.spainelectoralproject.com
Versión/api/v1
Formatoapplication/json

La API es pública, de solo lectura y no requiere autenticación. La documentación interactiva generada desde el esquema OpenAPI también está disponible en Swagger UI.

Endpoints

GET/healthEstado del servicio y de la base de datos.
GET/api/v1/electionsCatálogo de elecciones.
GET/api/v1/pollstersCatálogo de encuestadoras.
GET/api/v1/partiesCatálogo normalizado de partidos.
GET/api/v1/pollsListado de encuestas y sus metadatos.
GET/api/v1/polls/{poll_id}Detalle de una encuesta con todos sus resultados.
GET/api/v1/resultsResultados de encuestas en formato largo.
GET/api/v1/timeseriesObservaciones fechadas preparadas para series temporales.

Paginación

Todos los endpoints de listado usan limit y offset. limit admite valores entre 1 y 1.000 y su valor predeterminado es 100. La respuesta mantiene siempre la misma envoltura:

{
  "items": [],
  "limit": 100,
  "offset": 0,
  "total": 0
}

Para recorrer una colección, incrementa offset en el valor de limit hasta que offset + limit sea igual o superior a total.

Catálogos

Elecciones

GET /api/v1/elections

ParámetroTipoDescripción
territory_codestringCódigo de territorio exacto.
election_typestringTipo de elección exacto.
limitintegerRegistros por página, de 1 a 1.000.
offsetintegerRegistros que se omiten desde el inicio.

Cada elemento contiene id, election_key, election_type, territory_code, election_name y election_date.

Encuestadoras

GET /api/v1/pollsters

ParámetroTipoDescripción
election_keystring, repetibleLimita el catálogo a una o varias elecciones.
territory_codestringLimita por territorio.
active_onlybooleanSolo encuestadoras con actividad pública; por defecto true.
limit, offsetintegerPaginación.

Devuelve la clave y nombre normalizados de cada encuestadora junto a poll_count.

Partidos

GET /api/v1/parties

Admite election_key repetible, territory_code, active_only, limit y offset. Incluye party_key, nombre, sigla, color, orden de visualización y número de encuestas públicas.

Encuestas

Listado

GET /api/v1/polls

ParámetroTipoDescripción
election_keystring, repetibleUna o varias elecciones.
territory_codestringTerritorio exacto.
pollster_keystring, repetibleClave normalizada de encuestadora.
pollsterstring, repetibleClave o nombre de encuestadora.
mediastring, repetibleCoincidencia parcial con el medio.
fieldwork_start_from, fieldwork_start_todateRango de inicio de trabajo de campo.
fieldwork_end_from, fieldwork_end_todateRango de fin de trabajo de campo.
publication_date_from, publication_date_todateRango de publicación.
identity_statusstringEstado de identificación exacto.
include_manual_reviewbooleanIncluye registros pendientes de revisión manual.
include_inactivebooleanIncluye registros inactivos.
limit, offsetintegerPaginación.

Por defecto se excluyen encuestas inactivas y pendientes de revisión manual. Las fechas usan el formato ISO AAAA-MM-DD.

Detalle

GET /api/v1/polls/{poll_id}

Devuelve los metadatos de la encuesta y un array results con partido, voto estimado y horquilla de escaños. Responde 404 cuando el identificador no existe o el registro no es público.

Resultados

GET /api/v1/results

El formato largo devuelve una fila por combinación encuesta–partido. Es útil para análisis tabular y exportaciones.

GrupoParámetros disponibles
Contextoelection_key, territory_code
Encuestadorapollster_key, pollster, media
Partidoparty_key, party
Fechasfieldwork_end_from, fieldwork_end_to, publication_date_from, publication_date_to
Publicacióninclude_manual_review, include_inactive
Paginaciónlimit, offset

Los parámetros election_key, pollster_key, pollster, media, party_key y party pueden repetirse para consultar varios valores.

Series temporales

GET /api/v1/timeseries

Comparte los filtros de elección, territorio, encuestadora, medio y partido. Añade:

ParámetroValoresDescripción
date_fromdateFecha mínima, inclusive.
date_todateFecha máxima, inclusive.
date_fieldauto, fieldwork_end, publication_dateCampo usado como fecha.

date_field=auto, el valor predeterminado, usa el fin del trabajo de campo y recurre a la fecha de publicación cuando falta. Cada punto incluye fecha, encuesta, encuestadora, partido, voto estimado, escaños y metadatos de presentación.

Errores

Los parámetros inválidos producen un 422 con el detalle estructurado de FastAPI. Un recurso no encontrado produce un 404:

{
  "detail": "Poll not found"
}

Una colección sin coincidencias no es un error: devuelve 200, total: 0 e items: [].

Para integraciones automáticas, consulta también el contrato canónico en /openapi.json. Esta web resume el comportamiento; OpenAPI refleja siempre la versión desplegada.