a:6:{i:0;s:20182:"				<div class="h1"><h1>Golden Triangle With Tiger 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 With Tiger 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">GTWT2015-16</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 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 With Tiger 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="44750"/>
						</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/88459.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/88459.jpg"  width="150" height="150"    alt="Golden Triangle With Tiger Tour" title="Golden Triangle With Tiger 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/88460.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/88460.jpg"  width="150" height="150"    alt="Golden Triangle With Tiger Tour" title="Golden Triangle With Tiger 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/88461.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/376887/88461.jpg"  width="150" height="150"    alt="Golden Triangle With Tiger Tour" title="Golden Triangle With Tiger 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 Entrances Fee at Delhi, Agra & Jaipur <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-0931-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 Delhi Airport & Transfer to Hotel
								</p>
								<p class="aj">Upon arrival in New Delhi Airport, you will be met and assisted by our representative and will be transferred to your pre-booked hotel.<br />
Check-in and Overnight Stay At the Hotel.</p>					
									<p><b>Meals : </b> Nil</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 & New Delhi Sightseeing Tour
								</p>
								<p class="aj">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 />
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 />
<br />
Back to Hotel for Overnight stay..</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 check in at your pre booked hotel, Fresh n up & get relax.<br />
<br />
Lunch at the place of your choice.<br />
<br />
After Lunch depart for the guided tour of Taj Mahal & Agra Fort <br />
<br />
VISIT TAJ MAHAL(Closed on Fridays):<br />
Experience the Taj Mahal in the Rising Sun. Explore one of the world's most famous architecture at your own pace with an expert. This tour is designed to help you 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 />
VISIT 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.5kms 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 KhasMahal, built by Shah Jahan; audience halls, such as the Diwan- i-Khas. <br />
<br />
Later Back to Hotel for overnight stay.</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 - Ranthambore via Fatehpur Sikri ( Distance 250Kms/4-5Hrs)
								</p>
								<p class="aj">After Breakfast at the Hotel, Check out & depart for Ranthambore enroute visit Fatehpur Sikri.<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, ell 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 />
Later proceed towards Ranthambore.Upon arrival at Sawai Madhopur, directly transfer to your resort. Check-in & relax. Evening at leisure. Overnight stray at the resort</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> Morning & Afternoon Jungle Safari at Ranthambore National Park
								</p>
								<p class="aj">Early morning drive to the dense jungle of Ranthambore National Park with a naturalist in an open roof Zypsy. One can spot predators like the Tiger and Leopard and other carnivorous animals like Hyena, Jackal and Sloth Beer. The sanctuary also abounds in Wild Boar and various varieties of deer like Spotted Deer, Sambhar, Chinkara and Nilgai. The common Langaur (monkey) abound in the trees.<br />
<br />
The jungle visits lasts for about three hours. Later Return to the hotel for breakfast & Lunch.<br />
After Lunch depart for an afternoon Jungle Safari by an Open roof Cantar / Zypsy. Dinner & Overnight stay at the hotel.</p>					
									<p><b>Meals : </b> Breakfast, Lunch & 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 6:</b> Ranthambore - Jaipur ( Distance 150Kms/3-4Hrs)
								</p>
								<p class="aj">Early morning drive to the dense jungle of Ranthambore National Park with a naturalist in an open roof Zypsy/Cantar.<br />
Back to the hotel for Breakfast & Lunch. Post Lunch, check out from the hotel and depart for Jaipur by Road.<br />
On Arrival at Jaipur city directly Check in at your pre-booked Hotel. Rest of the time is free at leisure.<br />
Overnight stay at the hotel.</p>					
									<p><b>Meals : </b> Breakfast & Lunch</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 7:</b> Full Day Jaipur City sightseeing Tour
								</p>
								<p class="aj">Early morning drive to the dense jungle of Ranthambore National Park with a naturalist in an open roof Zypsy/Cantar.<br />
Back to the hotel for Breakfast & Lunch. Post Lunch, check out from the hotel and depart for Jaipur by Road.<br />
On Arrival at Jaipur city directly Check in at your pre-booked Hotel. Rest of the time is free at leisure.<br />
Overnight stay at the hotel.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 />
Drive Past 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 />
<br />
Later Back to Hotel for 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 8:</b> Jaipur - Delhi ( Distance 260Kms/5-6Hrs)
								</p>
								<p class="aj">After early breakfast at the hotel,  check out & Depart for Delhi, Upon Arrival directly transfer to Delhi Airport to board the flight for Home.</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>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 Entrances Fee at Delhi, Agra & Jaipur </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">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 With Tiger 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="44750"/>
						</form>
						</div>
						
						";i:1;s:70:"Book Golden Triangle With Tiger Tour - 7 Nights / 8 Days Tour Packages";i:2;s:142:"book golden triangle with tiger tour - 7 nights / 8 days tour packages, forts and palaces tour packages, new delhi, jaipur, agra tour packages";i:3;s:183:"India Tour and Vacations offers Golden Triangle With Tiger Tour - 7 Nights / 8 Days tour package, budget Forts and Palaces tour packages for New Delhi, Jaipur, Agra at exciting price.";i:4;s:1298:"
			<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 Entrances Fee at Delhi, Agra & Jaipur 
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-0931-03",
		      "name": "Golden Triangle With Tiger Tour",
		      "telephone": "+91-9818529130"
		    }
		    </script>
			";i:5;N;}