API y datos abiertos

API y datos abiertos de Zaragoza

Todo lo necesario para reutilizar DatosBizi: documentacion, OpenAPI, ejemplos, endpoints, descargas CSV, versiones de datos, cambios recientes, licencia y pautas para citar los datos.

OpenAPI 3.1.0API v0.5.0Datos cov-20260515-596518815 endpoints publicados
Datos antiguos

Los datos no estan frescos

La documentacion sigue disponible, pero los datos actuales, el historico y las exportaciones dependen del mismo estado que usa el dashboard.

Revisar estado

Version API

0.5.0

Version publicada en la especificacion OpenAPI.

Version de datos

cov-20260515-5965188

Calculada a partir de la ultima muestra util y del historico agregado.

Cobertura historica

68

5965188 muestras y 276 estaciones.

Ultima generacion

16/5/2026, 0:33:33

Ultimo mes publicado mayo de 2026.

Quick start

Ejemplos de consumo

curl

curl -s -H "X-Request-Id: docs-example-status" https://datosbizi.com/api/status

curl -sG https://datosbizi.com/api/rankings?type=turnover&limit=20

curl -L -H "x-public-api-key: $PUBLIC_API_KEY" https://datosbizi.com/api/history?format=csv

Python

import requests

base_url = "https://datosbizi.com"
response = requests.get(f"{base_url}/api/status", timeout=15)
response.raise_for_status()
payload = response.json()
print(payload["pipeline"]["healthStatus"])

JavaScript

const response = await fetch("https://datosbizi.com/api/stations");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const payload = await response.json();
console.log(payload.stations.length);

Logistica y redistribucion

API de reequilibrio

El endpoint /api/rebalancing-report devuelve recomendaciones origen-destino, clasificacion A-F y metricas estimadas para priorizar movimientos.

Ejemplo (curl)

curl -sG https://datosbizi.com/api/rebalancing-report?district=Centro&days=15

Ejemplo (Python)

import requests

base_url = "https://datosbizi.com"
params = {"days": 15, "format": "json"}
res = requests.get(f"{base_url}/api/rebalancing-report", params=params, timeout=20)
res.raise_for_status()
print(len(res.json()["transfers"]))

Acceso y seguridad

Reglas de acceso actuales

Correlacion

Todas las respuestas API devuelven `X-Request-Id`

Si el cliente envia su propio identificador se reutiliza en logs, Sentry, auditoria y ejecuciones operativas.

Ops

`GET/POST /api/collect` requieren `X-Ops-Api-Key`

La cabecera `x-collect-api-key` sigue aceptandose temporalmente como alias de compatibilidad para cron antiguos.

Elevated public

CSV costosos y ventanas amplias requieren `X-Public-Api-Key`

Afecta a historico CSV, alertas historicas CSV, movilidad extendida y rebalancing con ventanas o exportaciones amplias.

Mobile

`Authorization` + `X-Installation-Id` en auth movil

Geo search y geo reverse soportan firma HMAC (`timestamp` + `signature`) y el backend puede volverla obligatoria por feature flag.

Endpoints disponibles

Endpoints publicados

Ver JSON OpenAPI

GET

/api/alerts

List active alerts

Params: limit

GET

/api/alerts/history

List alert history with filters, pagination, and CSV export

Params: state, stationId, alertType, severity, from, to, limit, offset, format

GET

/api/collect

Get collection job state

Sin parametros obligatorios o query destacados.

POST

/api/collect

Trigger one data collection run

Sin parametros obligatorios o query destacados.

GET

/api/health/live

Liveness probe (no dependencies)

Sin parametros obligatorios o query destacados.

GET

/api/health/ready

Readiness probe (checks database connectivity)

Sin parametros obligatorios o query destacados.

GET

/api/heatmap

Get occupancy heatmap cells for one station

Params: stationId

GET

/api/history

Get full historical demand data since first record

Sin parametros obligatorios o query destacados.

GET

/api/mobility

Get mobility signals, demand curve, and transit impact

Params: mobilityDays, demandDays

GET

/api/openapi.json

Get OpenAPI document

Sin parametros obligatorios o query destacados.

GET

/api/patterns

Get weekday/weekend hourly patterns for one station

Params: stationId

GET

/api/rankings

Get station rankings by turnover or availability

Params: type, limit

GET

/api/rebalancing-report

Station rebalancing diagnostic report with classification, predictions, and transfer recommendations

Params: district, days, format

GET

/api/stations

List stations with latest availability snapshot

Sin parametros obligatorios o query destacados.

GET

/api/status

Get pipeline observability metrics

Sin parametros obligatorios o query destacados.

Limites y politicas

Consumo responsable

Lectura publica

Lecturas ligeras abiertas; usos intensivos con clave

Las consultas sencillas siguen abiertas. CSV grandes y ventanas amplias usan `X-Public-Api-Key` y limites compartidos.

Ingesta protegida

GET y POST /api/collect requieren clave interna y limite de uso

Configuracion por defecto: 6 solicitudes por 60 segundos y cabecera `x-ops-api-key`; `x-collect-api-key` se mantiene como alias temporal.

Licencia del codigo

GPL-3.0-only

La app es software libre. Para redistribuir datos derivados, revisa tambien los terminos del proveedor GBFS.

Cambios recientes

Versiones y novedades visibles

v0.5.0: especificacion OpenAPI publicada y accesible para tooling.
Version actual: request tracing con `X-Request-Id`, collect protegido por clave operativa y auditoria persistente para auth, rate limits y ejecuciones.
Dataset cov-20260515-5965188: cobertura compartida con 68 dias y 5965188 muestras agregadas.

Cita y licencia de datos

Como citar y reutilizar

Cita sugerida

BiziDashboard Zaragoza, datos historicos agregados (version cov-20260515-5965188), consultado el 15/5/2026. Fuente primaria: https://zaragoza.publicbikesystem.net/customer/gbfs/v2/gbfs.json

Ultima actualizacion compartida

16/5/2026, 0:33:33

Casos de uso

Para que sirve esta API hoy

Supervision operativa del sistema y cuadros de mando internos.
Periodismo de datos y storytelling sobre movilidad urbana.
Investigacion sobre demanda, equilibrio y comportamiento horario.
Integraciones con apps moviles, paneles de ciudad o herramientas GIS.