Skip to main content
Empresa Metro de Bogotá S.A. is building the city’s first metro line, an elevated viaduct of 16 stations from the southwest to Calle 72, and has Line 2, 11 stations, most of them underground, toward Suba and Engativá, in design. It publishes where all of it goes: the stations, the axis of each line, the viaduct, the limit of the works and the buildings through which each station is entered. Find the stations nearest a point with the distance to each, look one up with its access buildings, get the line itself as GeoJSON, and take the official shapefiles. Use it to measure how far a property, a branch or a customer is from a future station. It also publishes which parcels the first line requires, how the works advance each month against the plan, and what happens to every tree along the corridor. All of it is here: check a property by CHIP or by point, follow the progress series since 2020, and search the tree inventory by species, treatment or place.
The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries as_of: how current the data is. How datasets work.

Search stations

POST /co/metro-bogota/stations-search/v1 Dataset Finds stations by name, by line, or nearest to a point. Start here to get the id the station lookup takes.
Returns as_of, the applied filters, total, page, per_page, total_pages, count and stations[]; each station carries distance_m, metres in a straight line to its centre, when you searched from a point. Each station is { id, line, number, name, common_name, station_type, status, note, latitude, longitude, area_m2, geometry }.
  • id: the line and the station’s number, e.g. l1-13.
  • name: the name Metro de Bogotá publishes, e.g. Estación 13- Central. Line 2 stations are still numbered placeholders (ESTACIÓN 4).
  • common_name: the working name of the project, usually the street the station stands on, e.g. Calle 26-13.
  • status: the stage as published, in Spanish: Construcción (Line 1) or Diseño (Line 2).
  • latitude, longitude: the centre of the station.
  • geometry: the station’s footprint, a GeoJSON polygon in WGS84.

One station

POST /co/metro-bogota/station/v1 Dataset Returns one station by its id, with the buildings through which it is entered.
Returns as_of, found, station_id, station (null when not found) and access_buildings[], each with its polygon. Each station is { id, line, number, name, common_name, station_type, status, note, latitude, longitude, area_m2, geometry }.
  • id: the line and the station’s number, e.g. l1-13.
  • name: the name Metro de Bogotá publishes, e.g. Estación 13- Central. Line 2 stations are still numbered placeholders (ESTACIÓN 4).
  • common_name: the working name of the project, usually the street the station stands on, e.g. Calle 26-13.
  • status: the stage as published, in Spanish: Construcción (Line 1) or Diseño (Line 2).
  • latitude, longitude: the centre of the station.
  • geometry: the station’s footprint, a GeoJSON polygon in WGS84.

A point against the metro

POST /co/metro-bogota/proximity/v1 Dataset A coordinate in, how close it is to the metro out: stations, lines and works.
Returns as_of, latitude, longitude and:
  • nearest_station: the nearest station of any line, with distance_m to its centre.
  • stations_within_1km: how many stations have their centre within 1,000 metres.
  • inside_intervention_limit: whether the point is inside the area of works of Line 1.
  • intervention_limit_distance_m: metres to the edge of that area; 0 inside it.
  • parcel: the parcel required for Line 1 that contains the point, with its CHIP, address and polygon; null when none does.
  • parcels_within_100m: how many such parcels have their centre within 100 metres.
  • lines[]: per line, { line, alignment_distance_m, nearest_station }: the distance to the line’s axis and the line’s nearest station.
Distances are straight lines measured on the published shapes, good to about a metre. They are not walking distances.

Parcels required for Line 1

POST /co/metro-bogota/parcels-search/v1 Dataset Is this property among the ones the metro needs? Ask by CHIP, by address or by point.
Returns as_of, the applied filters, total, page, per_page, total_pages, count and parcels[]; each parcel carries distance_m when you searched from a point (0 when the point is on it). An empty list means the property is not in the consultation. Each parcel is { id, chip, address, line, latitude, longitude, area_m2, geometry }.
  • chip: Bogotá’s cadastral identifier of the parcel, e.g. AAA0011RDTO. Use it to join with the city’s cadastre.
  • address: the address as published, e.g. CL 1 24 09.
  • area_m2: the area measured on the polygon.
  • geometry: the parcel, a GeoJSON polygon in WGS84.
These are the parcels Metro de Bogotá lists in its public Line 1 parcel consultation. The list says a property is required for the line, not what stage its acquisition is in, and it carries no owner or occupant. Confirm the current status of a property with Metro de Bogotá.

Works progress

POST /co/metro-bogota/progress/v1 Dataset The percentage built against the percentage planned, month by month, and where the project stands today.
Returns as_of, line, the range asked for, count and:
  • latest: the most recent month with physical progress reported.
  • months[]: { month, line, planned_pct, executed_pct, planned_month_pct, executed_month_pct, schedule_baseline, budget_planned_cop, budget_planned_cumulative_cop, budget_executed_cop, budget_executed_cumulative_cop, budget_executed_month_pct, budget_executed_cumulative_pct, budget_baseline }. planned_pct and executed_pct are cumulative physical progress in percent; the _month_ fields are the month alone.
  • project: the project’s value in pesos (value_cop), the start of the concession (start_date) and the planned start of operation (end_date).
  • stages[]: each stage with its dates.
  • activities[]: what is under way, with status and the report’s cut-off date (reported_on).
  • milestones[]: what was achieved in the latest reported period, with the date (end_date).
Names, states and notes are in Spanish, as published.

Network relocation

POST /co/metro-bogota/network-relocation-search/v1 Dataset The water, power, gas and telecom lines the metro has to move, and how each one is going.
Returns as_of, the applied filters, total, page, per_page, total_pages, count and interferences[]. Each is { id, line, utility, interference, segment, contract_group, agreement, status, planned_pct, executed_pct, compliance_index, compliance_status, deadline_status, planned_start, planned_end, deadline, slack_days, reported_on }. The parties are utility companies; there is no personal data. The report was last published in 2022.

Tree inventory

POST /co/metro-bogota/trees-search/v1 Dataset Every tree the works touch: what was authorized for it, whether it was done and when.
Returns as_of, the applied filters, total, page, per_page, total_pages, count and trees[]; each tree carries distance_m when you searched from a point. Each tree is { id, tree_number, line, common_name, scientific_name, sigau_code, treatment, status, executed_on, scheduled_from, scheduled_to, permit, work_front, work_front_group, chainage, locality, locality_code, upz, location, relocation_site, height_m, trunk_perimeter_m, trunk_diameter_cm, height_category, stump_category, botanical_garden_record, latitude, longitude, coordinates_approximate, relocation_location, relocation_latitude, relocation_longitude, note }.
  • treatment: what the environmental permit authorizes: tala (felling), traslado (relocation), tratamiento_integral, conservacion or poda (pruning).
  • status: ejecutado, no_ejecutado or sin_reporte; executed_on is the date it was carried out.
  • permit: the administrative act behind the treatment.
  • relocation_site: for a relocated tree, where it was taken.
  • coordinates_approximate: true when the inventory flags the tree as having no coordinates of its own.

Alignment and works

POST /co/metro-bogota/infrastructure-search/v1 Dataset The line itself and what is being built around it, as shapes to draw on a map or to measure against.
Returns as_of, the applied filters, total, page, per_page, total_pages, count and results[]. Each result is { id, kind, line, name, station_id, note, latitude, longitude, length_m, area_m2, geometry, geometry_url }.
  • kind: alignment (the axis of the line), viaduct (the elevated structure the trains of Line 1 run on), intervention_limit (the whole area of design, construction and operation of Line 1), access_building (a building through which a station is entered) or depot (the Patio Taller, the yard and workshops of Line 1).
  • station_id: for an access building, the station it belongs to.
  • length_m, area_m2: the length of an alignment in metres; the perimeter and area of a polygon.
  • geometry: the shape as GeoJSON in WGS84. The most detailed shapes (the viaduct, the axis of Line 1, the intervention limit) come simplified to within about a metre, with every published point at geometry_url.

Layers and shapefiles

POST /co/metro-bogota/layers/v1 Dataset The published layers, each with the official file to open in a GIS.
Returns as_of, line, count and layers[]. Each layer is { id, line, kind, title, description, geometry_type, feature_count, file_name, bytes, modified_at, source_document_url, document_url, document_versions[] }.
  • document_url: the layer’s zipped shapefile, exactly as Metro de Bogotá published it. source_document_url is the same file at Metro de Bogotá.
  • document_versions[]: every version of the file, oldest first, { document_url, modified_at, bytes }. A new one appears when Metro de Bogotá replaces the file.
  • The access buildings of Line 1 are published without a file: their file_name and document fields are null.

Full reference

Schemas, all response fields, and an interactive playground.