← Volver

API Documentación

API REST pública para acceder a datos de parlamentarios de España. Sin autenticación requerida.

Datos Disponibles

1,257
Parlamentarios totales
2
Legislaturas (I y XV)
3
Fuentes de datos
3
Endpoints públicos

Base URL: https://datomania.es/api/representantes

Endpoints

GET/api/representantes/parlamentarios

Lista de parlamentarios con filtros y paginación.

Query Parameters

ParámetroTipoDescripción
camara'Congreso' | 'Senado'Filtrar por cámara
partidostringFiltrar por partido político
estudios_nivelEstudiosNivelFiltrar por nivel educativo
profesion_categoriaProfesionCategoriaFiltrar por categoría profesional
circunscripcionstringFiltrar por provincia/circunscripción
busquedastringBuscar por nombre
paginanumberPágina actual (default: 1)
por_paginanumberResultados por página (default: 50, max: 100)

Response

{
  "parlamentarios": [...],
  "total": 350,
  "pagina": 1,
  "por_pagina": 50,
  "total_paginas": 7
}
GET/api/representantes/export

Descargar datos completos en JSON o CSV.

Query Parameters

ParámetroTipoDescripció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)
partidostringFiltrar por partido (opcional)
estudios_nivelEstudiosNivelFiltrar por nivel educativo (opcional)
profesion_categoriaProfesionCategoriaFiltrar por categoría (opcional)
circunscripcionstringFiltrar por provincia (opcional)
GET/api/representantes/stats

Estadísticas agregadas del dataset.

Query Parameters

ParámetroTipoDescripció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.

ESO
Secundaria obligatoria
Bachillerato
16-18 años
FP_Grado_Medio
FP media
FP_Grado_Superior
FP superior
Grado
Univ. post-Bolonia
Licenciatura
Univ. pre-Bolonia
Master
Máster
Doctorado
PhD

3. Simplified (education_levels.simplified)

Categorías amplias para análisis agregado.

Obligatoria
ESO o inferior
Postobligatoria
Bachillerato, FP
Universitaria
Grado, Máster, PhD

Fuentes de Datos

Cada dato incluye trazabilidad completa de su origen:

congreso
API Open Data del Congreso de los Diputados
senado
API Open Data del Senado de España
perplexity
Investigación IA cuando faltan datos oficiales

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