a:6:{i:0;s:10931:"				<div class="h1"><h1>Agra Jaipur Delight Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kwik2travels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kwik2travels.co.in/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Agra Jaipur Delight Package</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">HT07</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						3 Nights / 4 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">
						INR 11499 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kwik2travels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Agra Jaipur Delight Package - 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="45309"/>
						</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_10/288293/89511.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/288293/89511.jpg"  width="150" height="150"    alt="Agra Jaipur Delight Package" title="Agra Jaipur Delight Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Travel Insurance<br />
The above package is not valid during national holidays, festivals and long weekends<br />
Meals at hotels except those listed above<br />
Still Camera/Video camera Charges<br />
Expenses of a personal nature such as tipping, porters, laundry etc<br />
Anything not mentioned in inclusions<br />
Government Service Tax 3.5%<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 - Proceed To Agra (Via Mathura - Vrindavan)
								</p>
								<p class="aj">This morning arrive at Indira Gandhi International airport. Our representative will meet you outside the customs gate and later escort you in an chauffeured driven private air-conditioned vehicle & take you to begin your journey to Agra – covering a distance of 200 kms in approx 5 hours. Enroute visit the Temple & Home place of Lord Krishna in Vrindavan & Mathura. Later on Continue your driver to Agra. Agra - Two great Mughal monarchs, Akbar and Shah Jahan, transformed the little village of Agra into a befitting second capital of the Mughal Empire - giving it the name Dar-ul-Khilafat {seat of the Emperor}. Today, a visitor to Agra is caught up in a world of contrasting edifices of red sandstone and white marble, narrow gallies and quaint buggies, and that irresistible charm that this favourite city of the Mughals still retains. It is not surprising, that modern Agra still reflects its Mughal heritage most conspicuously. Arrive in Agra and check in to your hotel. Overnight at the 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> Agra - Fatehpur Sikri - Jaipur
								</p>
								<p class="aj">After Breakfast proceed to visit Taj Mahal (a UNESCO World Heritage Site). The 17th century Taj Mahal is often called a poem in stone which was created by Mughal Emperor Shah Jahan for his favorite wife Mumtaz Mahal. It took 22 years to be completed and was designed and planned by a Persian architect Ustad Isa (Taj Mahal remains closed on Friday) and Agra Fort (a UNESCO World Heritage Site). An imposing structure with walls of red sandstone, almost two miles long and contains palaces, audience halls and mosques. The fort presents a good sampling of Islamic and Hindu architectural styles. Later leave for Jaipur covering a distance of 265 kms in approx 6 hours. En-route, visit Fatehpur Sikri (a UNESCO world heritage site). Fatehpur Sikri - the deserted red sandstone city was built by Emperor Akbar as his capital and Palace in the late 16th century.. Jaipur, "The City of Victory", was first intended to be "Sawai Jaipur", named after the boy Prince who commissioned it - Maharaja Jai Singh II - a warrior, astronomer and politician who reigned over the Mughals from 1699 to 1743. Today's Jaipur is pink, visually described as the city shaded with the autumn colors of a sunset. Arrive in Jaipur and check in at your hotel. Overnight at the 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> Jaipur
								</p>
								<p class="aj">This morning accompanied with an architecture expert explore Jaipur. Considered by many urbanists to be one of the best planned cities, the city was planned according to Indian Vastu Shastra (Vedic Planning for the comfort and prosperity of the citizens). The expert will highlight unique architectural features of Rajasthani Architecture that are incorporated even today in many modern day buildings such as Jharokhas, Chhatris, and Lattices screen made of perforated stone. A must for those interested in architecture! Begin your tour with a visit to magnificent Amber Fort. Tour the chambers and hallways of the palace, famous for the excellence of its design and decoration. Afternoon enjoy an orientation tour of the city. Visit the Jantar Mantar Observatory. Built in the 1700s but still appears to be futuristic. Continue to City Palace to witness the Maharaja’s private collection of textiles and armory. Culminate the tour with a photo stop at Hawa Mahal also known as the "Palace of the Winds." This beautiful façade is probably the most-photographed in Jaipur. Enjoy cycle-rickshaw ride in the colorful bazaar of old city. Time permitting: Enjoy a shopping tour in the Pink City. Only Mumbai or Delhi comes close to offering the array of goods found here, and foreign buyers for wholesale and retail outlets descend in droves to stock up on textiles, rugs, pottery, jewelry, shoes, miniature paintings, and ready-made clothing and housewares. Overnight at the 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> Jaipur - Delhi Departure
								</p>
								<p class="aj">This day morning post breakfast proceed your journey to Capital of India - Delhi. Total journey of approx. 280 Kms will take around 4 ½ Hrs to reach. Upon early afternoon arrival at delhi. ** Journey ends with Sweat Memories **</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>Travel Insurance</li><li>
The above package is not valid during national holidays, festivals and long weekends</li><li>
Meals at hotels except those listed above</li><li>
Still Camera/Video camera Charges</li><li>
Expenses of a personal nature such as tipping, porters, laundry etc</li><li>
Anything not mentioned in inclusions</li><li>
Government Service Tax 3.5%</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.kwik2travels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Agra Jaipur Delight Package - 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="45309"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Agra Jaipur Delight Package - 3 Nights / 4 Days Tour Packages";i:2;s:129:"book agra jaipur delight package - 3 nights / 4 days tour packages, heritage tour packages, new delhi, jaipur, agra tour packages";i:3;s:159:"Kwik2 Travels offers Agra Jaipur Delight Package - 3 Nights / 4 Days tour package, budget Heritage tour packages for New Delhi, Jaipur, Agra at exciting price.";i:4;s:738:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Agra"        
		                 },
		      "description": "Travel Insurance
The above package is not valid during national holidays, festivals and long weekends
Meals at hotels except those listed above
Still Camera/Video camera Charges
Expenses of a personal nature such as tipping, porters, laundry etc
Anything not mentioned in inclusions
Government Service Tax 3.5%",
		      "name": "Agra Jaipur Delight Package",
		      "telephone": "+91-9329116616"
		    }
		    </script>
			";i:5;N;}