a:6:{i:0;s:13211:"				<div class="h1"><h1>Colorful Rajasthan Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.spacelinkindiatours.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.spacelinkindiatours.com/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, 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.spacelinkindiatours.com/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="45880"/>
						</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/374127/90529.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/374127/90529.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 ihpl 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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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 />
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.spacelinkindiatours.com/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="45880"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Colorful Rajasthan Tour - 9 Nights / 10 Days Tour Packages";i:2;s:144:"book colorful rajasthan tour - 9 nights / 10 days tour packages, heritage tour packages, new delhi, jaipur, jodhpur, udaipur, agra tour packages";i:3;s:182:"Spacelink Tours India offers Colorful Rajasthan Tour - 9 Nights / 10 Days tour package, budget Heritage tour packages for New Delhi, Jaipur, Jodhpur, Udaipur, Agra at exciting price.";i:4;s:436:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Jodhpur, Udaipur, Agra"        
		                 },
		      "description": "",
		      "name": "Colorful Rajasthan Tour",
		      "telephone": "+91-9949161338"
		    }
		    </script>
			";i:5;N;}