a:6:{i:0;s:11984:"				<div class="h1"><h1>Maharajas Trail Rajasthan Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.mehaitoursandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.mehaitoursandtravels.com/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Maharajas Trail Rajasthan 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">Duration </td>
						<td class="p5px pl0px vat">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Jaipur, Jodhpur, Pali, Udaipur, 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.mehaitoursandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Maharajas Trail Rajasthan 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="104790"/>
						</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_13/363303/174635.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/363303/174635.jpg"  width="150" height="150"    alt="Maharajas Trail Rajasthan Tour" title="Maharajas Trail Rajasthan Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<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> Arrive - Delhi
								</p>
								<p class="aj">On arriving in Delhi, meet our  representative who helps you in assisted transfer to your hotel. The day is at leisure. Staying overnight in 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> Delhi
								</p>
								<p class="aj">The second day of the tour is booked for visiting the attractions of Old (after lunch) and New Delhi (after breakfast). The list of attractions is going to include Laxmi Narayan Temple, India Gate, Parliament House, Jama Masjid, Red Fort and Gandhi memorial. In the evening, attend sound and light show. Overnight in 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 3:</b> Delhi - Agra
								</p>
								<p class="aj">Begin driving to Agra, after having your breakfast. Once you reach Agra, complete the check- in formalities at your hotel. Later, leave for sightseeing where you cover attractions like the Taj Mahal – one of the Seven Wonders of the World, a beautiful white-marble mausoleum. The other visit of the day is Agra Fort, an amazing architectural masterpiece, also known as Red Fort. In the last, visit the Itmad-ud-daula's Tomb. Staying 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> Agra - Jaipur
								</p>
								<p class="aj">On day 4, once you have your breakfast, hit the road to go to Jaipur. On the way, stop at Fatehpur Sikri, the old deserted capital of Mughal Emperor Akbar. Explore its various structures including Jama Masjid, Buland Darwaza, Palace of Jodha Bai, Birbal Bhawan and Panch Mahal. Once you reach Jaipur, you get an assisted transfer to one of our listed hotels. The rest of the day is free for leisure activities such as exploring the local market or relishing the sumptuous food. Stay overnight.</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> Jaipur
								</p>
								<p class="aj">The morning of the 5th day of the tour is for a short-trip to Amber fort where you will enjoy an elephant ride to go its entrance as it is located on a hilltop. Have lunch and continue with sightseeing including the City Palace that has beautiful courtyards, gardens and other structures which are a perfect blend of Rajasthani and Mughal architecture. The other visits are Jantar Mantar, the Royal Observatory, Ram Niwas Gardens and Hawa Mahal. If time permits, you can shop at the Bazaar etc. Stay overnight.</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 - Jodhpur
								</p>
								<p class="aj">On the morning of the 6th day, hit the road to go to Jodhpur. Upon arrival, check in at your pre-booked hotel. The day is free for leisure activities where you can stroll around the market, can taste the Rajasthani delicacies, can have a chit-chat with the locals and so on. Stay overnight.</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> Jodhpur
								</p>
								<p class="aj">Today, you visit the attractions of Jodhpur. The first visit is the Mehrangarh fort – situated 400 feet above the city, it is one of the largest forts of India. The next visit of the day is Jaswant Thada –an architectural marvel made up of white marble and later, a group of royal cenotaphs. Have lunch at a palace hotel. The other part of the day is for exploring the market where you can shop for fine handicrafts such as embroidered shoes, Jodhpuri pants (breeches), metal knick-knacks, painting, silverware, tie and dye fabrics and more. Stay overnight in Jodhpur.</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> Jodhpur - Ranakpur
								</p>
								<p class="aj">After breakfast on day 8, start driving towards Udaipur. On the way, you halt at the Ranakpur temples – a well-known Jain pilgrimage center, also referred to as one of the 7 wonders of India. Known as Chaturmukh group of temples, they are every year visited by devotees in large number. Once you reach Udaipur, complete the check-in formalities at your pre-booked hotel. Spend the day at leisure in doing the activities of your interest. Stay overnight.</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 9:</b> Udaipur
								</p>
								<p class="aj">Post breakfast, the day is fixed for sightseeing. The list of visits of the day include City Palace- a palace complex constructed by Maharaja Udai Sing amidst Lake Pichola, Jagdish Temple- earlier known as the temple of Jagannath Rai that is dedicated to Lord Vishnu, Fateh Sagar Lake- an artificial lake known as the pride of Udaipur, Saheliyon-Ki-Bari –the courtyard of Queen's friends and Bhartiya Lok Kala Mandir – a famous museum housing an amazing collection of Rajasthan's folk articles. Stay overnight.</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 10:</b> Departure
								</p>
								<p class="aj">Today is the last of the tour when you get transferred to the airport to board a flight to Delhi. Once you arrive, get transferred to your hotel. The day is free. If you want then you can simply relax in your room or can indulge in leisure activities. Post dinner, get transferred to the airport to board an onward flight.</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">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.mehaitoursandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Maharajas Trail Rajasthan 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="104790"/>
						</form>
						</div>
						
						";i:1;s:70:"Book Maharajas Trail Rajasthan Tour - 9 Nights / 10 Days Tour Packages";i:2;s:157:"book maharajas trail rajasthan tour - 9 nights / 10 days tour packages, heritage tour packages, new delhi, jaipur, jodhpur, pali, udaipur, agra tour packages";i:3;s:195:"Mehai Tours & Travels offers Maharajas Trail Rajasthan Tour - 9 Nights / 10 Days tour package, budget Heritage tour packages for New Delhi, Jaipur, Jodhpur, Pali, Udaipur, Agra at exciting price.";i:4;s:449:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Jodhpur, Pali, Udaipur, Agra"        
		                 },
		      "description": "",
		      "name": "Maharajas Trail Rajasthan Tour",
		      "telephone": "+91-9982791007"
		    }
		    </script>
			";i:5;N;}