a:6:{i:0;s:13338:"				<div class="h1"><h1>Colorful Rajasthan Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.thearyanholidays.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.thearyanholidays.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Colorful 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, Pushkar, Agra, Ranakpur, Fatehpur Sikri</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.thearyanholidays.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Colorful 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="107766"/>
						</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/286333/178628.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/286333/178628.jpg"  width="150" height="150"    alt="Colorful Rajasthan Tour" title="Colorful 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 at Delhi
								</p>
								<p class="aj">On reaching Delhi, meet our   representative at the airport who will help you take a transfer to the airport. Check-in to the hotel and enjoy your 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 2:</b> Delhi
								</p>
								<p class="aj">Munch some tasty breakfast and energize yourself for a day full of excitement and fun. Enjoy your day with a sightseeing tour around this beautiful city. Delhi has a number of attractions to offer to the tourists and this is why people visit the capital, from all across the country.<br />
<br />
Start your tour with a visit to Laxmi Narayan Temple which is well-known as the Place of Gods. Later, you can visit attractions like India Gate, Parliament House, Red Fort, Jama Masjid, Gandhi memorial, Jantar Mantar and Qutub Minar. All these attractions hold historical importance and showcase much about the past of the country.<br />
<br />
Post sightseeing, return to the hotel for dinner. 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 3:</b> Delhi - Agra
								</p>
								<p class="aj">This morning, you will take a transfer to the next destination, Agra. Have your breakfast in the morning and then leave for Agra. On reaching Agra, check-in to the hotel and freshen up. Leave for a sightseeing tour of Agra. Visit the Red Fort and Itmad-ud-Daula Tomb.<br />
<br />
While Red Fort is known to be associated with the construction of the Seventh Wonder of the World, Taj Mahal, Itmad-ud-Daula Tomb is famous for its architecture. Later, return to the hotel. Spend the evening at leisure. You can go out to explore the local market of the Agra. 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> Agra – Fatehpur Sikri – Jaipur
								</p>
								<p class="aj">Begin this morning with an alluring view of the Taj Mahal at sunrise. Taj Mahal, seventh wonder of the world, is the most extravagant monument ever built for love.<br />
<br />
Return to the hotel for breakfast and then check out. Start heading towards Jaipur and en-route visit old deserted town of Mughal Dynasty, Fatehpur Sikri. On reaching Jaipur, check-in to the hotel. Enjoy a comfortable overnight stay 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 5:</b> Jaipur
								</p>
								<p class="aj">This colorful city calls you with opens arms to explore its beautiful attractions. So, begin with an excursion to Amber fort where you can enjoy elephant rides.<br />
<br />
Later, go for a short city tour and visit attractions like City Palace which is known to present a unique amalgam of Rajasthani and Mughal architecture and Royal Observatory. Post sightseeing, return back to the hotel for dinner. Have a comfortable overnight stay 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> Jaipur – Jodhpur
								</p>
								<p class="aj">Today, you leave for your next destination, Jodhpur. Jodhpur is a major tourist destination of Rajasthan. It is known to house royal historic monuments of the country. The city holds immense historical importance and was established in 1459 by the Rathore Dynasty. On reaching Jodhpur, check-in to the hotel.<br />
<br />
After you freshen up, leave for sightseeing around the palaces, forts, museums and lakes of Jodhpur. Begin your tour with a visit to the famous Mehrangarh Fort which is one of the largest forts in India. The fort is known to have a collection of musical instruments, palanquins, furniture and cannons.<br />
<br />
Later, you can visit attractions like Kaylana Lake, Phool Mahal, Umaid Bhawan Palace and Jaswant Thada. After visiting the different attractions of this beautiful city, return to the hotel for dinner. 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> Jodhpur – Ranakpur – Udaipur
								</p>
								<p class="aj">After you have your breakfast, it is time to head towards your next destination, Udaipur. Emark on the drive towards Udaipur and en-visit Ranakpur, which is well-known for its Jain temples.<br />
<br />
The place is one amongst the five holiest places of the Jain community. The place is set in a remote valley in the Aravalli range and it houses the most prominent Jain temples of the country. All the temples of Ranakpur are believed to have been built in 1439 A.D. After enjoying your unique experience at these temples, head towards Udaipur.<br />
<br />
On reaching Udaipur, check-in to the hotel and enjoy the rest of the evening at leisure. 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 8:</b> Udaipur
								</p>
								<p class="aj">This morning, after you munch your breakfast, leave for a sightseeing tour to Udaipur.<br />
<br />
Udaipur, known as the City of Lakes is a city rich in cultural heritage. The city showcases the imperial Rajput era and takes one back to the glorious past. This beautiful city is also referred to as “Venice of the East”. The place has a number of historical monuments, palaces and forts which are there in the remembrance to Maharana Udai Singh II who founded the city.<br />
<br />
Begin with a visit to the City Palace, Jagdish Temple, Jag Mandir and Saheliyon-Ki-Bari. After visiting all these attractions, enjoy your day on the banks of the Lake Pichola which is known as the crown of the city. Later, return back to the hotel 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 9:</b> Udaipur – Pushkar
								</p>
								<p class="aj">This morning, have your breakfast and then leave for Pushkar. Pushkar is a holy town in Rajasthan which is known for its picturesque valleys, scenic locations and pilgrim sites. The place is also known to host the famous camel fair which witnesses a flood of tourists. On reaching Pushkar, check-in to the hotel and take some rest.<br />
<br />
Later, leave for a sightseeing around the place. Visit famous attractions of the place including Aptaeshwar Temple, Raghunath Mandir, Pushkar Lake, Brahma Temple and Old Rangji Temple. Return to the hotel for dinner and have a comfortable night 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> Pushkar – Delhi
								</p>
								<p class="aj">Today, you leave Pushkar and then leave for Delhi. On arrival in Delhi, get off at railway station/ airport/ bus stand and carry on with your onward journey. The tour ends here.</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.thearyanholidays.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Colorful 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="107766"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Colorful Rajasthan Tour - 9 Nights / 10 Days Tour Packages";i:2;s:170:"book colorful rajasthan tour - 9 nights / 10 days tour packages, heritage tour packages, new delhi, jaipur, jodhpur, pushkar, agra, ranakpur, fatehpur sikri tour packages";i:3;s:221:"Book Colorful Rajasthan Tour - 9 Nights / 10 Days tour packages from The Aryan Holidays - Get attractive 9 Nights / 10 Days Heritage  tour packages for  New Delhi, Jaipur, Jodhpur, Pushkar, Agra, Ranakpur, Fatehpur Sikri.";i:4;s:462:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Jodhpur, Pushkar, Agra, Ranakpur, Fatehpur Sikri"        
		                 },
		      "description": "",
		      "name": "Colorful Rajasthan Tour",
		      "telephone": "+91-7737030090"
		    }
		    </script>
			";i:5;N;}