a:6:{i:0;s:12818:"				<div class="h1"><h1>Jagannath Puri Rath Yatra Package Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.onyourmarkstravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.onyourmarkstravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Jagannath Puri Rath Yatra Package 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bhubaneswar, Puri</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.onyourmarkstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Jagannath Puri Rath Yatra Package 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="119188"/>
						</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_16/465683/193105.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/465683/193105.jpg"  width="150" height="150"    alt="Jagannath Puri Rath Yatra Package Tour" title="Jagannath Puri Rath Yatra Package 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> Arrival
								</p>
								<p class="aj">Upon arrival in Puri, check into your hotel. One of the four destinations of the most revered Chardham Yatra, Puri is listed among the holiest destinations of Hindu pilgrimage. The sacred place is best-known as the abode of Lord Jagannath.<br />
<br />
Later in the day, proceed to Chilika Lake.<br />
<br />
Spread across 600 to 1100 sq. kilometers depending upon the season of your visit, Chilika Lake is Asia’s largest brackish water lagoon separated from Bay of Bengal by a 60 kilometers long mashy islands and sand bar known as Rajhansa. Chilika Lake is a designated Ramsar Site due to its rich biodiversity. The lake has also recorded over million plus birds including migratory birds like pink flamingoes, crane and herons that come here for nesting during winter season. Partake in fun activities.<br />
<br />
If time allows today, you could also visit the Puri Beach and stroll around in the market for some shopping. Return back to hotel for your 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 2:</b> Rath Yatra Darshan
								</p>
								<p class="aj">On the second day of your Jagannath Rath Yatra tour package, proceed to witness one of the grandest religious spectacles on the planet. Witness the Rath Yatra proceedings from a roof top position which will also offer great photo ops if you are a shutterbug.<br />
<br />
Rath Yatra celebrates the Hindu belief that Lord Jagannath takes an yearly break in midsummer to retire to his Aunt’s house along with his sister Subhadara and elder brother Balabhadra. All three deities are brought back to the main street in Puri and loaded in their grand chariots and then the great procession proceeds towards Gundicha Temple where the lord enjoy vacation at his aunt’s house.<br />
<br />
Such is the force of the procession and the presence of devotees in huge number that this annual ritual led to the coining of the English term juggernaut which means ‘an unstoppable force’. During the yatra, Puri is colored in the most vivid hues of sheer joy & enjoyment and flocked by devotees and travelers from all part of India and across the globe.<br />
<br />
Then return to your hotel for the 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 3:</b> Puri- Konark
								</p>
								<p class="aj">On the third day, post an unhurried breakfast, check-out from the hotel and drive to Konark. On the way to Konark, visit Raghurajpur – the heritage crafts village of Odisha. Art of palm leaf engravings, tussar paintings, stone carvings and papier mache toys are produced in this village.<br />
<br />
Later, after getting an insight into the artwork of this place, continue your journey towards Konark, which is a town in the Puri district. On arrival in Konark, check-in at a hotel and rest for some time.<br />
<br />
You may visit the major attractions of the place including Konark Sun temple; a World Heritage Site designed in a shape of a colossal chariot with seven horses and ten wheels carrying Sun god Surya across heavens, the A.S.I Museum (Archaeological Survey of India); home to more than 260 antiques retrieved from the clearance work of Sun temple and Chandrabhaga beach; it is believed that a holy dip in Chandrabhaga can cure leprosy.  You can also have a great surfing experience at Kushabhadra River.<br />
<br />
About Sun Temple<br />
<br />
The Sun Temple of Konark, spelt by some as Konarak and sometimes called the “Black Pagoda” was built in approximately 1250 AD by King Narasimhadeva I of the Eastern Ganga Dynasty. The word Konark is derived from the Sanskrit words, Kona (corner) and Arka (sun) which was dedicated to the Sun god Surya.<br />
<br />
Constructed to honor the sun god, Sun Temple in Konark is designed as a representation of this deity’s horse-drawn chariot, complete with horses and giant wheels. The temple is conceived as a colossal chariot of the sun god Surya pulled by seven horses and twelve pairs of exquisitely carved wheels, carrying the god across heavens.<br />
<br />
This temple is one of the UNESCO world heritage sites and also featured on the seven wonders of India in NDTV’s and Times of India’s list.<br />
<br />
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> Konark – Bhubaneswar
								</p>
								<p class="aj">On the fourth day, after a delicious breakfast, check-out from the hotel and drive towards Bhubaneswar. On the way to this destination visit Pipili, a village widely known for its skilled artisans, who are into appliqué handicrafts. You may also visit Dhauli Hill which is situated on the banks of Daya River. This hill is renowned for its Rock Edicts of Ashoka. On the top of the hill is a white pagoda which was built in the year 1970 and is a must visit attraction.<br />
<br />
Then head to Chausathi Yogini Temple which was used by a tantric for his worship of Goddess Kali. Dating back to 9th century, this temple is circular in shape and open from the top.<br />
<br />
Later, proceed towards Bhubaneswar – the state capital, which has a history dating back to 3000 years.<br />
<br />
On arrival at this destination, check-in at a 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 5:</b> Bhubaneswar
								</p>
								<p class="aj">Fifth day is set out to explore Bhubaneswar. After breakfast, leave the hotel to enjoy a sightseeing tour to this splendid destination. With temples in almost every street, this city is popularly known as the ‘Temple City of India’.<br />
<br />
On a trip to this destination, you can pay a visit to some of the most renowned temples, which include Lingaraj Temple, Ananta Vasudeva Temple and Rajarani Temple. These temples display a great work of architecture, prevailing in the earlier times. Some of the newly constructed temples that also deserve a visit include Iskcon and Ram Mandir.<br />
<br />
Later, visit Udayagiri and Khandagiri Caves, which are partly natural and partly artificial. The inscriptions done on these caves are believed to be from 1st and 2nd centuries BC.<br />
<br />
While exploring this destination, do not forget to visit the luxuriant Nandankanan Zoological Park (closed on Mondays and government holidays). This park comprises a zoo and a botanical garden and it sprawls across an area of 400 hectares. You can also enjoy a lion and tiger safari ride at this park.<br />
<br />
After sightseeing, get 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 6:</b> Departure
								</p>
								<p class="aj">On sixth day, check out from the hotel and proceed to Bhubaneswar airport/railway station for your onward journey.</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.onyourmarkstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Jagannath Puri Rath Yatra Package 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="119188"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Jagannath Puri Rath Yatra Package Tour - 5 Nights / 6 Days Tour Packages";i:2;s:134:"book jagannath puri rath yatra package tour - 5 nights / 6 days tour packages, heritage tour packages, bhubaneswar, puri tour packages";i:3;s:168:"OnyourmarksTravel offers Jagannath Puri Rath Yatra Package Tour - 5 Nights / 6 Days tour package, budget Heritage tour packages for Bhubaneswar, Puri at exciting price.";i:4;s:427:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bhubaneswar, Puri"        
		                 },
		      "description": "",
		      "name": "Jagannath Puri Rath Yatra Package Tour",
		      "telephone": "+91-8334014211"
		    }
		    </script>
			";i:5;N;}