a:6:{i:0;s:13411:"				<div class="h1"><h1>Kerala Honeymoon Romantic Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.fourstoursandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.fourstoursandtravels.com/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kerala Honeymoon Romantic Package</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">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kumarakom, Kochi, Kovalam, Thekkady, 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.fourstoursandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Honeymoon Romantic Package - 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="84231"/>
						</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/460853/148659.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/460853/148659.jpg"  width="150" height="150"    alt="Kerala Honeymoon Romantic Package" title="Kerala Honeymoon Romantic Package" /></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">The romance of your honeymoon trip will begin with your arrival at the Cochin International Airport! After your arrival, our tour guides and representatives will receive you from the airport and get you checked-in into a hotel.Following your check-in, unwind and get freshened up, and spend the rest of the day at leisure. By evening, you can take a stroll through the local market area followed by a Kathakali show; 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 2:</b> Munnar
								</p>
								<p class="aj">Today morning, as you and your better half wake up in the morning, you will be served with your breakfast. Post your morning meal, you will be driven towards Munnar or the ‘Nature Lover’s Paradise’.<br />
<br />
Arriving in this romantic hill station, check-in into a local hotel, and make yourself comfortable within the luxuries of the hotel. Spend the rest of the day enjoying the salubrious ambience that will usher more love and romance into your honeymoon.</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> Thekkady
								</p>
								<p class="aj">Let your love for your better half speak volume today! After today’s breakfast at the hotel, take her for a full day Munnar excursion and take your love for her to a greater height!<br />
<br />
Post breakfast, you will be picked from the hotel and driven to some of the most scenic as well as popular tourist spots across Munnar. During the entire day, you can visit spots and destinations like Echo Point, Gundala Lake, Elephant Arrival Point, Cinema Shooting Point, Jungle Honey Bee Nest and several others. Mattuppetty, Tata Tea Museum, Eravikulam National Park, Blossom Hydel Park, Anaimudi Peak, and spice plantations will also be visited. Upon completion of your excursion, you will be dropped at the hotel; 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 4:</b> Thekkady
								</p>
								<p class="aj">This day will be dedicated to both of yours’ love towards the Mother Nature! Following your breakfast at the Munnar hotel, take a drive through the pictorial trails that head towards a natural treasure called Thekkady.<br />
<br />
With your arrival in Thekkady, you will be checked-in into a hotel, where you can relax for a while and explore the opulent beauty around the vicinity. During the latter part of the day, you can enjoy an enthralling evening boat ride in the Periyar Lake and explore the wilderness of the Periyar National Park along with your partner. Post this, you will be drive back to the hotel for 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 5:</b> Kumarakom
								</p>
								<p class="aj">After having breakfast at the hotel, pack your bags and leave for Kumarakom with your better half. As the love and romance of your journey will continue towards the stunning backwater destination of Kerala, you can fill your emotions cuddling each other in the most delicate ways! Arriving in Kumarakom, settle down in a hotel and get freshened up. Post this, both of you can set your feet into the magical lands of Kumarakom and discover the churns and bits of love that prevails here!<br />
<br />
Enjoy the day while indulging in exciting activities like yachting, fishing, surf riding, swimming and others alike. Surprise her with a day picnic at the Pathiramanl Island and redefine you love and emotions for her. Continue this zestful journey with a wonderful and utmost romantic backwater cruise; by evening, return back 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 6:</b> Kumarakom
								</p>
								<p class="aj">As both of you wake up in the morning, you will be served with a delicious breakfast at the Kumarakom hotel. Post this, continue with the romantic flow of your Kerala honeymoon romantic package and take a drive towards the ‘Backwater Capital’ of Kerala or Alleppey.<br />
<br />
Your stay in Alleppey will be one of the most romantic stays, as you will be checked-in into a livelier houseboat. Following your check-in into the houseboat, relax for a while and embark on a romantic backwater cruise with the love of your life! Cruise the silent backwaters, adorn the charm and allurement of the lush coconut groves, azure lagoons, coir villages, and settle down in the picturesque Vembanad Lake for 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 7:</b> Kovalam
								</p>
								<p class="aj">Today, let the charisma of the Arabian Sea take over both of you while you will be driven towards Kovalam. Home to some of the most beautiful beaches in the world, it is one of the most romantic and charming honeymoon destinations in Kerala.<br />
<br />
After checking-in into a hotel, unwind yourself and get ready for the most playful day of your Kerala honeymoon romantic tour! Make it to the stunning Kovalam Beach, take a long walk while holding on to each other’s hand, enjoy the sunshine, bask the sun, play with the sands, take a relaxing ayurvedic body massage, feast on the amazing views of the setting sun, and conclude the day with a cultural show. Post this, return to the hotel for 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 8:</b> Kovalam
								</p>
								<p class="aj">Enjoy a hearty breakfast in the Kovalam leisure home, and take a drive to Kanyakumari one of the most gorgeous holiday, cultural and historical tourist destinations in India. On your way, you can visit the historical Padmanabhapuram Palace of the Maharaja of Travancore and the holySucheendram Temple.<br />
<br />
Arriving in Kanyakumari, get a view of the confluence point of the Arabian Sea, Indian Ocean and the Bay of Bengal. Following this, take an exciting boat ride to the Vivekananda Rock Memorial, the meditation ground of Swami Vivekananda. Revelwith golden views of the setting sun, and ride back from the memorial. Post this, you will be driven back to Kovalam for 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 9:</b> Departure
								</p>
								<p class="aj">Day Schedule: Embrace all the sweet, pleasant and romantic memories of your honeymoon in Kerala! Pack your bags along with all those memories and wish adieu to the romantic locales of God’s Own Country, and get dropped at the Trivandrum International Airport or Trivandrum Railway Station. With your drop, your Kerala honeymoon tour will come to an end!<br />
<br />
Today, after breakfast is served at the Kovalam hotel, pack your bags and get ready to be dropped at Trivandrum Airport. With your drop at the airport, this extremely romantic sojourn of yours will come to an end.</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>
															</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.fourstoursandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kerala Honeymoon Romantic Package - 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="84231"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Kerala Honeymoon Romantic Package - 8 Nights / 9 Days Tour Packages";i:2;s:169:"book kerala honeymoon romantic package - 8 nights / 9 days tour packages, hill station tour packages, kumarakom, kochi, kovalam, thekkady, alleppey, munnar tour packages";i:3;s:208:"Four S Tours & Travels offers Kerala Honeymoon Romantic Package - 8 Nights / 9 Days tour package, budget Hill Station tour packages for Kumarakom, Kochi, Kovalam, Thekkady, Alleppey, Munnar at exciting price.";i:4;s:458:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kumarakom, Kochi, Kovalam, Thekkady, Alleppey, Munnar"        
		                 },
		      "description": "",
		      "name": "Kerala Honeymoon Romantic Package",
		      "telephone": "+91-8089895191"
		    }
		    </script>
			";i:5;N;}