a:6:{i:0;s:14744:"				<div class="h1"><h1>Exciting Rajasthan Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.wenstravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.wenstravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</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, 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.wenstravels.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="52478"/>
						</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_9/267703/102811.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/267703/102811.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.wenstravels.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="52478"/>
						</form>
						</div>
						
						";i:1;s:53:"Book Exciting Rajasthan Tour - 111 Days Tour Packages";i:2;s:148:"book exciting rajasthan tour - 111 days tour packages, heritage tour packages, bikaner, jaipur, jaisalmer, jodhpur, mount abu, udaipur tour packages";i:3;s:180:"Sprasad Travels offers Exciting Rajasthan Tour - 111 Days tour package, budget Heritage tour packages for Bikaner, Jaipur, Jaisalmer, Jodhpur, Mount Abu, Udaipur at exciting price.";i:4;s:450:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bikaner, Jaipur, Jaisalmer, Jodhpur, Mount Abu, Udaipur"        
		                 },
		      "description": "",
		      "name": "Exciting Rajasthan Tour",
		      "telephone": "+91-9439123510"
		    }
		    </script>
			";i:5;N;}