Herramientas y documentación para descubrir, consultar y exportar catálogos de datos abiertos en Latinoamérica usando APIs Socrata y CKAN.
En la práctica, cada país publica datos en plataformas distintas y con estructuras de API diferentes. Eso dificulta crear un inventario regional consistente para análisis, transparencia, periodismo de datos o monitoreo de políticas públicas.
Este repositorio unifica ese acceso en un flujo único que:
- Consulta portales multi-país (Socrata y CKAN) con una interfaz común.
- Normaliza metadatos clave de datasets en una estructura homogénea.
- Exporta resultados en formatos listos para análisis (JSON y CSV).
- Genera un resumen agregado por tipo y categoría para exploración rápida.
- Gobierno abierto y transparencia.
- Investigación académica y análisis de políticas públicas.
- Periodismo de datos.
- Observatorios ciudadanos y ONGs.
- Equipos de analítica que construyen pipelines sobre fuentes públicas.
- Integración de catálogos de datos en productos de inteligencia de negocio.
- Inventariar datasets públicos por país para una línea base regional.
- Filtrar datasets por periodo de publicación para análisis longitudinal.
- Buscar catálogos por palabra clave (por ejemplo, salud, educación, seguridad).
- Extraer datos normalizados para alimentar notebooks, ETL o dashboards.
- Comparar cobertura temática entre países por categorías y tipo de dataset.
- Construir monitoreo periódico de nuevos datasets abiertos.
data-open/
├── README.md # Este archivo
├── secretos.json.example # Plantilla de configuración
├── data_socrata.md # Documentación de Socrata API
├── uso_api_socrata.md # Guía de uso de Socrata
└── descubrimiento/ # Sistema de descubrimiento multi-país
├── README.md # Documentación del módulo
├── requirements.txt # Dependencias Python
├── config.json # Configuración de fechas
├── latam_domains.json # Configuración de países
├── run_discovery.py # CLI principal
├── socrata_discovery.py # Cliente Socrata
└── ckan_client.py # Cliente CKAN
# Crear entorno virtual
python -m venv .venv
# Activar entorno
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/Mac
# Instalar dependencias
cd descubrimiento
pip install -r requirements.txt# Copiar plantilla de configuración
cp secretos.json.example secretos.json
# Editar secretos.json con tus credenciales
# Solo necesitas el token de Socrata para Colombia# Consultar todos los países con límite de 10 registros
python run_discovery.py --limit 10
# Consultar país específico
python run_discovery.py --country COL --published-from 2024-01-01
# Ver todas las opciones
python run_discovery.py --helpLa salida del CLI ahora incluye métricas por país:
- Tiempo de ejecución por país (segundos).
- Número de requests HTTP realizados.
- Número de reintentos HTTP observados.
- Registros filtrados y tasa porcentual de filtrado.
python -m unittest discover -s tests -p "test_*.py"- descubrimiento/run_discovery.py orquesta ejecución, filtros y exportación.
- descubrimiento/socrata_discovery.py consulta Discovery API de Socrata.
- descubrimiento/ckan_client.py consulta package_search de CKAN.
- descubrimiento/latam_domains.json define países, plataforma y endpoints.
- descubrimiento/config.json permite parametrizar fechas por defecto.
| País | Código | Plataforma | Portal | Estado |
|---|---|---|---|---|
| 🇨🇴 Colombia | COL | Socrata | www.datos.gov.co | ✅ Funcional |
| 🇲🇽 México | MEX | CKAN | datos.gob.mx | ✅ Funcional |
| 🇨🇱 Chile | CHL | CKAN | datos.gob.cl | ✅ Funcional |
| 🇪🇨 Ecuador | ECU | CKAN | datosabiertos.gob.ec | ✅ Funcional |
- Descubrimiento LATAM: Sistema multi-país para inventario de datasets
- Socrata API: Documentación técnica de Socrata
- Uso Socrata: Guía práctica de uso
- Robustez HTTP: se incorporó reutilización de sesión y reintentos automáticos para reducir fallos transitorios (429/5xx) en Socrata y CKAN.
- Rendimiento de red: se evita abrir conexiones nuevas por cada request, mejorando tiempos de ejecución en paginación extensa.
- Consistencia de credenciales: se corrigió la lectura del token para soportar la clave socrata_app_token del archivo secretos.json.example.
- Calidad de datos: se agregó deduplicación de resultados por identificador y enlace permanente antes de exportar.
- Portabilidad de archivos: los nombres de salida se normalizan a ASCII para evitar problemas entre sistemas de archivos.
- El modelo de metadatos es una normalización mínima y no cubre todos los campos nativos de cada portal.
- El filtro por fecha depende de la disponibilidad y formato de publication_date en cada API.
- No incluye aún un pipeline incremental (delta) ni programación automática por cron.
{
"socrata_app_token": "tu_token_aqui"
}{
"published_from": "2024-01-01",
"published_to": "2025-12-31"
}- Fork del repositorio
- Crear rama:
git checkout -b feature/nueva-funcionalidad - Commit:
git commit -am 'Agregar nueva funcionalidad' - Push:
git push origin feature/nueva-funcionalidad - Crear Pull Request
Nota: La rama master está protegida y requiere aprobación de @lraigosov.