a:6:{i:0;s:13479:"				<div class="h1"><h1>Kerala Beaches Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.journeyasia.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.journeyasia.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kerala Beaches 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kumarakom, Kochi, Alleppey, Periyar</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.journeyasia.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Beaches 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="99498"/>
						</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_1/7828/167743.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/7828/167743.jpg"  width="150" height="150"    alt="Kerala Beaches Tour" title="Kerala Beaches 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> Kochi (Cochin)
								</p>
								<p class="aj">Arrive at Kochi (Cochin) meet and assistance at the airport by our representative and transfer to your hotel. <br />
Proceed for a Half day sight seeing of Cochin by private boat.<br />
A few interesting sites included in the tour are the Chinese fishing nets along the Vasco Da Gama Square, Santa Cruz Basilica, St. Francis Church, VOC Gate, Bastion Bungalow etc. The Chinese fishing nets erected on teak wood and bamboo poles work on the principle of balance. Records say they were first set up here between AD 1350 and 1450. Vasco Da Gama Square, the narrow promenade that parallels the beach, is the best place to watch the nets being lowered and pulled out of the sea. Enjoy SUNSET while on the boat. Over night stay at Cochin.</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> Kochi
								</p>
								<p class="aj">Breakfast will be at the hotel. In the morning, enjoy a city tour. Visit the Mattancheery Dutch Palace where the superb series of murals painted on the wooden walls are its main attraction. Also visit the 16th century Jewish Synagogue and the Church of St. Francis. Vasco da Gama was originally buried in the Church''s cemetery. Walk around the Fort Cochin area and admire the Chinese Fishing Nets (this time from the land). Chinese traders are believed to have introduced them in the late 14th century. The afternoon would be spent at leisure. In the evening proceed for KATHAKALI DANCE PRESENTATION. Over night stay at Kochi. </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> Kochi - Periyar (THEKKADY):
								</p>
								<p class="aj">By Road 160 km in 4 hr. Proceed for Thekkady after breakfast. Drive through the plantations and small Kerala villages. The whole of Kerala including the towns are like villages and the simplicity of the state can be felt while driving. All around would be scenic beauty. Reach Thekkady. (This place is also known as Periyar because of the Lake Periyar) Check in at the resort.<br />
The river Periyar is the longest river in Kerala. This is the only perennial river in South India with clean water. The river occupies an important place in the history of Kerala. In the Sangam age Tamil epics such as Chilapathikaram, 'Akananuru', 'Purananuru' etc much has been said about this mighty river, formerly known as the 'Choorni Nadi' or 'Thamraparni Nadi'. A land route existed in the Sangam age from Mussuris (present-day Kodungalloor) to Madurai, which passed near the banks of the river Periyar. The capital of the old Chera Empire presumably existed on the banks of the river Periyar. It is believed that there was a flood in the 4th century AD that severely damaged the areas along the Periyar and the people living there had to escape to safer locations, abandoning their homes and livelihoods. The flood of AD 1341 resulted in the closing of Kodungalloor port and the opening of a new port at Kochi. The huge landslide that began in the high ranges as a result of the heavy downpours sent massive flows of mud and sand which created an Island at the 'Azhimugham' of the Periyar which is now known as the Vyppin Islands. Periyar wildlife sanctuary is home to nomadic tribes of wild elephant, boar, deer, the great Indian tiger and more. In the evening visit Kumily market to buy the best spices available. Overnight will be at Thekkady. Overnight will be at Periyar</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> Periyar
								</p>
								<p class="aj">Breakfast will be at the resort. Enjoy the boatride through Periyar Lake - Wildlife sanctuary. You can visit the rare species of plants and animals.<br />
Afternoon visit spice plantations like cardamom, cinnamon, pepper, coffee, tea estates etc. You can in the afternoon go for a short trek in the forests with a trained guide for some adventure. Overnight stay will be at Periyar.</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>  Periyar - Kumarakom
								</p>
								<p class="aj">By Road 130 km in 4 hr. Early morning proceed to Kumarakom. This journey will also be a beautiful one passing through rolling tea gardens and rubber plantations. Stop at a tea factory and watch the tea making process (interesting for children and elders). There is a beautiful solitary church you pass by and it is a nice place to stop for photography. Reach KUMARAKOM and visit the Bird Sanctuary. Proceed to the Vembanand Lake.<br />
The backwaters of Kerala are a unique product of Kerala and are found nowhere else in the world. Backwaters are a network of lakes, canals and estuaries and deltas of forty-four rivers that drain into the Arabian Sea. The backwaters of Kerala are a self supporting Eco-system teeming with aquatic life. The canals connect the villages together and are still used for local transport. Over 900 km of this labyrinthine water world is navigable.<br />
Check into a traditional houseboat of Kerala Style and go on a leisurely backwater cruise along the lake on a thatched houseboat. The houseboat with all modern comforts lets you discover the countryside at your own pace. You will have lunch, dinner and breakfast in the Houseboat. A ride on the houseboat is a fabulous way to explore the fascinating beauty of the backwaters.<br />
Cruise through the backwaters towards Alleppey. Lunch will be served on the boat. The menu is simple and traditional. The cook (chef) of the boat prepares the lunch from fresh materials and even you can have a peek at the recipe.<br />
Tea and snacks would be served in the evening. The boat will be anchored in the backwaters along a paddy field and you can go for a stroll into the village or relax at the deck of the boat.<br />
Dinner will be on the boat. Overnight will be at Houseboat.</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> Alleppey - Marari
								</p>
								<p class="aj">After breakfast start for Aleppey. Cruise through the backwaters watching the children going to school and the village markets opening.<br />
Alappuzha is famous for its boat races, houseboats, coir products, fish and lakes. Alappuzha remains prominent on the tourist trial of Kerala as one of the major centres for backwater boat trips. "Kuttanad" in Alappuzha is one of few places in the world where farming is done below sea level. Kuttanad is a land of lush paddy fields and is called the 'Rice Bowl' of Kerala. Kuttanad stretches for 75 Km sandwiched between the sea and the hills.<br />
Disembark the boat at the reception of the backwater resort at Alleppey. Proceed to the beautiful MARARI BEACH RESORTS and rest of the day will be relaxation on the beach. Overnight will be at Marari.</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> Marari
								</p>
								<p class="aj">Breakfast will be at the resort. Relax at the beach or by the pool.<br />
Overnight will be at Marari.</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> : Marari - Kochi
								</p>
								<p class="aj">By Road 60 km in 2 hr<br />
After breakfast proceed to Kochi. Proceed to the airport for flight to the next destination.<br />
TOUR ENDS</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>Transport</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.journeyasia.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Beaches 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="99498"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Kerala Beaches Tour - 7 Nights / 8 Days Tour Packages";i:2;s:144:"book kerala beaches tour - 7 nights / 8 days tour packages, beach and islands tour packages, kumarakom, kochi, alleppey, periyar tour packages";i:3;s:188:"Book Kerala Beaches Tour - 7 Nights / 8 Days tour packages from Journey Asia - Get attractive 7 Nights / 8 Days Beach and Islands  tour packages for  Kumarakom, Kochi, Alleppey, Periyar.";i:4;s:428:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kumarakom, Kochi, Alleppey, Periyar"        
		                 },
		      "description": "",
		      "name": "Kerala Beaches Tour",
		      "telephone": "+91-9910078863"
		    }
		    </script>
			";i:5;N;}