a:6:{i:0;s:19866:"				<div class="h1"><h1>Golden Triangle Tour </h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.indiatourandvacations.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.indiatourandvacations.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Golden Triangle Tour </p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">GT2015-16</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Jaipur, Agra</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.indiatourandvacations.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Triangle Tour  - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="43453"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/376887/86012.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/86012.jpg"  width="150" height="150"    alt="Taj Mahal" title="Taj Mahal" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/376887/86010.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/86010.jpg"  width="150" height="150"    alt="Qutab Minar" title="Qutab Minar" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/376887/86013.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/86013.jpg"  width="150" height="150"    alt="Golden Triangle Tour " title="Golden Triangle Tour " /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_13/376887/86014.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/86014.jpg"  width="150" height="150"    alt="Golden Triangle Tour " title="Golden Triangle Tour " /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Any domestic or international airfare to/from India including International airport tax. <br />
Any Meals not specified. <br />
Camera fee wherever levied. <br />
Monument Entrance Charges.<br />
Chowki Dhani Entrance Fees<br />
Any item not mentioned in the quote. <br />
Porterage At Hotels And Airports, Tips, Insurance, Laundry, Liquors, Wine, Etc. <br />
Any supplement/reduction resulting from change in the itinerary due to rescheduling or cancellation of flights/trains that are quoted for. <br />
Expenses caused by factors beyond our control like rail and flight Delays, road blocks, Political disturbances, natural phenomenon &taxes etc.<br />
Early check in and late check out charges. Standard check in time at hotel is 1400 hrs and check out time is 1200 hrs. The courtesy early check in/late check out shall be requested on requirement which shall be subject to hotel approval and room availability.01-0431-03<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival at New Delhi Airport
								</p>
								<p class="aj">Upon arrival at New Delhi Airport, you will be met and assisted by our representative and will be transferred to your pre-booked hotel.<br />
<br />
Delhi is said to be one of the oldest existing cities in the world, along with Jerusalem and Varanasi. Legend estimates it to be over 5,000 years old. Over the millennia, Delhi is said to have been built and destroyed 11 times. The oldest alleged incarnation of the city shows up in the Indian mythological epic Mahabharata as Indraprastha.<br />
<br />
Check-in at your hotel with a traditional Indian welcome. Overnight Stay At the Hotel, New Delhi<br />
Overnight Stay: Delhi</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Full Day Old and New Delhi Sightseeing
								</p>
								<p class="aj">After breakfast at the hotel, depart for a Guided Tour of Old & New Delhi.<br />
<br />
VISIT RED FORT<br />
“The Red Fort and the city of Shahjahanabad was constructed by the Emperor Shah Jahan in 1639 A.D. The layout of the Red Fort was organised to retain and integrate this site with the Salimgarh Fort.The fortress palace is an important focal point of the medieval city of Shahjahanabad. The planning and aesthetics of the Red Fort represent the zenith of Mughal creativity which prevailed during the reign of Emperor Shahjahan. This Fort has had many developments added on after its construction by Emperor.<br />
<br />
VISIT JAMA MASJID.<br />
“Jama Masjid is the principal mosque of Old Delhi in India. Commissioned by the Mughal Emperor Shah Jahan, builder of the Taj Mahal, and completed in the year 1656 AD, it is one of the Largest and best- known mosques in India”. Shahjahan. The significant phases of development were under Aurangzeb and later Mughal rulers.<br />
<br />
DRIVE PAST RAJ GHAT ( THE MAHATMA GANDHI MEMORIAL )<br />
“Raj Ghat (meaning Royal Steps) is a beautiful, peaceful memorial to Mahatma Gandhi. This simple and somber black granite platform marks the site where, on January 31, 1948, Gandhi's last rites/cremation were performed. An eternal flame burns perpetually in the middle (end) of the square stone. The memorial was designed to reflect Gandhi's simple life. The inscription in the stone, "He Ram" ("Oh God"), is believed to be Gandhi's last words”. <br />
<br />
Lunch at the Place of Choice<br />
<br />
After Lunch depart for New Delhi Sightseeing Tour.<br />
<br />
VISIT INDIA GATE AND DRIVE RASHTRAPATI BHAWAN. <br />
“India Gate is one of the largest war memorials in India. Situated in the heart of New Delhi. India Gate is prominent landmark in Delhi & Commemorates the members of the erstwhile British Indian Army who lost their lives fighting for the Indian Empire in World War I & the Afghan Wars. Following India’s independence India Gate became site of the Indian Army’s Tomb of the Unknown Soldier, known as the Amar Jawan Jyoti.<br />
<br />
VISIT HIMAYUN’S TOMB<br />
"Humayun's tomb in the capital Delhi is a fine specimen of the great Mughal architecture. Built in 1570, the tomb is of particular cultural significance as it was the first garden-tomb on the Indian subcontinent. Its unique beauty is said to have inspired several major architectural innovations, culminating in the construction of the unparalleled Taj Mahal. In many ways, this magnificent red and white sandstone building is as spectacular as the famous 'monument to love' in Agra. This historic monument was erected by Humayun's queen Hamida Banu Begam (Haji Begam) at a cost of about 1.5 million. It is believed that she designed the Tomb".<br />
<br />
VISIT LOTUS TEMPLE<br />
"The Lotus Temple is the Bahai temple in Delhi, India. It is called the Lotus temple because of its lotus-like shape. It is one of the most popular tourist attractions of Delhi. It has a beautiful garden outside where tourists can relax. It was inaugurated in 1986. It is the main Bahai temple of the indian subcontinent. It is one of the most heavily visited sites in the whole world with 4 million visitors every year. It welcomes visitors irrespective of which religion they belong to. A real beauty indeed. It is one of the most photographed buildings in the world.<br />
<br />
VISIT QUTAB MINAR<br />
Qutab Minar is the world’s tallest brick minaret in Delhi, India. Construction commenced in 1193 under order of India’s first muslim ruler Qutb-ud-dinAibak & the topmost storey of the minaret was completed in 1386 by FirozShah Tugluq. The Qutab Minar is notable for being one of the earliest & Most prominent examples of Indo Islamic architecture". <br />
Back to Hotel for overnight stay.<br />
Overnight Stay: Delhi</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Delhi - Agra Via Yamuna Express Way (220KMS/3-4HRS)
								</p>
								<p class="aj">After breakfast at the hotel, depart for Agra by Road. On Arrival at Agra directly transferred to your pre booked hotel. Check In and get relaxed. <br />
<br />
After Lunch depart for a half day guided tour of Agra City.<br />
<br />
VISIT TAJ MAHAL (CLOSED ON FRIDAYS):<br />
Explore one of the world's most famous architecture at your own pace with an expert. This tour is designed to help you to truly understand the inspiration, history, origin, and influences behind this amazing monument. While at Taj, you will explore its myriad design elements, including the gardens, the main tomb, and the interior & exterior embellishments. You will be given an insight into the engineers, architects, and craftsmen who laboured for 22 years to make this vision a reality.<br />
<br />
AGRA FORT: <br />
Near the gardens of the Taj Mahal stands the important 16th century Mughal monument known as the Red Fort of Agra. This powerful fortress of red sandstone encompasses, within its 2.5km long enclosure walls, the imperial city of the Mughal rulers. It comprises of many mosques, breath-taking Palaces, such as the Jahangir Palace and the Khas Mahal, built by Shah Jahan; audience halls, such as the Diwan-i-Khas.<br />
Later back to hotel for overnight stay at Agra.<br />
Overnight Stay: Agra</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Agra - Jaipur Via Fatehpur Sikri( 250kms/4-5hrs Drive)
								</p>
								<p class="aj">After Breakfast at the Hotel, Check out& depart for Jaipur enroute visit Fatehpur Sikri.<br />
<br />
VISIT FATEHPUR SIKRI: <br />
The City of Emperors was built by the great Mughal Emperor Akbar; it is one of the best examples of a Mughal walled city. With its imposing gateways, well defined private and public areas and an architectural style blending the best of Hindu and Islamic traditions, it symbolizes Akbar’s secular vision. With this imposing city as a backdrop, our expert will narrate you the story of this great king.<br />
<br />
On Arrival at Jaipur city directly transfer to your pre-booked Hotel. Check in & Relax. Rest of the time is free at leisure. <br />
<br />
Jaipur is the first planned city of India, located in the desert lands of Rajasthan. The city that once had been the capital of the royalty, now serves as the capital city of Rajasthan. The very structure of Jaipur resembles the taste of the Rajputs and the Royal family. In the present date, Jaipur is the major business centre for the natives of Rajasthan with all requisites of a metropolitan city. The city of Jaipur, painted in pink, grasp the appreciation of every visitor.<br />
In the Evening experience the Rajasthani Traditional Dinner at Chokhi Dhani with Dance and Music ( OPTIONAL).<br />
Back to hotel for Overnight stay. <br />
Overnight Stay: Jaipur</p>					
									<p><b>Meals : </b> Breakfast & Dinner</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Full Day Jaipur City Sightseeing Tour
								</p>
								<p class="aj">After breakfast at the hotel, take an excursion trip to Amber Fort. Enjoy the Elephant Ride up to the Fort main entrance.<br />
<br />
AMBER FORT: <br />
Amber Fort was built by Raja Man Singh I. It is known for its artistic style, blending both Hindu and Rajput elements. With its large ramparts, series of gates and cobbled paths, the fort overlooks the Maota Lake, at its forefront.<br />
<br />
VISIT CITY PALACE:<br />
City Palace that covers a large area divided into a series of courtyards, gardens and buildings. A part of this Palace is a now a museum, containing three wings of Armory, Textiles and Artifacts’. City Palace is delightful blend of Mughal and traditional Rajasthani architecture. A part of the palace is still the house of the former Maharaja of Jaipur.<br />
<br />
VISIT JANTAR MANTAR:<br />
"The Jantar Mantar is a collection of architectural astronomical instruments, built by Maharaja (King) Jai Singh II at his then new capital of Jaipur between 1727 and 1734. It is modeled after the one that he had built for him at the Mughal capital of Delhi. He had constructed a total of five such facilities at different locations, including the ones at Delhi and Jaipur. The Jaipur observatory is the largest and best preserved of these. It has been inscribed on the World Heritage List.<br />
<br />
Lunch At The Place Of Choice <br />
<br />
Post lunch we will continue our sightseeing tour of the Pink City, which will entail Hawa Mahal (Palace of winds) & Jal Mahal (Water Palace)<br />
<br />
SHOPPING IN JAIPUR: <br />
Jaipur shopping is great fun and a matter of delight. There are a number of good Shops in Jaipur that flocks with ethnic handicrafts with beaded works and mirrors on it, potteries, local jewelry and textile materials. Also the market overflows with colorful carpets and Kota doria mats. The most attractive work that one won’t be able to avoid while shopping in Jaipur .<br />
Later Back to Hotel & Relax followed by dinner & overnight stay, Jaipur.<br />
Overnight Stay: Jaipur</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Jaipur - Delhi (Distance 250kms/5-6hrs) & Departure
								</p>
								<p class="aj">After breakfast at the hotel, check out and proceed toward Delhi. Upon arrival at Delhi directly transfer to Domestic / International airport to board the flight for Home.<br />
Tour Ends</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any domestic or international airfare to/from India including International airport tax. </li><li>
Any Meals not specified. </li><li>
Camera fee wherever levied. </li><li>
Monument Entrance Charges.</li><li>
Chowki Dhani Entrance Fees</li><li>
Any item not mentioned in the quote. </li><li>
Porterage At Hotels And Airports, Tips, Insurance, Laundry, Liquors, Wine, Etc. </li><li>
Any supplement/reduction resulting from change in the itinerary due to rescheduling or cancellation of flights/trains that are quoted for. </li><li>
Expenses caused by factors beyond our control like rail and flight Delays, road blocks, Political disturbances, natural phenomenon &taxes etc.</li><li>
Early check in and late check out charges. Standard check in time at hotel is 1400 hrs and check out time is 1200 hrs. The courtesy early check in/late check out shall be requested on requirement which shall be subject to hotel approval and room availability.</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>Any Time during the Year<br />
												<p class="large b mb5px dif">Departure Cities with rates :</p>Delhi <br /><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. * Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.indiatourandvacations.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Triangle Tour  - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="43453"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Golden Triangle Tour  - 5 Nights / 6 Days Tour Packages";i:2;s:123:"book golden triangle tour  - 5 nights / 6 days tour packages, heritage tour packages, new delhi, jaipur, agra tour packages";i:3;s:179:"Book Golden Triangle Tour  - 5 Nights / 6 Days tour packages from India Tour and Vacations - Get attractive 5 Nights / 6 Days Heritage  tour packages for  New Delhi, Jaipur, Agra.";i:4;s:1295:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Agra"        
		                 },
		      "description": "Any domestic or international airfare to/from India including International airport tax. 
Any Meals not specified. 
Camera fee wherever levied. 
Monument Entrance Charges.
Chowki Dhani Entrance Fees
Any item not mentioned in the quote. 
Porterage At Hotels And Airports, Tips, Insurance, Laundry, Liquors, Wine, Etc. 
Any supplement/reduction resulting from change in the itinerary due to rescheduling or cancellation of flights/trains that are quoted for. 
Expenses caused by factors beyond our control like rail and flight Delays, road blocks, Political disturbances, natural phenomenon &taxes etc.
Early check in and late check out charges. Standard check in time at hotel is 1400 hrs and check out time is 1200 hrs. The courtesy early check in/late check out shall be requested on requirement which shall be subject to hotel approval and room availability.01-0431-03",
		      "name": "Golden Triangle Tour ",
		      "telephone": "+91-9818529130"
		    }
		    </script>
			";i:5;N;}