Research and development

Developing shared
requirements for
transport information.

Version 0 BilbaoBilbao transport network.

OTI brings together documentary research, draft specifications, data and experimental software. Its stated aim is a common framework for operators and public authorities.

Explore

Version 0 Bilbao
Bilbao8 routes and 48 stops. Each route is identified by code and colour. Crossings without a station symbol do not indicate an interchange.{"source":{"name":"CTB / Metro Bilbao, Euskotren, Renfe","url":"https://data.ctb.eus/"},"license":"Operator data: CC-BY-4.0","subtitle":"Metro / Rail / Tram - selected central network","validFrom":"2026-10-23","validUntil":"2026-11-21","scope":"Selected contiguous central excerpts, not the complete metropolitan system or live service status. All intermediate stations in each excerpt are retained. La Concordia is a separate station, not merged with Abando. Metro Lutxana and rail Lutxana-Barakaldo remain distinct.","sourceIdentities":{"m-14":[{"operator":"metro","sourceStopId":"14","sourceName":"Lutxana","sourcePosition":[-2.96992,43.29098]}],"m-13":[{"operator":"metro","sourceStopId":"13","sourceName":"San Ignazio","sourcePosition":[-2.96239,43.28068]},{"operator":"metro","sourceStopId":"13","sourceName":"San Ignazio","sourcePosition":[-2.96239,43.28068]}],"m-12":[{"operator":"metro","sourceStopId":"12","sourceName":"Sarriko","sourcePosition":[-2.95874,43.27495]},{"operator":"metro","sourceStopId":"12","sourceName":"Sarriko","sourcePosition":[-2.95874,43.27495]}],"m-11":[{"operator":"metro","sourceStopId":"11","sourceName":"Deustu","sourcePosition":[-2.94954,43.27145]},{"operator":"metro","sourceStopId":"11","sourceName":"Deustu","sourcePosition":[-2.94954,43.27145]}],"m-10":[{"operator":"metro","sourceStopId":"10","sourceName":"San Mamés","sourcePosition":[-2.94751,43.26252]},{"operator":"metro","sourceStopId":"10","sourceName":"San Mamés","sourcePosition":[-2.94751,43.26252]},{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1470:","sourceName":"San Mames","sourcePosition":[-2.948939,43.261742]},{"operator":"renfe","sourceStopId":"13208","sourceName":"San Mamés","sourcePosition":[-2.9488341,43.2615306]},{"operator":"renfe","sourceStopId":"13208","sourceName":"San Mamés","sourcePosition":[-2.9488341,43.2615306]}],"m-9":[{"operator":"metro","sourceStopId":"9","sourceName":"Indautxu","sourcePosition":[-2.94179,43.26127]},{"operator":"metro","sourceStopId":"9","sourceName":"Indautxu","sourcePosition":[-2.94179,43.26127]}],"m-8":[{"operator":"metro","sourceStopId":"8","sourceName":"Eliptikoa","sourcePosition":[-2.93308,43.26259]},{"operator":"metro","sourceStopId":"8","sourceName":"Eliptikoa","sourcePosition":[-2.93308,43.26259]}],"m-7":[{"operator":"metro","sourceStopId":"7","sourceName":"Abando","sourcePosition":[-2.92761,43.2614]},{"operator":"metro","sourceStopId":"7","sourceName":"Abando","sourcePosition":[-2.92761,43.2614]},{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1471:","sourceName":"Abando","sourcePosition":[-2.926658,43.261052]},{"operator":"renfe","sourceStopId":"13200","sourceName":"Bilbao-Intermod. Abando Indalecio Prieto","sourcePosition":[-2.9285592,43.2601304]},{"operator":"renfe","sourceStopId":"13200","sourceName":"Bilbao-Intermod. Abando Indalecio Prieto","sourcePosition":[-2.9285592,43.2601304]},{"operator":"renfe","sourceStopId":"13200","sourceName":"Bilbao-Intermod. Abando Indalecio Prieto","sourcePosition":[-2.9285592,43.2601304]}],"m-6":[{"operator":"metro","sourceStopId":"6","sourceName":"Zazpikaleak/Casco Viejo","sourcePosition":[-2.92071,43.25968]},{"operator":"metro","sourceStopId":"6","sourceName":"Zazpikaleak/Casco Viejo","sourcePosition":[-2.92071,43.25968]},{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2577:","sourceName":"Zazpikaleak/Casco Viejo-Bilbao","sourcePosition":[-2.922197,43.259983]}],"m-5":[{"operator":"metro","sourceStopId":"5","sourceName":"Santutxu","sourcePosition":[-2.91335,43.2543]},{"operator":"metro","sourceStopId":"5","sourceName":"Santutxu","sourcePosition":[-2.91335,43.2543]}],"m-4":[{"operator":"metro","sourceStopId":"4","sourceName":"Basarrate","sourcePosition":[-2.91082,43.25116]},{"operator":"metro","sourceStopId":"4","sourceName":"Basarrate","sourcePosition":[-2.91082,43.25116]}],"m-3":[{"operator":"metro","sourceStopId":"3","sourceName":"Bolueta","sourcePosition":[-2.90573,43.247]},{"operator":"metro","sourceStopId":"3","sourceName":"Bolueta","sourcePosition":[-2.90573,43.247]},{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2674:","sourceName":"Bolueta","sourcePosition":[-2.904919,43.247252]}],"m-32":[{"operator":"metro","sourceStopId":"32","sourceName":"Gurutzeta/Cruces","sourcePosition":[-2.98245,43.28301]}],"e-2597":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2597:","sourceName":"Matiko-Bilbao","sourcePosition":[-2.925007,43.268919]}],"e-2641":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2641:","sourceName":"Uribarri-Bilbao","sourcePosition":[-2.921277,43.267102]}],"e-2617":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2617:","sourceName":"Zurbaranbarri-Bilbao","sourcePosition":[-2.914977,43.264911]}],"e-2609":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2609:","sourceName":"Txurdinaga-Bilbao","sourcePosition":[-2.906729,43.258051]}],"e-2663":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2663:","sourceName":"Otxarkoaga-Bilbao","sourcePosition":[-2.900123,43.259503]}],"e-2639":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2639:","sourceName":"Kukullaga-Etxebarri","sourcePosition":[-2.889764,43.251142]}],"e-1477":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1477:","sourceName":"La Casilla","sourcePosition":[-2.944349,43.257767]}],"e-1481":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1481:","sourceName":"Basurto","sourcePosition":[-2.949072,43.257993]}],"e-1472":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1472:","sourceName":"Hospital/Ospitalea","sourcePosition":[-2.951244,43.259796]}],"e-1474":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1474:","sourceName":"Sabino Arana","sourcePosition":[-2.946222,43.263192]}],"e-1479":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1479:","sourceName":"Euskalduna","sourcePosition":[-2.943894,43.266261]}],"e-1475":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1475:","sourceName":"Abandoibarra","sourcePosition":[-2.9407,43.268585]}],"e-1476":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1476:","sourceName":"Guggenheim","sourcePosition":[-2.936763,43.2687]}],"e-1469":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1469:","sourceName":"Uribitarte","sourcePosition":[-2.928733,43.266303]}],"e-1478":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1478:","sourceName":"Pio Baroja","sourcePosition":[-2.926262,43.264483]}],"e-1480":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1480:","sourceName":"Arriaga","sourcePosition":[-2.925938,43.25907]}],"e-1473":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1473:","sourceName":"Ribera","sourcePosition":[-2.924369,43.255795]}],"e-1468":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:1468:","sourceName":"Atxuri","sourcePosition":[-2.921513,43.254113]}],"e-2673":[{"operator":"euskotren","sourceStopId":"ES:Euskotren:StopPlace:2673:","sourceName":"Abusu","sourcePosition":[-2.915783,43.245503]}],"r-13401":[{"operator":"renfe","sourceStopId":"13401","sourceName":"Sestao","sourcePosition":[-2.9940107,43.3085201]}],"r-13400":[{"operator":"renfe","sourceStopId":"13400","sourceName":"Desertu-Barakaldo","sourcePosition":[-2.984409,43.3000264]},{"operator":"renfe","sourceStopId":"13400","sourceName":"Desertu-Barakaldo","sourcePosition":[-2.984409,43.3000264]}],"r-13305":[{"operator":"renfe","sourceStopId":"13305","sourceName":"Lutxana-Barakaldo","sourcePosition":[-2.9754132,43.2878137]},{"operator":"renfe","sourceStopId":"13305","sourceName":"Lutxana-Barakaldo","sourcePosition":[-2.9754132,43.2878137]}],"r-13304":[{"operator":"renfe","sourceStopId":"13304","sourceName":"Zorrotza","sourcePosition":[-2.9721188,43.2778039]},{"operator":"renfe","sourceStopId":"13304","sourceName":"Zorrotza","sourcePosition":[-2.9721188,43.2778039]}],"r-13303":[{"operator":"renfe","sourceStopId":"13303","sourceName":"Olabeaga","sourcePosition":[-2.9553272,43.2643804]},{"operator":"renfe","sourceStopId":"13303","sourceName":"Olabeaga","sourcePosition":[-2.9553272,43.2643804]}],"r-13207":[{"operator":"renfe","sourceStopId":"13207","sourceName":"Autonomía","sourcePosition":[-2.9460321,43.2581339]},{"operator":"renfe","sourceStopId":"13207","sourceName":"Autonomía","sourcePosition":[-2.9460321,43.2581339]}],"r-13206":[{"operator":"renfe","sourceStopId":"13206","sourceName":"Ametzola","sourcePosition":[-2.9436598,43.2547065]},{"operator":"renfe","sourceStopId":"13206","sourceName":"Ametzola","sourcePosition":[-2.9436598,43.2547065]},{"operator":"renfe","sourceStopId":"13206","sourceName":"Ametzola","sourcePosition":[-2.9436598,43.2547065]}],"r-13205":[{"operator":"renfe","sourceStopId":"13205","sourceName":"Zabalburu","sourcePosition":[-2.9322841,43.2567911]},{"operator":"renfe","sourceStopId":"13205","sourceName":"Zabalburu","sourcePosition":[-2.9322841,43.2567911]}],"r-13501":[{"operator":"renfe","sourceStopId":"13501","sourceName":"Galindo","sourcePosition":[-3.0101966,43.3041349]}],"r-13120":[{"operator":"renfe","sourceStopId":"13120","sourceName":"Miribilla","sourcePosition":[-2.9305155,43.250429]}],"r-13119":[{"operator":"renfe","sourceStopId":"13119","sourceName":"La Peña de Bilbao","sourcePosition":[-2.9240429,43.2401669]}],"r-13114":[{"operator":"renfe","sourceStopId":"13114","sourceName":"Ollargan","sourcePosition":[-2.9164564,43.2424974]}],"r-13113":[{"operator":"renfe","sourceStopId":"13113","sourceName":"Bidebieta-Basauri","sourcePosition":[-2.8894856,43.237057]}],"r-05451":[{"operator":"renfe","sourceStopId":"05451","sourceName":"Bilbao la Concordia","sourcePosition":[-2.9263839,43.2601901]}],"r-05455":[{"operator":"renfe","sourceStopId":"05455","sourceName":"Basurto Hospital","sourcePosition":[-2.9538267,43.2597699]}],"r-05457":[{"operator":"renfe","sourceStopId":"05457","sourceName":"Zorrotza Zorrozgoiti","sourcePosition":[-2.9740116,43.2740398]}]},"selectionEvidence":[{"routeId":"L1","sourceOperator":"metro","sourceRouteId":"MB","sourceStopIds":["14","13","12","11","10","9","8","7","6","5","4","3"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[113,204],"reversedSourceVertexOrder":false,"anchors":[{"stopId":"m-14","sourceStopId":"14","originalPosition":[-2.96992,43.29098],"sourceVertex":113,"anchor":[-2.96992,43.2911]},{"stopId":"m-13","sourceStopId":"13","originalPosition":[-2.96239,43.28068],"sourceVertex":127,"anchor":[-2.96223,43.28036]},{"stopId":"m-12","sourceStopId":"12","originalPosition":[-2.95874,43.27495],"sourceVertex":133,"anchor":[-2.95911,43.27526]},{"stopId":"m-11","sourceStopId":"11","originalPosition":[-2.94954,43.27145],"sourceVertex":145,"anchor":[-2.94953,43.27108]},{"stopId":"m-10","sourceStopId":"10","originalPosition":[-2.94751,43.26252],"sourceVertex":156,"anchor":[-2.9472,43.26243]},{"stopId":"m-9","sourceStopId":"9","originalPosition":[-2.94179,43.26127],"sourceVertex":162,"anchor":[-2.94133,43.26116]},{"stopId":"m-8","sourceStopId":"8","originalPosition":[-2.93308,43.26259],"sourceVertex":171,"anchor":[-2.93277,43.26254]},{"stopId":"m-7","sourceStopId":"7","originalPosition":[-2.92761,43.2614],"sourceVertex":176,"anchor":[-2.92789,43.26145]},{"stopId":"m-6","sourceStopId":"6","originalPosition":[-2.92071,43.25968],"sourceVertex":183,"anchor":[-2.92116,43.25975]},{"stopId":"m-5","sourceStopId":"5","originalPosition":[-2.91335,43.2543],"sourceVertex":193,"anchor":[-2.91331,43.25452]},{"stopId":"m-4","sourceStopId":"4","originalPosition":[-2.91082,43.25116],"sourceVertex":197,"anchor":[-2.91094,43.25136]},{"stopId":"m-3","sourceStopId":"3","originalPosition":[-2.90573,43.247],"sourceVertex":204,"anchor":[-2.90559,43.24693]}]},{"routeId":"L2","sourceOperator":"metro","sourceRouteId":"MB","sourceStopIds":["32","13","12","11","10","9","8","7","6","5","4","3"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[178,334],"reversedSourceVertexOrder":false,"anchors":[{"stopId":"m-32","sourceStopId":"32","originalPosition":[-2.98245,43.28301],"sourceVertex":178,"anchor":[-2.98227,43.28305]},{"stopId":"m-13","sourceStopId":"13","originalPosition":[-2.96239,43.28068],"sourceVertex":245,"anchor":[-2.96245,43.28081]},{"stopId":"m-12","sourceStopId":"12","originalPosition":[-2.95874,43.27495],"sourceVertex":253,"anchor":[-2.95852,43.27482]},{"stopId":"m-11","sourceStopId":"11","originalPosition":[-2.94954,43.27145],"sourceVertex":272,"anchor":[-2.94968,43.27218]},{"stopId":"m-10","sourceStopId":"10","originalPosition":[-2.94751,43.26252],"sourceVertex":286,"anchor":[-2.94798,43.26262]},{"stopId":"m-9","sourceStopId":"9","originalPosition":[-2.94179,43.26127],"sourceVertex":287,"anchor":[-2.94104,43.26112]},{"stopId":"m-8","sourceStopId":"8","originalPosition":[-2.93308,43.26259],"sourceVertex":299,"anchor":[-2.93385,43.26276]},{"stopId":"m-7","sourceStopId":"7","originalPosition":[-2.92761,43.2614],"sourceVertex":300,"anchor":[-2.92699,43.26127]},{"stopId":"m-6","sourceStopId":"6","originalPosition":[-2.92071,43.25968],"sourceVertex":309,"anchor":[-2.92054,43.2596]},{"stopId":"m-5","sourceStopId":"5","originalPosition":[-2.91335,43.2543],"sourceVertex":324,"anchor":[-2.9132,43.25412]},{"stopId":"m-4","sourceStopId":"4","originalPosition":[-2.91082,43.25116],"sourceVertex":329,"anchor":[-2.91052,43.25091]},{"stopId":"m-3","sourceStopId":"3","originalPosition":[-2.90573,43.247],"sourceVertex":334,"anchor":[-2.90511,43.24665]}]},{"routeId":"L3","sourceOperator":"euskotren","sourceRouteId":"ES:Euskotren:Line:9:","sourceStopIds":["ES:Euskotren:StopPlace:2597:","ES:Euskotren:StopPlace:2641:","ES:Euskotren:StopPlace:2577:","ES:Euskotren:StopPlace:2617:","ES:Euskotren:StopPlace:2609:","ES:Euskotren:StopPlace:2663:","ES:Euskotren:StopPlace:2639:"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[1,109],"reversedSourceVertexOrder":false,"anchors":[{"stopId":"e-2597","sourceStopId":"ES:Euskotren:StopPlace:2597:","originalPosition":[-2.925007,43.268919],"sourceVertex":1,"anchor":[-2.924972,43.269064]},{"stopId":"e-2641","sourceStopId":"ES:Euskotren:StopPlace:2641:","originalPosition":[-2.921277,43.267102],"sourceVertex":8,"anchor":[-2.921334,43.267422]},{"stopId":"m-6","sourceStopId":"ES:Euskotren:StopPlace:2577:","originalPosition":[-2.922197,43.259983],"sourceVertex":29,"anchor":[-2.921854,43.26012]},{"stopId":"e-2617","sourceStopId":"ES:Euskotren:StopPlace:2617:","originalPosition":[-2.914977,43.264911],"sourceVertex":47,"anchor":[-2.91398,43.264143]},{"stopId":"e-2609","sourceStopId":"ES:Euskotren:StopPlace:2609:","originalPosition":[-2.906729,43.258051],"sourceVertex":68,"anchor":[-2.906425,43.258518]},{"stopId":"e-2663","sourceStopId":"ES:Euskotren:StopPlace:2663:","originalPosition":[-2.900123,43.259503],"sourceVertex":81,"anchor":[-2.899472,43.258999]},{"stopId":"e-2639","sourceStopId":"ES:Euskotren:StopPlace:2639:","originalPosition":[-2.889764,43.251142],"sourceVertex":109,"anchor":[-2.889683,43.251099]}]},{"routeId":"TR","sourceOperator":"euskotren","sourceRouteId":"ES:Euskotren:Line:5:","sourceStopIds":["ES:Euskotren:StopPlace:1477:","ES:Euskotren:StopPlace:1481:","ES:Euskotren:StopPlace:1472:","ES:Euskotren:StopPlace:1470:","ES:Euskotren:StopPlace:1474:","ES:Euskotren:StopPlace:1479:","ES:Euskotren:StopPlace:1475:","ES:Euskotren:StopPlace:1476:","ES:Euskotren:StopPlace:1469:","ES:Euskotren:StopPlace:1478:","ES:Euskotren:StopPlace:1471:","ES:Euskotren:StopPlace:1480:","ES:Euskotren:StopPlace:1473:","ES:Euskotren:StopPlace:1468:","ES:Euskotren:StopPlace:2673:","ES:Euskotren:StopPlace:2674:"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[0,216],"reversedSourceVertexOrder":false,"anchors":[{"stopId":"e-1477","sourceStopId":"ES:Euskotren:StopPlace:1477:","originalPosition":[-2.944349,43.257767],"sourceVertex":0,"anchor":[-2.944349,43.257767]},{"stopId":"e-1481","sourceStopId":"ES:Euskotren:StopPlace:1481:","originalPosition":[-2.949072,43.257993],"sourceVertex":7,"anchor":[-2.94907,43.258004]},{"stopId":"e-1472","sourceStopId":"ES:Euskotren:StopPlace:1472:","originalPosition":[-2.951244,43.259796],"sourceVertex":15,"anchor":[-2.95123,43.259792]},{"stopId":"m-10","sourceStopId":"ES:Euskotren:StopPlace:1470:","originalPosition":[-2.948939,43.261742],"sourceVertex":27,"anchor":[-2.948951,43.261733]},{"stopId":"e-1474","sourceStopId":"ES:Euskotren:StopPlace:1474:","originalPosition":[-2.946222,43.263192],"sourceVertex":36,"anchor":[-2.946205,43.263187]},{"stopId":"e-1479","sourceStopId":"ES:Euskotren:StopPlace:1479:","originalPosition":[-2.943894,43.266261],"sourceVertex":46,"anchor":[-2.943886,43.26625]},{"stopId":"e-1475","sourceStopId":"ES:Euskotren:StopPlace:1475:","originalPosition":[-2.9407,43.268585],"sourceVertex":55,"anchor":[-2.94069,43.268573]},{"stopId":"e-1476","sourceStopId":"ES:Euskotren:StopPlace:1476:","originalPosition":[-2.936763,43.2687],"sourceVertex":62,"anchor":[-2.936767,43.268688]},{"stopId":"e-1469","sourceStopId":"ES:Euskotren:StopPlace:1469:","originalPosition":[-2.928733,43.266303],"sourceVertex":79,"anchor":[-2.92875,43.26629]},{"stopId":"e-1478","sourceStopId":"ES:Euskotren:StopPlace:1478:","originalPosition":[-2.926262,43.264483],"sourceVertex":86,"anchor":[-2.92627,43.264475]},{"stopId":"m-7","sourceStopId":"ES:Euskotren:StopPlace:1471:","originalPosition":[-2.926658,43.261052],"sourceVertex":97,"anchor":[-2.926658,43.261052]},{"stopId":"e-1480","sourceStopId":"ES:Euskotren:StopPlace:1480:","originalPosition":[-2.925938,43.25907],"sourceVertex":108,"anchor":[-2.92595,43.259105]},{"stopId":"e-1473","sourceStopId":"ES:Euskotren:StopPlace:1473:","originalPosition":[-2.924369,43.255795],"sourceVertex":118,"anchor":[-2.924369,43.255795]},{"stopId":"e-1468","sourceStopId":"ES:Euskotren:StopPlace:1468:","originalPosition":[-2.921513,43.254113],"sourceVertex":126,"anchor":[-2.921513,43.254113]},{"stopId":"e-2673","sourceStopId":"ES:Euskotren:StopPlace:2673:","originalPosition":[-2.915783,43.245503],"sourceVertex":197,"anchor":[-2.915759,43.245463]},{"stopId":"m-3","sourceStopId":"ES:Euskotren:StopPlace:2674:","originalPosition":[-2.904919,43.247252],"sourceVertex":216,"anchor":[-2.9049,43.247232]}]},{"routeId":"C1","sourceOperator":"renfe","sourceRouteId":"60T0002C1","sourceStopIds":["13401","13400","13305","13304","13303","13208","13207","13206","13205","13200"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[45,180],"reversedSourceVertexOrder":true,"anchors":[{"stopId":"r-13401","sourceStopId":"13401","originalPosition":[-2.9940107,43.3085201],"sourceVertex":135,"anchor":[-2.9941678,43.3086735]},{"stopId":"r-13400","sourceStopId":"13400","originalPosition":[-2.984409,43.3000264],"sourceVertex":120,"anchor":[-2.9832394,43.2996655]},{"stopId":"r-13305","sourceStopId":"13305","originalPosition":[-2.9754132,43.2878137],"sourceVertex":96,"anchor":[-2.9753052,43.2876501]},{"stopId":"r-13304","sourceStopId":"13304","originalPosition":[-2.9721188,43.2778039],"sourceVertex":84,"anchor":[-2.9709006,43.2769034]},{"stopId":"r-13303","sourceStopId":"13303","originalPosition":[-2.9553272,43.2643804],"sourceVertex":50,"anchor":[-2.9555321,43.2641589]},{"stopId":"m-10","sourceStopId":"13208","originalPosition":[-2.9488341,43.2615306],"sourceVertex":40,"anchor":[-2.9494543,43.2621606]},{"stopId":"r-13207","sourceStopId":"13207","originalPosition":[-2.9460321,43.2581339],"sourceVertex":32,"anchor":[-2.9459871,43.2582286]},{"stopId":"r-13206","sourceStopId":"13206","originalPosition":[-2.9436598,43.2547065],"sourceVertex":24,"anchor":[-2.9437924,43.2544953]},{"stopId":"r-13205","sourceStopId":"13205","originalPosition":[-2.9322841,43.2567911],"sourceVertex":7,"anchor":[-2.9323585,43.2565147]},{"stopId":"m-7","sourceStopId":"13200","originalPosition":[-2.9285592,43.2601304],"sourceVertex":0,"anchor":[-2.9283048,43.260169]}]},{"routeId":"C2","sourceOperator":"renfe","sourceRouteId":"60T0004C2","sourceStopIds":["13501","13400","13305","13304","13303","13208","13207","13206","13205","13200"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[148,290],"reversedSourceVertexOrder":true,"anchors":[{"stopId":"r-13501","sourceStopId":"13501","originalPosition":[-3.0101966,43.3041349],"sourceVertex":142,"anchor":[-3.012257,43.3041614]},{"stopId":"r-13400","sourceStopId":"13400","originalPosition":[-2.984409,43.3000264],"sourceVertex":115,"anchor":[-2.9842338,43.3001703]},{"stopId":"r-13305","sourceStopId":"13305","originalPosition":[-2.9754132,43.2878137],"sourceVertex":90,"anchor":[-2.9753052,43.2876501]},{"stopId":"r-13304","sourceStopId":"13304","originalPosition":[-2.9721188,43.2778039],"sourceVertex":77,"anchor":[-2.9709006,43.2769034]},{"stopId":"r-13303","sourceStopId":"13303","originalPosition":[-2.9553272,43.2643804],"sourceVertex":45,"anchor":[-2.9555321,43.2641589]},{"stopId":"m-10","sourceStopId":"13208","originalPosition":[-2.9488341,43.2615306],"sourceVertex":35,"anchor":[-2.9494543,43.2621606]},{"stopId":"r-13207","sourceStopId":"13207","originalPosition":[-2.9460321,43.2581339],"sourceVertex":27,"anchor":[-2.9459871,43.2582286]},{"stopId":"r-13206","sourceStopId":"13206","originalPosition":[-2.9436598,43.2547065],"sourceVertex":19,"anchor":[-2.9437924,43.2544953]},{"stopId":"r-13205","sourceStopId":"13205","originalPosition":[-2.9322841,43.2567911],"sourceVertex":6,"anchor":[-2.9323585,43.2565147]},{"stopId":"m-7","sourceStopId":"13200","originalPosition":[-2.9285592,43.2601304],"sourceVertex":0,"anchor":[-2.9283741,43.2602823]}]},{"routeId":"C3","sourceOperator":"renfe","sourceRouteId":"60T0005C3","sourceStopIds":["13200","13120","13119","13114","13113"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[0,90],"reversedSourceVertexOrder":false,"anchors":[{"stopId":"m-7","sourceStopId":"13200","originalPosition":[-2.9285592,43.2601304],"sourceVertex":0,"anchor":[-2.9278003,43.2604598]},{"stopId":"r-13120","sourceStopId":"13120","originalPosition":[-2.9305155,43.250429],"sourceVertex":15,"anchor":[-2.9325942,43.2534182]},{"stopId":"r-13119","sourceStopId":"13119","originalPosition":[-2.9240429,43.2401669],"sourceVertex":29,"anchor":[-2.923977,43.2400375]},{"stopId":"r-13114","sourceStopId":"13114","originalPosition":[-2.9164564,43.2424974],"sourceVertex":44,"anchor":[-2.914998,43.2437486]},{"stopId":"r-13113","sourceStopId":"13113","originalPosition":[-2.8894856,43.237057],"sourceVertex":90,"anchor":[-2.8898493,43.2370604]}]},{"routeId":"C4","sourceOperator":"renfe","sourceRouteId":"60T0007C4","sourceStopIds":["05451","13206","05455","05457"],"retainedEveryIntermediateStop":true,"sourceShapeVertices":[0,78],"reversedSourceVertexOrder":true,"anchors":[{"stopId":"r-05451","sourceStopId":"05451","originalPosition":[-2.9263839,43.2601901],"sourceVertex":552,"anchor":[-2.9268775,43.2596205]},{"stopId":"r-13206","sourceStopId":"13206","originalPosition":[-2.9436598,43.2547065],"sourceVertex":532,"anchor":[-2.9434664,43.2546779]},{"stopId":"r-05455","sourceStopId":"05455","originalPosition":[-2.9538267,43.2597699],"sourceVertex":510,"anchor":[-2.9538731,43.2600025]},{"stopId":"r-05457","sourceStopId":"05457","originalPosition":[-2.9740116,43.2740398],"sourceVertex":474,"anchor":[-2.9738098,43.2742282]}]}],"displayPolicy":"Remove redundant -Bilbao locality suffix in station labels; retain exact operator names in sourceIdentities. Unknown or mixed-source accessibility remains unconfirmed.","interchanges":[{"id":"m-10","name":"San Mamés","type":"multimodal interchange","sources":["https://www.metrobilbao.eus/es/estaciones","https://www.renfe.com/content/dam/renfe/es/Viajeros/Secciones/Cercanias/Mapas/2025/plano-cercanias-bilbao-enero-2026.pdf"]},{"id":"m-7","name":"Abando","type":"multimodal interchange","sources":["https://www.renfe.com/es/es/inspirate/estaciones/bilbao-abando-indalecio-prieto"]},{"id":"m-6","name":"Zazpikaleak/Casco Viejo","type":"metro interchange","sources":["https://www.metrobilbao.eus/es/estaciones"]},{"id":"m-3","name":"Bolueta","type":"metro/tram interchange","sources":["https://www.euskotren.eus/sites/default/files/horarios/tranvia%20bilbao_horizontal-A3-%20Invierno%202025_0.pdf"]},{"id":"r-13206","name":"Ametzola","type":"rail interchange","sources":["https://www.renfe.com/content/dam/renfe/es/Viajeros/Secciones/Cercanias/Mapas/2025/plano-cercanias-bilbao-enero-2026.pdf"]}],"palettePolicy":"Source GTFS colours retained for L3, TR and C1-C4. The Metro Bilbao aggregate MB feed supplies orange #FF6505; L2 uses the documented black line convention, represented by OTI ink #111820. Low-contrast source colours retain protective casings.","editorialComposition":{"$comment":"SPDX-License-Identifier: CC-BY-4.0. Attributed editorial composition, not surveyed coordinates.","author":"OTI cartographic review - metropolitan Bilbao","reason":"Separate metro, riverfront tram and rail corridors while retaining every selected intermediate station and the five verified interchange identities. Expand the tram and rail loops around the metro spine; keep unserved crossings distinct.","coordinateSystem":"planar","bounds":[-720,-160,2920,1870],"constraints":[{"kind":"fixed-node","targetId":"m-14","value":[450,50],"labelSide":"right"},{"kind":"fixed-node","targetId":"m-32","value":[150,350],"labelSide":"left"},{"kind":"fixed-node","targetId":"m-13","value":[450,350],"labelSide":"right"},{"kind":"fixed-node","targetId":"m-12","value":[600,500],"labelSide":"top-right"},{"kind":"fixed-node","targetId":"m-11","value":[750,650],"labelSide":"top-right"},{"kind":"fixed-node","targetId":"m-10","value":[900,800],"labelSide":"bottom-left"},{"kind":"fixed-node","targetId":"m-9","value":[1100,800],"labelSide":"top"},{"kind":"fixed-node","targetId":"m-8","value":[1300,800],"labelSide":"top"},{"kind":"fixed-node","targetId":"m-7","value":[1500,800],"labelSide":"top-right"},{"kind":"fixed-node","targetId":"m-6","value":[1750,800],"labelSide":"bottom-right"},{"kind":"fixed-node","targetId":"m-5","value":[1950,800],"labelSide":"top"},{"kind":"fixed-node","targetId":"m-4","value":[2150,800],"labelSide":"top"},{"kind":"fixed-node","targetId":"m-3","value":[2300,950],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-2597","value":[1650,100],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-2641","value":[1650,325],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-2617","value":[1950,600],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-2609","value":[2150,400],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-2663","value":[2350,400],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-2639","value":[2550,400],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-1477","value":[600,1400],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"e-1481","value":[600,1100],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-1472","value":[750,950],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-1474","value":[900,600],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-1479","value":[900,100],"labelSide":"top-right"},{"kind":"fixed-node","targetId":"e-1475","value":[1150,100],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-1476","value":[1350,100],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-1469","value":[1450,300],"labelSide":"left"},{"kind":"fixed-node","targetId":"e-1478","value":[1450,500],"labelSide":"left"},{"kind":"fixed-node","targetId":"e-1480","value":[1950,1100],"labelSide":"right"},{"kind":"fixed-node","targetId":"e-1473","value":[2100,1250],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-1468","value":[2300,1250],"labelSide":"top"},{"kind":"fixed-node","targetId":"e-2673","value":[2500,1250],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13401","value":[-200,100],"labelSide":"top"},{"kind":"fixed-node","targetId":"r-13400","value":[-100,450],"labelSide":"left"},{"kind":"fixed-node","targetId":"r-13305","value":[-100,700],"labelSide":"left"},{"kind":"fixed-node","targetId":"r-13304","value":[100,900],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13303","value":[450,900],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13207","value":[1050,1000],"labelSide":"right"},{"kind":"fixed-node","targetId":"r-13206","value":[1200,1200],"labelSide":"bottom-left"},{"kind":"fixed-node","targetId":"r-13205","value":[1500,1200],"labelSide":"left"},{"kind":"fixed-node","targetId":"r-13501","value":[-400,300],"labelSide":"left"},{"kind":"fixed-node","targetId":"r-13120","value":[1750,1450],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13119","value":[2000,1450],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13114","value":[2250,1450],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-13113","value":[2500,1450],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-05451","value":[1300,1600],"labelSide":"right"},{"kind":"fixed-node","targetId":"r-05455","value":[450,1200],"labelSide":"bottom"},{"kind":"fixed-node","targetId":"r-05457","value":[100,1200],"labelSide":"bottom"}],"routeGuides":[{"kind":"route-approach","targetId":"C3","afterStopId":"m-7","beforeStopId":"r-13120","waypoints":[[1650,950],[1650,1350]],"reason":"Separate the south-east rail branch from the Zabalburu and Arriaga station symbols, and reserve clear label space below Casco Viejo."},{"kind":"route-approach","targetId":"L3","afterStopId":"e-2641","beforeStopId":"m-6","waypoints":[[1750,425]],"reason":"Make a vertical approach to Casco Viejo while reserving a clear label sector above the Abando interchange."},{"kind":"route-approach","targetId":"TR","afterStopId":"m-7","beforeStopId":"e-1480","waypoints":[[1500,1000]],"reason":"Reserve a quiet label sector below Casco Viejo. The tram separates from the rail corridor before Zabalburu and does not acquire an unserved stop."}]},"generator":"opentransitinformation@0.3.2","profile":"schematic","generatedAt":"2026-10-23T10:52:12.064Z"}BilbaoMetro / Rail / Tram - selected central networkL1 - Metro / Plentzia - EtxebarriL2 - Metro / Kabiezes - BasauriL3 - Metro / Matiko - KukullagaTR - Tram / La Casilla - BoluetaC1 - Rail / Santurtzi - AbandoC2 - Rail / Muskiz - AbandoC3 - Rail / Abando - OrduñaC4 - Rail / La Concordia - La CalzadaLutxana - Wheelchair access unconfirmedSan Ignazio - Wheelchair access unconfirmedSarriko - Wheelchair access unconfirmedDeustu - Wheelchair access unconfirmedSan Mamés - Wheelchair access unconfirmedIndautxu - Wheelchair access unconfirmedEliptikoa - Wheelchair access unconfirmedAbando - Wheelchair access unconfirmedZazpikaleak/Casco Viejo - Wheelchair access unconfirmedSantutxu - Wheelchair access unconfirmedBasarrate - Wheelchair access unconfirmedBolueta - Wheelchair access unconfirmedGurutzeta/Cruces - Wheelchair access unconfirmedMatiko - Wheelchair access unconfirmedUribarri - Wheelchair access unconfirmedZurbaranbarri - Wheelchair access unconfirmedTxurdinaga - Wheelchair access unconfirmedOtxarkoaga - Wheelchair access unconfirmedKukullaga-Etxebarri - Wheelchair access unconfirmedLa Casilla - Wheelchair access unconfirmedBasurto - Wheelchair access unconfirmedHospital/Ospitalea - Wheelchair access unconfirmedSabino Arana - Wheelchair access unconfirmedEuskalduna - Wheelchair access unconfirmedAbandoibarra - Wheelchair access unconfirmedGuggenheim - Wheelchair access unconfirmedUribitarte - Wheelchair access unconfirmedPio Baroja - Wheelchair access unconfirmedArriaga - Wheelchair access unconfirmedRibera - Wheelchair access unconfirmedAtxuri - Wheelchair access unconfirmedAbusu - Wheelchair access unconfirmedSestao - Wheelchair access unconfirmedDesertu-Barakaldo - Wheelchair access unconfirmedLutxana-Barakaldo - Wheelchair access unconfirmedZorrotza - Wheelchair access unconfirmedOlabeaga - Wheelchair access unconfirmedAutonomía - Wheelchair access unconfirmedAmetzola - Wheelchair access unconfirmedZabalburu - Wheelchair access unconfirmedGalindo - Wheelchair access unconfirmedMiribilla - Wheelchair access unconfirmedLa Peña de Bilbao - Wheelchair access unconfirmedOllargan - Wheelchair access unconfirmedBidebieta-Basauri - Wheelchair access unconfirmedBilbao la Concordia - Wheelchair access unconfirmedBasurto Hospital - Wheelchair access unconfirmedZorrotza Zorrozgoiti - Wheelchair access unconfirmedC1C2C3AbandoSan MamésTRBoluetaZazpikaleak/CascoViejoAmetzolaDeustuSarrikoSan IgnazioBasarrateSantutxuEliptikoaIndautxuZabalburuAutonomíaOlabeagaZorrotzaLutxana-BarakaldoDesertu-BarakaldoTRLa CasillaL3MatikoL3Kukullaga-EtxebarriC4Bilbao la ConcordiaAtxuriUribitarteHospital/OspitaleaRiberaSabino AranaAbandoibarraGuggenheimPio BarojaEuskaldunaArriagaBasurtoTxurdinagaZurbaranbarriUribarriOtxarkoagaAbusuLutxanaGurutzeta/CrucesBasurto HospitalZorrotzaZorrozgoitiBidebieta-BasauriOllarganLa Peña de BilbaoMiribillaSestaoGalindoL1 - Metro / Plentzia - EtxebarriL2 - Metro / Kabiezes - BasauriL3 - Metro / Matiko - KukullagaTR - Tram / La Casilla - BoluetaC1 - Rail / Santurtzi - AbandoC2 - Rail / Muskiz - AbandoC3 - Rail / Abando - OrduñaC4 - Rail / La Concordia - La CalzadaCTB / Metro Bilbao, Euskotren, Renfe - From 2026-10-23 - Until 2026-11-21 - Operator data: CC-BY-4.0Diagram not to scale
Station list

L1 - Metro / Plentzia - Etxebarri: Lutxana → San Ignazio → Sarriko → Deustu → San Mamés → Indautxu → Eliptikoa → Abando → Zazpikaleak/Casco Viejo → Santutxu → Basarrate → Bolueta.

L2 - Metro / Kabiezes - Basauri: Gurutzeta/Cruces → San Ignazio → Sarriko → Deustu → San Mamés → Indautxu → Eliptikoa → Abando → Zazpikaleak/Casco Viejo → Santutxu → Basarrate → Bolueta.

L3 - Metro / Matiko - Kukullaga: Matiko → Uribarri → Zazpikaleak/Casco Viejo → Zurbaranbarri → Txurdinaga → Otxarkoaga → Kukullaga-Etxebarri.

TR - Tram / La Casilla - Bolueta: La Casilla → Basurto → Hospital/Ospitalea → San Mamés → Sabino Arana → Euskalduna → Abandoibarra → Guggenheim → Uribitarte → Pio Baroja → Abando → Arriaga → Ribera → Atxuri → Abusu → Bolueta.

C1 - Rail / Santurtzi - Abando: Sestao → Desertu-Barakaldo → Lutxana-Barakaldo → Zorrotza → Olabeaga → San Mamés → Autonomía → Ametzola → Zabalburu → Abando.

C2 - Rail / Muskiz - Abando: Galindo → Desertu-Barakaldo → Lutxana-Barakaldo → Zorrotza → Olabeaga → San Mamés → Autonomía → Ametzola → Zabalburu → Abando.

C3 - Rail / Abando - Orduña: Abando → Miribilla → La Peña de Bilbao → Ollargan → Bidebieta-Basauri.

C4 - Rail / La Concordia - La Calzada: Bilbao la Concordia → Ametzola → Basurto Hospital → Zorrotza Zorrozgoiti.

Sources & downloads

CTB / Metro Bilbao / Euskotren / Renfe - CC-BY-4.0.
© OpenStreetMap contributors - ODbL-1.0.

02 / The shared foundations

From source data
to published information.

The proposed framework connects service data, editorial decisions and versioned outputs. Research is intended to test the conventions used across networks and channels.

  1. 01Transport data

    What runs, where and when.

  2. 02Editorial knowledge

    Names, route identity and layout choices.

  3. 03Draft rules and tools

    Specifications and experimental software.

  4. 04Published views

    Outputs for print, screens and further research.

Meet the ecosystem

Research notes

Research notes
and proposals

Contributions / Research draft

From a proposed change to a published result

The contribution study examines how open projects record evidence, review decisions and releases. It proposes linking a transport-information change to its exact revision and the output that contains it.

Project resources / Research draft

Project facts and reusable resources

Six detailed comparisons examine how open initiatives connect project descriptions, evidence, downloads and enquiry routes. OTI proposes a maintained source for its public facts and a record of the version, scope and rights of each resource.

Sound / Research draft

Defining events for transport sounds

OTI's sound study distinguishes network identity, attention cues and information about an event. Its proposed record identifies the confirmed event and essential message before attaching an optional sound.

Typography / Research draft

Typeface comparisons and passenger tasks

The typography study records the application and exact font revision before comparing specimens. It examines visible size, layout and writing-system coverage, with original font subsets prepared for further testing.

Pictograms / Research draft

Linking pictograms to facilities and current state

The pictogram study separates the meaning of a symbol from the facility it refers to and observations about that facility. Its proposed record distinguishes existence, availability and onward continuity.

Colour / Research draft

Source colour and display treatments

The colour study proposes retaining network colour definitions and recording derived display treatments separately. Its calculations examine declared digital conditions; passenger performance and physical media require further evidence.

04 / Take part

Contribute evidence
or a reproducible example.

Prepare a correction, research reference or software example with its source and scope.