API activa · apimetro.dev

Datos geoespaciales del
transporte público de CDMX

Accede a líneas, estaciones y polígonos de 10 sistemas de transporte de la Ciudad de México y el Área Metropolitana — filtrados con precisión, en JSON descriptivo o GeoJSON listo para mapas.

📋 Referencia API 📄 Swagger UI 🔗 GitHub
22,878 Estaciones
317 Líneas
10 Sistemas
2 Formatos

¿Para quién es Apimetro?

Dos perfiles, una misma API

🗺️

Urbanistas y analistas

Trabaja con datos reales del transporte sin necesidad de programar. Conecta Apimetro a QGIS, Kepler.gl o Google Sheets para visualizar y analizar la red de movilidad de la ciudad.

  • Geometrías listas para mapas (GeoJSON)
  • Polígonos de alcaldías y municipios
  • Filtros territoriales por alcaldía
  • Compatible con cualquier herramienta GIS
⚙️

Desarrolladores

API REST con respuestas JSON y GeoJSON. Endpoints documentados en Swagger, CRUD completo y geometrías PostGIS como MultiLineString segmentado tramo a tramo.

  • CRUD completo: GET · POST · PATCH · DELETE
  • Self-hosted: corre en tu localhost con Docker
  • Filtros avanzados por múltiples parámetros
  • Documentación en Swagger UI y Referencia API

¿Qué puedes hacer con Apimetro?

Más que un simple catálogo de paradas

🗺️

GeoJSON listo para mapas

Obtén geometrías PostGIS directamente: MultiLineString segmentado tramo a tramo entre estaciones, puntos de estación y polígonos de límites territoriales. Compatibles con Mapbox GL, Leaflet, Kepler.gl, QGIS y cualquier herramienta GIS estándar.

📊

Datos operativos completos

Más allá de las coordenadas: nombre oficial, número comercial, longitud en km, año de inauguración, clasificación operativa, colores de línea, estado de operación y relación con nodos CETRAM.

GET POST PATCH DELETE
🔍

Filtros de precisión

No solo filtras por sistema. Consulta exactamente la Línea 12 del Metro, las estaciones de Iztapalapa, todos los nodos CETRAM, o las líneas con derecho de vía exclusivo. También puedes combinar múltiples sistemas en un solo request.

🐳

Self-hosted con Docker

Corre Apimetro en tu propia infraestructura. El repositorio incluye docker-compose con perfiles para entornos dev, QA y producción. PostgreSQL + PostGIS incluidos. Sin dependencias externas.


Ejemplos de consultas avanzadas

Algunos de los filtros más útiles disponibles en la API

GeoJSON · Líneas
Línea 12 del Metro en GeoJSON
GET /movilidad/mapas/geojsonLinea ?sistema=METRO&num_comercial=L12

Filtra por número comercial oficial — funciona con L1, L2, MB-1, etc.

GeoJSON · Líneas
Metro + Metrobús en un solo request
GET /movilidad/mapas/geojsonLinea ?sistema=METRO,MB

El parámetro sistema acepta múltiples valores separados por coma.

JSON · Estaciones
Estaciones del Metro en Iztapalapa
GET /movilidad/METRO/estacion ?alcaldia_municipio=Iztapalapa

Filtro territorial disponible también en GeoJSON.

JSON · Estaciones
Todos los nodos CETRAM del sistema
GET /movilidad/TODOS/estacion ?es_cetram=true

Usa TODOS para consultar toda la red sin filtrar por sistema.

GeoJSON · Estaciones
Estaciones a 250 m de un CETRAM
GET /movilidad/mapas/geojsonEstacion ?cetram_real=Pantitlán

Filtro espacial: retorna estaciones dentro de 250 m del nodo indicado.

JSON · Líneas
Solo líneas actualmente en operación
GET /movilidad/TODOS/linea ?existe=true

Excluye líneas en proyecto o fuera de servicio.

Consulta la Referencia API completa para ver todos los parámetros disponibles por endpoint.


Sistemas de transporte cubiertos

Usa el identificador corto como parámetro sistema

Metro · METRO Metrobús · MB Cablebús · CBB RTP · RTP Trolebús · TROLE Tren Ligero · TL Mexibús · MEXIBUS Mexicable · MEXICABLE Interurbano · INTERURBANO Corredor Concesionado · CC

Usa TODOS para consultar toda la red sin filtrar por sistema.


Pruébalo ahora

Sigue estos pasos para visualizar las líneas del Metro en QGIS — sin escribir una sola línea de código.

  • 1
    Abre QGIS y ve al menú Capa → Agregar capa → Agregar capa vectorial O usa el atajo Ctrl+Shift+V
  • 2
    En "Tipo de fuente" selecciona Protocolo: HTTP(S) Asegúrate de que el tipo sea GeoJSON
  • 3
    Copia y pega esta URL en el campo URI:
    https://apimetro.dev/movilidad/mapas/geojsonLinea?sistema=METRO
    Cambia METRO por cualquier sistema: MB, CBB, RTP, TROLE, TL… o usa TODOS para toda la red. También puedes filtrar por línea específica añadiendo &num_comercial=L12.
  • 4
    Haz clic en "Agregar" — ¡listo! Las líneas aparecerán en el mapa. Repite el proceso para estaciones (geojsonEstacion) o polígonos de alcaldías (geojsonPoligono). Combina capas para análisis de cobertura territorial.

Construye tu petición seleccionando el recurso y el sistema. El comando curl se genera automáticamente apuntando a apimetro.dev.

Comando generado
curl "https://apimetro.dev/movilidad/mapas/geojsonLinea?sistema=METRO"

Para explorar todos los filtros disponibles visita la Referencia API o la documentación Swagger.

Apimetro es open source. Puedes clonarlo y levantarlo en tu máquina con Docker — sin depender del servicio en línea ni de ninguna API key.

  • 1
    Clona el repositorio
    git clone https://github.com/galigaribaldi/Apimetro.git
    cd Apimetro
  • 2
    Configura las credenciales de la base de datos Crea el archivo ~/.SecretsFiles/.env.dev con las variables de entorno necesarias:
    # ~/.SecretsFiles/.env.dev
    DB_HOST=db
    DB_PORT=5432
    DB_NAME=db_apimetro
    DB_USER=apimetro_read
    DB_PASSWORD=tu_password
    POSTGRES_USER=admin_apimetro
    POSTGRES_PASSWORD=tu_admin_password
    GIN_MODE=debug
    Nota: Consulta la lista completa de variables en el README.
  • 3
    Levanta el entorno de desarrollo
    make docker-dev
    # → API disponible en   http://localhost:8080
    # → PostgreSQL + PostGIS  localhost:5433
  • 4
    Carga los datos de transporte La base de datos inicia vacía. Para cargar todos los datos de la red (~37 MB):
    bash scripts/load-seed.sh
    # Carga líneas, estaciones y geometrías PostGIS
  • 5
    ¡Usa la API en tu localhost! Los mismos endpoints funcionan con la base URL local:
    curl "http://localhost:8080/movilidad/mapas/geojsonLinea?sistema=METRO"