API Documentación
API REST pública para acceder a datos de parlamentarios de España. Sin autenticación requerida.
Datos Disponibles
Base URL: https://datomania.es/api/representantes
Endpoints
/api/representantes/parlamentariosLista de parlamentarios con filtros y paginación.
Query Parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
camara | 'Congreso' | 'Senado' | Filtrar por cámara |
partido | string | Filtrar por partido político |
estudios_nivel | EstudiosNivel | Filtrar por nivel educativo |
profesion_categoria | ProfesionCategoria | Filtrar por categoría profesional |
circunscripcion | string | Filtrar por provincia/circunscripción |
busqueda | string | Buscar por nombre |
pagina | number | Página actual (default: 1) |
por_pagina | number | Resultados por página (default: 50, max: 100) |
Response
{
"parlamentarios": [...],
"total": 350,
"pagina": 1,
"por_pagina": 50,
"total_paginas": 7
}/api/representantes/exportDescargar datos completos en JSON o CSV.
Query Parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
format | 'json' | 'csv' | Formato de exportación (default: 'json') |
legislature | 'I' | 'XV' | Legislatura a exportar (default: 'XV') |
camara | 'Congreso' | 'Senado' | Filtrar por cámara (opcional) |
partido | string | Filtrar por partido (opcional) |
estudios_nivel | EstudiosNivel | Filtrar por nivel educativo (opcional) |
profesion_categoria | ProfesionCategoria | Filtrar por categoría (opcional) |
circunscripcion | string | Filtrar por provincia (opcional) |
/api/representantes/statsEstadísticas agregadas del dataset.
Query Parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
legislature | 'I' | 'XV' | Legislatura (default: 'XV') |
compare | 'true' | Comparar I vs XV legislatura |
Response
{
"legislature": "XV",
"total": 642,
"por_camara": { "Congreso": 350, "Senado": 273 },
"por_estudios_nivel": { ... },
"por_profesion_categoria": { ... },
"por_partido": { ... },
"cobertura": {
"estudios_con_datos": 580,
"estudios_sin_datos": 62,
"profesion_con_datos": 590,
"profesion_sin_datos": 52
}
}Esquema de Datos
Cada parlamentario incluye los siguientes campos:
interface Parlamentario {
// Identificadores
id: string; // ID único
slug: string; // URL-friendly name
// Datos básicos
camara: 'Congreso' | 'Senado';
nombre_completo: string;
partido: string;
grupo_parlamentario: string;
circunscripcion: string;
partido_color: string; // Color hex del partido
// Fechas
fecha_alta: string; // ISO date
url_ficha: string; // URL a ficha oficial
// Educación (sistema de 3 niveles)
education_levels: {
original: string; // Texto declarado
normalized: string; // Nivel normalizado (ESO, Grado, etc.)
simplified: string; // Categoría amplia
};
// Fuentes de datos
data_sources: DataSourceEntry[];
// Estado (solo XV legislatura)
estado?: 'activo' | 'baja';
fecha_baja?: string;
sustituido_por?: string;
}Sistema de Niveles Educativos
Los datos educativos se normalizan en un sistema de 3 niveles para facilitar análisis comparativos:
1. Original (education_levels.original)
Texto exacto declarado por el parlamentario o extraído de fuentes oficiales.
"Licenciado en Derecho por la Universidad Complutense"2. Normalized (education_levels.normalized)
Mapeado al sistema educativo español actual.
ESOBachilleratoFP_Grado_MedioFP_Grado_SuperiorGradoLicenciaturaMasterDoctorado3. Simplified (education_levels.simplified)
Categorías amplias para análisis agregado.
Fuentes de Datos
Cada dato incluye trazabilidad completa de su origen:
DataSourceEntry Schema
interface DataSourceEntry {
source: 'congreso' | 'senado' | 'perplexity';
field: 'estudios' | 'profesion';
raw_text: string; // Texto original extraído
extracted_at: string; // ISO timestamp
extracted_value?: string; // Valor normalizado
citations?: string[]; // URLs de fuentes
}Ejemplos de Código
JavaScript / TypeScript
// Obtener todos los diputados del PSOE
const response = await fetch(
'https://datomania.es/api/representantes/parlamentarios?' +
new URLSearchParams({
camara: 'Congreso',
partido: 'PSOE',
por_pagina: '100'
})
);
const { parlamentarios, total } = await response.json();
console.log(`Encontrados ${total} diputados del PSOE`);
// Descargar CSV de la XV legislatura
const csvUrl = 'https://datomania.es/api/representantes/export?' +
new URLSearchParams({
format: 'csv',
legislature: 'XV'
});
// Obtener estadísticas comparativas
const statsResponse = await fetch(
'https://datomania.es/api/representantes/stats?compare=true'
);
const comparison = await statsResponse.json();
console.log('I Legislatura:', comparison.legislatureI.total);
console.log('XV Legislatura:', comparison.legislatureXV.total);Python
import requests
import pandas as pd
# Obtener parlamentarios con estudios universitarios
params = {
'estudios_nivel': 'Universitario',
'por_pagina': 100
}
response = requests.get(
'https://datomania.es/api/representantes/parlamentarios',
params=params
)
data = response.json()
print(f"Total universitarios: {data['total']}")
# Descargar como CSV y cargar en pandas
csv_url = 'https://datomania.es/api/representantes/export?format=csv'
df = pd.read_csv(csv_url)
print(df.head())
# Análisis por partido
print(df.groupby('partido').size().sort_values(ascending=False))
# Obtener estadísticas
stats = requests.get(
'https://datomania.es/api/representantes/stats',
params={'legislature': 'XV'}
).json()
print(f"Cobertura educativa: {stats['cobertura']['estudios_con_datos']}/{stats['total']}")cURL
# Listar parlamentarios de Madrid
curl "https://datomania.es/api/representantes/parlamentarios?circunscripcion=Madrid"
# Descargar JSON de la I legislatura
curl -o parlamentarios_i.json \
"https://datomania.es/api/representantes/export?format=json&legislature=I"
# Obtener estadísticas
curl "https://datomania.es/api/representantes/stats?legislature=XV" | jq .
# Comparar legislaturas
curl "https://datomania.es/api/representantes/stats?compare=true" | jq .Límites y Caché
Rate Limit: Sin límite estricto, pero por favor sé considerado
Caché: Respuestas cacheadas durante 1 hora (s-maxage=3600)
Formato: Todas las respuestas son JSON (excepto /export?format=csv)
CORS: Habilitado para todos los orígenes