a:6:{i:0;s:14606:"				<div class="h1"><h1>Exciting Rajasthan Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.aonetravels.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Exciting 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">
						10 Nights / 11 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bikaner, Jaipur, Jaisalmer, Jodhpur, Mount Abu, Pushkar, Udaipur</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.aonetravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Exciting 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="46517"/>
						</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_2/40307/91414.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/40307/91414.jpg"  width="150" height="150"    alt="Exciting Rajasthan Tour" title="Exciting 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 in Jaipur
								</p>
								<p class="aj">On reaching Jaipur, meet our ihpl representative who will assist you while taking a transfer to the hotel. Check-in to the hotel and freshen up. Later, leave for sightseeing around the city. You can begin with a visit to the City Palace which is known to be the formal residence of a royal family.<br />
<br />
After sightseeing around the palace, you can visit attractions like Chandra Mahal and Shri Govind Deo Temple. Don’t miss to visit the City Palace Museum which houses the private collection of Jaipur Maharajas. You can also visit Jantar Mantar which is a stone observatory and the largest observatory built by Maharaja Jai Singh.<br />
<br />
Return back to the hotel after this long tiring day and 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 2:</b> Jaipur
								</p>
								<p class="aj">Have your breakfast and then leave for a sightseeing tour around Jaipur. The first attraction which you visit today is the Amber Fort which is located 11 kilometers away from Jaipur. On your way, you visit the Hawa Mahal. Explore the glorious past of Rajasthan with a visit to these historical attractions.<br />
<br />
Later, you can go for shopping in the colorful bazaars of Jaipur. In the evening, you can go for a drive through the city and also visit the famous Laxmi Narayan Mandir. Return back to the hotel for dinner and have a comfortable stay at night.</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 - Pushkar
								</p>
								<p class="aj">This morning you leave for your next destination Pushkar after having your breakfast. So, check-out from the hotel in the morning and then start driving to Pushkar which is around 143 kms from Jaipur.<br />
<br />
Pushkar is a holy town in Rajasthan which is known to house some legendary temples and century’s old lake. It is a famous pilgrimage site because it has the well-known Brahma temple where people visit from all over. Apart from this temple, Pushkar is known to have a number of other temples which are architecturally beautiful. On reaching Pushkar, check-in to the hotel and then leave for sightseeing. Visit the Pushkar Lake where you can take a holy dip.<br />
<br />
Also, visit the temples and Ghats of Pushkar which are known for their beautiful and unique architectural styles. In the evening, you can visit the Rose Garden and enjoy the beauty of the roses. Stay 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> Pushkar - Udaipur
								</p>
								<p class="aj">Have your breakfast and then check out from the hotel. Start driving towards your next destination, Udaipur. Udaipur is a beautiful city of Rajasthan, located at a distance of 283 km from Pushkar.<br />
<br />
Udaipur, the City of Lakes is well-known as the historic capital of the Mewar Kingdom. The place takes every visitor through the Rajput era. On reaching Udaipur, check-in to the hotel. In the evening, you can go for a stroll around the place. Have a comfortable stay at night.</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> Udaipur
								</p>
								<p class="aj">Munch some healthy breakfast and then leave for a sightseeing tour around Udaipur. You can begin with a visit to Saheliyon-Ki-Bari. Post that, you can visit attractions like Museum of folk art which is famous for its wide collection of puppets, folk dresses, dolls, ornaments, paintings and folk musical instruments.<br />
<br />
Later, you can visit the City Palace which is known to be the biggest palace complex in India. In the evening, enjoy a boat ride at Pichola Lake which is the star attraction of Udaipur. Later, return back to the hotel for dinner and stay 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 6:</b> Udaipur - Mount Abu
								</p>
								<p class="aj">This morning, you take a transfer to your next destination, Mount Abu which is located at a distance of 160 km from Udaipur. After having your breakfast, check-out from the Hotel and drive to Mount Abu. The only hill station in Rajasthan, Mount Abu is a famous tourist destination. It is also an important Jain pilgrim site.<br />
<br />
On reaching Mount Abu, check-in to the hotel. Later, step out for a short sightseeing tour around the place. Visit the Dilwara Jain Temples which were constructed back in the 11th century. Then, you can visit Sunset Point or Nakki Lake and enjoy the breathtaking views of the surroundings.<br />
<br />
In the evening, take a stroll around the place and explore the beauty of nature at its best. Stay 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 7:</b> Mount Abu - Ranakpur - Jodhpur
								</p>
								<p class="aj">After having your breakfast this morning, leave for your next destination, Jodhpur. En-route, visit the famous Jain Temple of Ranakpur. The temple is known to have 200 pillars which are uniquely carved. The temple also has 29 halls which showcase beautiful carvings and sculptures. On reaching Jodhpur, check-in to the hotel and have a comfortable overnight stay.</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 - Jaisalmer
								</p>
								<p class="aj">Have your breakfast and then leave for your Jodhpur sightseeing tour. Jodhpur is a major tourist attraction in Rajasthan. The place has a number of tourist spots to offer to the travelers including Mehrangarh Fort and Jaswant Thada.<br />
<br />
There are many more historical monuments in Jodhpur which represent the royal past of Rajasthan. Later, you can stroll down the markets of Jodhpur. In the evening, you can leave for your next destination, Jaisalmer. Jaisalmer is a place which is well-known for its rich culture and ethnicity.<br />
<br />
On reaching Jaisalmer, check-in to the hotel. Have a comfortable stay at night in 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 9:</b> Jaisalmer
								</p>
								<p class="aj">Have your breakfast in the morning and then leave for a sightseeing tour of the city. Visit the famous Jain temple and the palace museum inside the Jaisalmer Fort which are known to present a great collection of imperial dresses and artifacts which belonged to the royal family of Jaisalmer.<br />
<br />
Later, you can go for camel cart ride at Sand Dunes and enjoy the view from the Sunset Point. You can also take the camel safari and explore the life of the desert. Return to the hotel for dinner and have a comfortable stay.</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> Jaisalmer - Bikaner
								</p>
								<p class="aj">After you have your breakfast, leave for the last destination of this tour, Bikaner. Bikaner is a famous city which is known for its royal forts and palaces. On reaching Bikaner, check-in to the hotel and take some rest. Later, visit attractions of such as Junagadh Fort and Bhandasar Jain Temples.<br />
<br />
After this, you can enjoy sunset views of the desert and camel ride. Take a stroll through the place in the evening and return to the hotel. Stay overnight at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Bikaner - Jaipur
									</p>
									<p class="aj">You leave Bikaner this morning for final departure. Have your breakfast and then check-out from the hotel. On reaching Jaipur, take a transfer to the airport/railway station to continue with your onward journey. The tour ends here.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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.aonetravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Exciting 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="46517"/>
						</form>
						</div>
						
						";i:1;s:53:"Book Exciting Rajasthan Tour - 111 Days Tour Packages";i:2;s:157:"book exciting rajasthan tour - 111 days tour packages, heritage tour packages, bikaner, jaipur, jaisalmer, jodhpur, mount abu, pushkar, udaipur tour packages";i:3;s:189:"A-One Travels  offers Exciting Rajasthan Tour - 111 Days tour package, budget Heritage tour packages for Bikaner, Jaipur, Jaisalmer, Jodhpur, Mount Abu, Pushkar, Udaipur at exciting price.";i:4;s:459:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bikaner, Jaipur, Jaisalmer, Jodhpur, Mount Abu, Pushkar, Udaipur"        
		                 },
		      "description": "",
		      "name": "Exciting Rajasthan Tour",
		      "telephone": "+91-9998882095"
		    }
		    </script>
			";i:5;N;}