Historical Site
About This Attraction
Machu Picchu, located in the Cusco region of Peru, is a 15th-century Inca citadel and one of the most iconic archaeological sites in the world. It sits atop a mountain ridge 2,430 meters above sea level, offering breathtaking views of the surrounding Andes. Visitors can explore its well-preserved ruins, which include temples, terraces, and other structures made from precisely cut stones. The site is open to tourists every day, with Machu Picchu opening hours typically starting early in the morning and ending mid-afternoon to help preserve this historic wonder.
To visit Machu Picchu, it is recommended to purchase tickets in advance due to its popularity and daily visitor limits. The site is accessible by train from Cusco followed by a short bus ride or a scenic hike along the Inca Trail. While exploring, tourists should be prepared for varying weather conditions and bring essentials like water and sun protection. Its important to respect the sites rules to help maintain its condition for future generations.
Location Details
Address
Machu Picchu, Aguas Calientes, Cusco Region, Peru
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
$60
Child
$35
Student
$41
Senior
$60
Opening Hours & Booking
Open
Days
Daily
Hours
6:00 AM - 5:30 PM
Seasonality
Year-round
Booking
Booking Required?
Yes
Book Your Visit
*Prices may vary. Check official website for the most up-to-date information.
Nearby Attractions
The Sacred Valley in Cusco, Peru is known for its stunning landscapes and rich cultural…
Learn More
Sacsayhuamán is an impressive archaeological site located just outside of Cusco, Peru. It is known…
Learn More
San Pedro Market in Cusco is a popular destination for both locals and tourists. It…
Learn More
Qorikancha, located in Cusco, Peru, is a historic site that once served as the most…
Learn More
Sandboarding in Huacachina offers a thrilling experience amidst towering sand dunes. Located in Peru, Huacachina…
Learn More
Barranco is a district in Lima, Peru, known for its artistic vibe and bohemian atmosphere.…
Learn More
Miraflores is a popular district in Lima, Peru, known for its scenic coastal views and…
Learn More
Huaca Pucllana is an ancient archaeological site located in the Miraflores district of Lima, Peru.…
Learn More
Plaza Mayor, also known as Plaza de Armas, is the historic heart of Lima, Peru.…
Learn More
The Larco Museum in Lima is renowned for its extensive collection of pre-Columbian art. Founded…
Learn More
";
}
// Initialize modal controls
const initModalControls = function() {
console.log('Initializing modal controls');
const modal = document.getElementById('attraction-modal');
const closeBtn = document.querySelector('.attraction-modal-close');
if (closeBtn) {
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
document.body.style.overflow = '';
});
}
window.addEventListener('click', function(event) {
if (event.target === modal) {
modal.style.display = 'none';
document.body.style.overflow = '';
}
});
// Make attraction cards clickable
const attractionCards = document.querySelectorAll('.attraction-card');
console.log('Found ' + attractionCards.length + ' attraction cards');
attractionCards.forEach(card => {
card.addEventListener('click', function(e) {
openModalWithCardData(this);
});
});
};
// Function to open modal with card data
const openModalWithCardData = function(card) {
// Get data from hidden div
const data = card.querySelector('.attraction-full-data');
if (!data) {
console.error('No attraction data found in card');
return;
}
const modal = document.getElementById('attraction-modal');
if (!modal) {
console.error('Modal element still not found after creation attempt');
return;
}
// Helper function to safely get element text
function getElementText(selector) {
const element = data.querySelector(selector);
return element ? element.textContent : '';
}
try {
// Basic Info
document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name');
document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full');
document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full');
// Reset all containers to hidden
['attraction-modal-hours-container', 'attraction-modal-price-container',
'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => {
const container = document.getElementById(id);
if (container) container.style.display = 'none';
});
// Rating
const ratingText = getElementText('.attraction-rating-full');
if (ratingText) {
const ratingValue = parseFloat(ratingText);
if (!isNaN(ratingValue)) {
const ratingValueEl = document.getElementById('attraction-modal-rating-value');
const ratingFillEl = document.getElementById('attraction-modal-rating-fill');
if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10';
if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%';
}
}
// Show the modal
modal.style.display = 'block';
document.body.style.overflow = 'hidden'; // Prevent background scrolling
console.log('Modal opened successfully');
} catch (error) {
console.error('Error opening modal:', error);
}
};
// Try to create the modal
const created = createModal();
console.log('Modal created:', created);
// If not created (already exists), initialize the controls
if (!created) {
initModalControls();
}
// Also initialize distance toggle
const distanceToggle = document.getElementById('distance-unit-toggle');
if (distanceToggle) {
distanceToggle.addEventListener('change', function() {
const showKm = this.checked;
// Update toggle labels
const labels = document.querySelectorAll('.toggle-label');
if (labels.length >= 2) {
labels[0].style.opacity = showKm ? '0.5' : '1';
labels[1].style.opacity = showKm ? '1' : '0.5';
}
// Update all distance displays
document.querySelectorAll('.nearby-attraction-card').forEach(card => {
const kmEl = card.querySelector('.distance-km');
const miEl = card.querySelector('.distance-mi');
if (kmEl && miEl) {
kmEl.style.display = showKm ? 'inline' : 'none';
miEl.style.display = showKm ? 'none' : 'inline';
}
});
});
}
});