a:6:{i:0;s:13066:"				<div class="h1"><h1>Golden Triangle with Tiger Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.getsholidayindiatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.getsholidayindiatour.in/packages.htm" title="Packages">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">GHIT-17</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Jaipur, Sawai Madhopur, 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.getsholidayindiatour.in/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="115605"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<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_17/507555/188488.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507555/188488.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 />
					
					Assistance on Arrival.<br />
A 24 - hour helpline.<br />
Welcome Drink On Arrival at Hotel.<br />
Daily Breakfast.<br />
Hotel Accommodation on twin / double sharing basis.<br />
Travel throughout the entire journey in an air condition car.Air fare / train fare.<br />
Guide & Monuments Entrance fees during sightseeing.<br />
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.<br />
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.<br />
Any other item not specified in the Package Inclusions.<br />
Supplement will be applicable for Single occupancy.<br />
GST Extra<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> Delhi Arrival
								</p>
								<p class="aj">On arrival at Airport / Railway station, meet our representative and proceed to Hotel for Check in. Delhi is a city built and re-built seven times over several centuries. The capital city today marries the quaint and unique elements of different historical eras with the pace of the bustling, growing economy. At every turn of the road, the past and the present coexist. Later proceed for city Tour of NEW DELHI - drive past the stately government buildings of the British Era designed by Lutyen’s, including the Indian Gate & the Presidential Palace. Continue onto the beautiful Humayun’s tomb of the Mughal era & thereafter visit the towering minaret of Qutab Minar. Overnight at Hotel.</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> Delhi City Tour
								</p>
								<p class="aj">After breakfast visit the Jama Masjid, Red Fort and local Bazaar. After breakfast visit Jama Masjid, was commissioned to be constructed by the Mughal Emperor Shah Jahan. It holds the distinction of being one of the biggest and the most well known mosque of Old Delhi. The Red Fort is popularly known as the Lal Quila and is representative of the true splendor of the Mughal court. This imposing fort will engulf you with its size and grandeur. Later visit local market. Overnight at Hotel.</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
								</p>
								<p class="aj">After breakfast drive to Agra. Arrive and check in at Hotel. Akbarabad, as Agra was known during the Mughal era, is home to some of the most magnificent Mughal architectures. Situated on the banks of river Yamuna, the monumental beauty of Agra has inspired countless people around the world. This third largest city of the state of Uttar Pradesh is home to three UNESCO world heritage sites. Later Proceed to Visit to the world - famous Taj Mahal - or literally "Crown of Palaces" was built by Shah Jehan to immortalize the memory of his beloved wife Mumtaz Mahal who died tragically in 1631. After that visit, the Red Fort built by three generations of Mughal Emperors between 1565 and 1573. It housed both the presidential Palaces of the Royal family, and the military quarters. Overnight at Hotel.</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
								</p>
								<p class="aj">After breakfast drive to Ranthambore En-route Fatehpur Sikri - the extraordinary city built by Akbar the Great, deserted 14 years later, but which, during its brief span, exceeded London in both grandeur and population. After visit continue drive to Ranthambore. Located in the Sawai Madhopur district of Rajasthan, Ranthambore is one of the protected forests of India. It was the erstwhile hunting grounds of the Maharaja of Jaipur until 1955 when it was declared as a game sanctuary. Arrive & check in at hotel. Later proceed for safari. The Ranthambore Forest Reserve is home to the great Indian tiger. Other than the tiger, the Ranthambore forest has manyother wild attractions like theleopard, nilgai, sambar and chital. Ranthambore also has one of the largest banyan trees in India. The 10th century Ranthambore fort towers over the forest as if protecting its habitants from any danger. Since most animals retreat deep into the forest to avoid the afternoon heat, evening serve a good chance of spotting the tiger. Overnight at Hotel.</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> Ranthambore - Jaipur
								</p>
								<p class="aj">Early morning proceed for safari later back to the hotel for breakfast. After Breakfast and check out from hotel and drive to Jaipur. Jaipur: Beautiful palaces, forts and colourful bazaars speak of the pink city’s glorious regal past. Modernity walks hand-in-hand with history in Jaipur. This largest city of Rajasthan, founded by Maharaja Sawai Jai Singh, is famous for its magnanimous hospitality. Later tour of the Pink city visiting the imposing hawa Mahal, Jantar Manter & City Palace now a museum, the ancient Observatory, The exotic Palace of the Winds & the picturesque bazaars of the walled city. Overnight at Hotel.</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 City Tour
								</p>
								<p class="aj">After Breakfast, Visit Amber - the ancient capital of the Rajput Empire reaching the fort on elephant back. It is a deserted palace surrounded by majestic ramparts & the magnificent public & private room's evidence the splendor of the rulers of 16th & 17th century Rajasthan. Jaigarh Fort- Situated on the majestic Chilh-ka-Tola or the hill of eagles, the lofty walls of the Jaigarh Fort spread over a vast expansion of three kilometers. This impregnable fort of the Rajput was built purely for the defense activities. Nahargarh Fort is located on the sheer rugged ridge of Aravali Hills and it forms an impressive northern backdrop of Jaipur. It looks most classy when floodlit at night. The fort overlooks the city and presents a glittering view of the city lights. It was built in 1734 and extended in 1868. Nahargarh meaning abode of the tigers was built by Jai Singh to bolster the defence of Amber. Evening explore the local bazzar. Overnight at Hotel.</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> Jaipur – Delhi
								</p>
								<p class="aj">After Breakfast, drive to Delhi and departure for your onward destination.</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>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air fare / train fare.</li><li>
Guide & Monuments Entrance fees during sightseeing.</li><li>
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.</li><li>
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.</li><li>
Any other item not specified in the Package Inclusions.</li><li>
Supplement will be applicable for Single occupancy.</li><li>
GST Extra</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p><strong>Note:</strong> We will use Ac Indigo for 02-03 heads and for 04 &ndash; 06 heads we will use Ac Innova.						
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Package</td>
			</tr>
		</table></div><br>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Destination</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.getsholidayindiatour.in/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="115605"/>
						</form>
						</div>
						
						";i:1;s:70:"Book Golden Triangle with Tiger Tour - 6 Nights / 7 Days Tour Packages";i:2;s:149:"book golden triangle with tiger tour - 6 nights / 7 days tour packages, heritage tour packages, new delhi, jaipur, sawai madhopur, agra tour packages";i:3;s:189:"Gets Holiday India Tour offers Golden Triangle with Tiger Tour - 6 Nights / 7 Days tour package, budget Heritage tour packages for New Delhi, Jaipur, Sawai Madhopur, Agra at exciting price.";i:4;s:1015:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Sawai Madhopur, Agra"        
		                 },
		      "description": "Assistance on Arrival.
A 24 - hour helpline.
Welcome Drink On Arrival at Hotel.
Daily Breakfast.
Hotel Accommodation on twin / double sharing basis.
Travel throughout the entire journey in an air condition car.Air fare / train fare.
Guide & Monuments Entrance fees during sightseeing.
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.
Any other item not specified in the Package Inclusions.
Supplement will be applicable for Single occupancy.
GST Extra",
		      "name": "Golden Triangle with Tiger Tour",
		      "telephone": "+91-8532003202"
		    }
		    </script>
			";i:5;N;}