Getting There

By air — The nearest airport is Inca Manco Cápac International in Juliaca (JUL), 45 kilometres north of Puno. Daily flights from Lima, Cusco, and Arequipa arrive throughout the day. A taxi from Juliaca to central Puno costs around 80 to 120 soles and takes about an hour; cheaper colectivos run from outside the airport for around 20 to 25 soles per seat.

By train — The PeruRail Andean Explorer runs from Cuzco to Puno several days a week. It is slow (around 10 hours), expensive, and a genuine scenic experience — climbing across the altiplano with full meals and observation cars. Book well in advance. A more modern option is the high-end Belmond Andean Explorer overnight train.

By bus — Frequent overnight buses connect Puno with Cuzco (6–7 hours), Arequipa (6 hours), and Lima (around 18 hours). The reputable long-distance operators are Cruz del Sur, Oltursa, and Civa. The main bus terminal (Terminal Terrestre) is around 2 km south of the centre.

By international bus — Frequent buses cross the Bolivian border at Yunguyo–Kasani, with onward connection to Copacabana (3 hours from Puno) and La Paz (around 7 hours). Have your passport and the cost of the Bolivian visa (if applicable) in cash and ready.