a:6:{i:0;s:12527:"				<div class="h1"><h1>Kerala Honeymoon Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travedatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travedatour.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kerala Honeymoon 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">Kochi, Kovalam, Thekkady, Thiruvananthapuram, Alleppey, Munnar</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.travedatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Honeymoon 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="116912"/>
						</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_17/506429/190094.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/506429/190094.jpg"  width="150" height="150"    alt="Kerala Honeymoon Tour" title="Kerala Honeymoon 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 at the Cochin airport, meet our representative who escorts you to the hotel. As you complete the check-in formalities, settle in your rooms. Thereafter, get ready for sightseeing in Cochin.<br />
<br />
Also known as Kochi and Ernakulam, Cochin is a cosmopolitan city of the state that was an important port city in the earlier times. This vibrant city is also referred to as the 'Queen of the Arabian Sea' and the 'Gateway to Kerala'. It is dotted with a number of tourist attractions that are worth-visiting. The places of interest in Cochin that you visit today include Santa Cruz Basilica-one of India's 8 basilicas, it has Gothic style architecture; Dutch Palace or Mattancherry Palace- a two-storied structure was built around 1555, it is now a museum that is home to murals, weapons, paintings etc and finally, St. Francis Church- constructed way back in the year 1503, this is the oldest European church in the country.<br />
<br />
Stay overnight in 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> Cochin – Munnar
								</p>
								<p class="aj">Today, in the morning, leave by road for Munnar. Upon arrival, check into the hotel. Munnar is probably the most popular hill station of Kerala that is flocked by tourists in crazy numbers. Placed at an altitude of 6000 feet above the sea level, this hill town has pleasant climate, green surroundings, several attractions, aromatic tea plantations, adventure opportunities and more. The rest of the day is free; you can indulge in the activities of your interest. Explore the lovely surroundings on your own.<br />
<br />
Overnight stay 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 3:</b> Munnar
								</p>
								<p class="aj">Post breakfast in the morning, embark on a sightseeing tour of famous tourist spots in Munnar. The attractions that you visit include today include the Christ Church- constructed by the British in the year 1910, it is one of Munnar's most revered religious spots; Eravikulam National Park- home to the endangered mountain goat of Southern India- the Nilgiri Tahr, this wildlife reserve offers ample opportunities; Mattupetty Dam- constructed on a lake, this dam is a popular picnic spot amidst lush and serene surrounding and Anamudi peak- standing tall at an altitude of 2695 m above the sea level, this peak lies within Eravikulam and is popular for offering amazing trekking opportunities.</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> Munnar – Thekkady
								</p>
								<p class="aj">As you relish hot breakfast, check- out from the hotel, followed by road transfer to Thekkady, home to the very popular Periyar National Park and Tiger Reserve. On arrival, check-into the hotel. Relax for some time. Afternoon is scheduled for Motor Boat Ride on the Periyar Lake for sightseeing. One of the most popular national parks in Kerala, Periyar is home to a decent variety of Indian Elephants and Tigers, along with lion-tailed macaque, Nilgiri Tahr, Indian giant squirrel and as many as 265 species of birds.<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 5:</b> Thekkady – Alleppey
								</p>
								<p class="aj">In the morning, start driving for Alleppey, now known as Alappuzha. On arrival, go on-board a luxury houseboat, locally known as Kettuvallam. Alleppey is known as the 'Venice of the East' and has some wonderful backwater routes. You check into an overnight houseboat cruise in and around Alleppey. This houseboat comes equipped with all kinds of modern comforts and comes with variation in number of rooms. You are accompanied by a rower and a trained chef. Admire the stunning verdant views of the paddy fields, and the coconut grooves, and soak-in the serenity during you backwater cruise. Observe the locals busy in their routine work, spot colorful birds, visit the coir making industry etc.<br />
<br />
Overnight stay on the 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 - Kovalam
								</p>
								<p class="aj">In the morning, the houseboat is back in Alleppey. Complete the check-out and disembark. Start the road journey to the lovely beach town of Kovalam. Away from regular hustle-bustle of city life, this place offers complete relaxation and rejuvenation. On Arrival, complete the check-in. Take rest for a while.<br />
<br />
Thereafter, you have options to pick from. You can either visit the tranquil crescent-shaped Kovalam beach, comprising of Hawa Beach, Lighthouse Beach and Samudra Beach for partaking in water sports like swimming, surfing, kayaking etc. The other option is of going for a relaxing herbal Ayurvedic massage at any of the Ayurveda centers, which are spread all around.<br />
<br />
Overnight stay in Kovalam.</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> Kovalam
								</p>
								<p class="aj">On day 7, in the morning, relax on the beautiful beach of Kovalam and proceed towards Cape Comorin. Kanyakumari, known as Cape Comorin during the British days, lies on the southern tip of the Cardamom Hills. Extremely popular as Hindu religious site, the city is home an ancient temple that is dedicated to Lord Shiva. Visit the beach with multi-colored sand and partake in leisure activities. Other places that you visit include Padmanabhapuram Palace- a beautiful architecture gem built during the 16th century, this palace has murals, carvings, rose wood furniture, huge Durbar Hall, delicate intricate carvings etc and Government Archeological museum-consisting of murals, wood carvings and artifacts.<br />
<br />
Back to Kovalam. 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> DEPARTURE
								</p>
								<p class="aj">On the last day of the tour, get transferred to Trivandrum or Thiruvananthapuram. Enjoy morning sightseeing tour of Trivandrum- the largest and the capital city of Kerala. Later, drive to the airport to board flight for your onward destination. The other option is to get transferred to the Cochin Airport 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.travedatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Honeymoon 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="116912"/>
						</form>
						</div>
						
						";i:1;s:60:"Book Kerala Honeymoon Tour - 7 Nights / 8 Days Tour Packages";i:2;s:166:"book kerala honeymoon tour - 7 nights / 8 days tour packages, hill station tour packages, kochi, kovalam, thekkady, thiruvananthapuram, alleppey, munnar tour packages";i:3;s:210:"Book Kerala Honeymoon Tour - 7 Nights / 8 Days tour packages from Traveda Tour - Get attractive 7 Nights / 8 Days Hill Station  tour packages for  Kochi, Kovalam, Thekkady, Thiruvananthapuram, Alleppey, Munnar.";i:4;s:455:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kochi, Kovalam, Thekkady, Thiruvananthapuram, Alleppey, Munnar"        
		                 },
		      "description": "",
		      "name": "Kerala Honeymoon Tour",
		      "telephone": "+91-9973011696"
		    }
		    </script>
			";i:5;N;}