a:6:{i:0;s:9110:"				<div class="h1"><h1>Golden Triangle Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.geetcompany.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.geetcompany.com/holiday-tour-packages.htm" title="Holiday Tour Packages">Holiday Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Golden Triangle Tour</p>
				<br />
				
									<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>
					
					<table class="w100 formTable imgWidth">
					<tr>
					
											<td class="p10px vat imgWidth150 w150px">
						<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_1/22362/55089.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/22362/55089.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_1/22362/55090.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/22362/55090.jpg"  width="150" height="150"    alt="Golden Triangle Tour" title="Golden Triangle Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											
					<td class="p10px">
											<p class="mb5px"><b>Tour Code :</b> 111</p>
												<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> New Delhi, Jaipur, Agra</p>
												<p><b>Price (Starting From) :</b>						
						INR 12699 Per Person						</p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.geetcompany.com/travel-inquiry.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="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="28079"/>
						</form>
						</p>
											</td>
					</tr>
					</table>
											<div class="mt7px dif">* Mentioned prices may vary depending upon date of travel, hotel availability, surge pricing and seasonal rush.</div>
											<br />
					
					<div class="packageTabs myTabs horizontal mc"><!--MY TABS STARTS-->
					<ul class="fo lsn m0px p0px">
					
											<li id="tab2"><a href="#data2">Itinerary</a></li>
												<li id="tab4"><a href="#data4">Tour Detail</a></li>
												<li id="tab6"><a href="#data6">Terms &amp; Conditions</a></li>
											</ul>
					
					
											<div class="ic bdr" id="data2"><!--DATA2 START-->
						<br />
						<ul class="lsn m0px p0px">
									<li>
									<p class="b mb5px">Day 1: Delhi - Agra (220 Km. / Approx. 4 Hrs)
									</p>
									<div class="data p10px">Pick up from Delhi & Proceed to historical and romantic city of Agra. On route visit Sikandara - the mausoleum of Emperor Akbar. Thereafter proceed to visit Taj Mahal built by Mughal Emperor Shahjahan in 1630 for his beloved Queen Mumtaz Mahal. Continue the tour visiting the Agra Fort containing the Royal residential palaces, the Halls of Public and Private Audience and beautiful gardens. Please note Taj Mahal remains closed on Fridays. Thus, in case your visit to Agra falls on a Friday, you shall visit Taj the next day in the morning. Overnight in Agra</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 2: Agra - Jaipur (235 Km./ Approx 5 Hrs)
									</p>
									<div class="data p10px">After Breakfast proceed to the Pink City of Jaipur. Enroute visit Fatehpur Sikri - once the capital of Mughal Emperor Akbar. On arrival at Jaipur, check into your hotel. The rest of the day is free to explore this vibrant and colorful city. Overnight at Jaipur.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 3: Jaipur - Sightseeing of Jaipur
									</p>
									<div class="data p10px">After breakfast visit Amber Fort & go sightseeing in Jaipur. Visit to the ancient capital of the Kachhawaha Rajput, Amber. (Pay directly for your Elephant ride or for the Jeep ride up the fort). Enroute enjoy a photo-stop at Hawa Mahal - the palace of wind. Later visit the City Palace and the apartment housing museums with an array of textiles, costumes, arms, weapons and paintings and finally visit Jantar-Mantar, the observatory built by Maharaja Jai Singh-II. Overnight at Jaipur.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 4: Jaipur - Delhi (275 Km. / Approx 5.5 Hrs)
									</p>
									<div class="data p10px">After Breakfast proceed Delhi from Jaipur. In the afternoon, you shall visit Qutub Minar, India Gate and the Lotus Temple and Jama Masjid. Overnight stay at Delhi.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 5: Delhi
									</p>
									<div class="data p10px">After Breakfast depart for your onward journey.</div>					
									</li>
									<br />					
							</ul>						<!--DATA2 EMD--></div>
											
						<div class="ic bdr" id="data4"><!--DATA4 START-->
						<br />
						Delhi<br />
<br />
Delhi is a city that bridges two different worlds. Old Delhi, once the capital of Islamic India, is a labyrinth of narrow lanes lined with crumbling havelis and formidable mosques. In contrast, the imperial city of New Delhi created by the British Raj is composed of spacious, tree-lined avenues and imposing government buildings. Delhi has been the seat of power for several rulers and many empires for about a millennium. Many a times the city was built, destroyed and then rebuilt here. Interestingly, a number of Delhi's rulers played a dual role, first as destroyers and then as creators.<br />
<br />
Agra<br />
<br />
Blessed with one of the Seven Wonders of the World -Taj Mahal, Agra is one of the most prominent tourist destinations of Uttar Pradesh. Agra is also known as the Land of palaces. Not just palaces, it also has a lot of intricate and beautiful architecture. Even the tombs are elaborately adorned. Agra is the perfect spot for a tourist and students of Architecture. Even the climate in Agra is very inviting and suitable. The city is well designed, where even the houses show huge detailing in their design. On close inspection, even the interiors of the buildings show the unreal imagination that the architects probably had. Every building, looks like it had been designed to adorn the city, designed artistically from every angle. Even the food speaks greatly about the spicy Indian Cuisine. It is a city with rich cultural, historical, architectural and religious attachments.<br />
<br />
<br />
Jaipur<br />
<br />
Jaipur - Rajasthan , the glistening Pink City, was founded by and named after Sawai Jai Singh II. It beckons tourists with a magnificent display of its royal Rajput heritage in its imposing forts and impressive palaces. Added bonus is the warm hospitality of its colorful people and of course a plethora of handicrafts to shop for. Tourists can enjoy watching and participating in various festivals that Jaipur hosts-from the modern Jaipur Literary festival to the traditional Teej, Gangaur and Kite festival.3.09% Government Service Tax.<br />
Anything else which is not mentioned in the Package.<br />
Service of Guide<br />
Any entrance or monument charges01-1031-03							<p class="b mb5px dif">Inclusions :</p>
							<ul>
																	<li>Hotel</li>
																				<li>Transport</li>
																	</ul>
							<br />
														<p class="b mb5px dif">Exclusions :</p> <ul><li>3.09% Government Service Tax.</li><li>
Anything else which is not mentioned in the Package.</li><li>
Service of Guide</li><li>
Any entrance or monument charges</li></ul><br />
													<!--DATA4 EMD--></div>
												<div class="ic bdr" id="data6"><!--DATA6 START-->
						<br />
						* 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. ~^#^~						<!--DATA6 EMD--></div>
											
					<!--MY TABS END--></div>
					";i:1;s:59:"Book Golden Triangle Tour - 4 Nights / 5 Days Tour Packages";i:2;s:131:"book golden triangle tour - 4 nights / 5 days tour packages, forts and palaces tour packages, new delhi, jaipur, agra tour packages";i:3;s:162:"Geet & Company offers Golden Triangle Tour - 4 Nights / 5 Days tour package, budget Forts and Palaces tour packages for New Delhi, Jaipur, Agra at exciting price.";i:4;s:2578:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Agra"        
		                 },
		      "description": "Delhi

Delhi is a city that bridges two different worlds. Old Delhi, once the capital of Islamic India, is a labyrinth of narrow lanes lined with crumbling havelis and formidable mosques. In contrast, the imperial city of New Delhi created by the British Raj is composed of spacious, tree-lined avenues and imposing government buildings. Delhi has been the seat of power for several rulers and many empires for about a millennium. Many a times the city was built, destroyed and then rebuilt here. Interestingly, a number of Delhi's rulers played a dual role, first as destroyers and then as creators.

Agra

Blessed with one of the Seven Wonders of the World -Taj Mahal, Agra is one of the most prominent tourist destinations of Uttar Pradesh. Agra is also known as the Land of palaces. Not just palaces, it also has a lot of intricate and beautiful architecture. Even the tombs are elaborately adorned. Agra is the perfect spot for a tourist and students of Architecture. Even the climate in Agra is very inviting and suitable. The city is well designed, where even the houses show huge detailing in their design. On close inspection, even the interiors of the buildings show the unreal imagination that the architects probably had. Every building, looks like it had been designed to adorn the city, designed artistically from every angle. Even the food speaks greatly about the spicy Indian Cuisine. It is a city with rich cultural, historical, architectural and religious attachments.


Jaipur

Jaipur - Rajasthan , the glistening Pink City, was founded by and named after Sawai Jai Singh II. It beckons tourists with a magnificent display of its royal Rajput heritage in its imposing forts and impressive palaces. Added bonus is the warm hospitality of its colorful people and of course a plethora of handicrafts to shop for. Tourists can enjoy watching and participating in various festivals that Jaipur hosts-from the modern Jaipur Literary festival to the traditional Teej, Gangaur and Kite festival.3.09% Government Service Tax.
Anything else which is not mentioned in the Package.
Service of Guide
Any entrance or monument charges01-1031-03",
		      "name": "Golden Triangle Tour",
		      "telephone": "+91-9896771268"
		    }
		    </script>
			";i:5;N;}