a:6:{i:0;s:23355:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Romantic Honeymoon In Bali Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.flyingfeetholidays.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.flyingfeetholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Romantic Honeymoon In Bali Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<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">
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Bali</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.flyingfeetholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Romantic Honeymoon in Bali Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="187922"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_20/578790/293943.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_20/578790/293943.jpg"  width="150" height="100"    alt="Romantic Honeymoon in Bali Tour" title="Romantic Honeymoon in Bali Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Bali, the heavenly island of Indonesia is bliss incarnate. With views that help you imagine paradise, the island is idyllic for honeymoon. Couples can indulge in creating romantic memories. While the accommodation offers 5-star luxuries, sightseeing include beautiful beaches, ancient temples, and charming villages. The thrilling range of adventure sports, delightful food, relaxing Balinese massage, shopping pleasures and more help you have wonderful experiences.<br />
With our 5-day Romantic Honeymoon in Bali plan for memories for a lifetime. Go through the itinerary for more details.<br />
Note: This is just a suggested itinerary indicative of what could be possible. We customize holidays for your specific needs. Contact us if you want modifications so that we could customize a holiday to suit your need for an unforgettable International tour.<br />
<br />
<br />
TRIP HIGHLIGHTS<br />
A relaxed tour with honeymoon theme.<br />
Stay 04 nights in Bali<br />
Full Day Benoa Beach with Watersports Tour (Flying Fish, Banana Boat Ride & Jet Ski)<br />
120 Min Ancient Balinese Spa Treatment<br />
Kintamani Volcano Tour & Ubud Village<br />
Tanah Lot Temple & Sunset Tour<br />
All transfers								</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 BALI
										</p>
										<p class="aj">Arrive to ‘paradise on Earth’ Bali. At the airport, meet your tour representative and get an assisted transfer to your hotel. The New Balinese Airport is a beautiful mix of traditional architecture combined with modernization.<br />
<br />
On your way to hotel, outside the airport marvel at the magnificent statue of a battle scene between Gatotkacha and Karna, the legendary characters of the mythology of Mahabharata. Built in 1993, the monument is believed to lend spiritual protection and safety for all incoming and outgoing flights. It also serves as an excellent photo opportunity in Bali.<br />
<br />
On arrival, check in at the hotel. The rest of the day is at your own leisure. Enjoy the comforts of your hotel and explore the environs. 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> FULL DAY BENOA BEACH WITH WATER SPORTS TOUR
										</p>
										<p class="aj">Start the day with a hearty breakfast at the hotel. Later, proceed for thrilling water sports at the famous Tanjung Benoa beach. Located from the hustle-bustle, in the Benoa peninsula, this beach is best known for its aquatic adventures. The options offered include - Jet Ski ride, marine walk / ocean walk, scuba diving, snorkeling, banana boat ride, tandem parasailing, etc. The shore is also lined by a number pf shacks & restaurants that offer a platter of delightful food.<br />
<br />
Later in the afternoon, proceed for the ancient Balinese spa treatment. Indigenous to the island, the treatment includes flower foot bath, Balinese massage, body scrub, body mask, flower bath with special honey ginger tea and many more. Treat your body, mind and soul to the pampering therapies. After a soulful spa treatment, return back to the hotel.<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> KINTAMANI VOLCANO TOUR & UBUD VILLAGE
										</p>
										<p class="aj">After breakfast at hotel, proceed for a full day excursion to the Kintamani Volcano. Capturing the essence of Bali, the day trip is one of the favorite of visitors in the island. Today you will come close to the picturesque beauty of the islands, villages, and traditional arts and crafts.<br />
The first stop of the day is the Batuan village, which is famous for traditional batik and hand weavings. Move on to Mas village, well-known for wood carving. Pay a visit to the Celuk village, where masterpieces of silver and gold works are created.<br />
<br />
Proceed to visit one of the ancient Hindu temples of Bali. Continue with your tour to Mount Batur and Lake Batur in Kintamani village, blessed with stunning views. Your tour ends in the famous Ubud market. Look around the various shopping options to take home some memories of the island.<br />
Return to hotel for overnight stay in Bali.</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> TANAH LOT TEMPLE & SUNSET TOUR
										</p>
										<p class="aj">The 4th day of your Bali honeymoon tour is scheduled with a visit to Tanah Lot Temple. Located on the coastal side of Beraban countryside, 30 km West of Denpasar town, the ancient temple is one of the most-visited places in Bali.<br />
<br />
Built atop a rock, overlooking the sea, the temple is easily reachable by walk from the coastal tip. The revered site dedicated to the Balinese Sea Gods is perfect for a visit with your partner. The temple is surrounded by a coral reef, inhabited by snakes in black and white color. They are believed to be holy and according to the locals are guards of the temple.<br />
<br />
After your visit, return to hotel for overnight in Bali.</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> DEPART BALI
										</p>
										<p class="aj">Start the day with breakfast, post which you are at your own leisure. Pack your bags and check-out of hotel. Avail the timely transfer to the airport. Board the flight to return home with fond memories of honeymoon in Bali.</p>
										</td>
										</tr>
										</table>					
										</div>								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>EP (No Meal)</li>
																						<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount</li><li>
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount.</li><li>
* Retention Amount varies as per the number of days left before your package start date.</li></ul>			
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.flyingfeetholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Romantic Honeymoon in Bali 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="187922"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/new-delhi-tour-packages.htm" title="New Delhi Tour Packages">New Delhi</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/jaipur-tour-packages.htm" title="Jaipur Tour Packages">Jaipur</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/shillong-tour-packages.htm" title="Shillong Tour Packages">Shillong</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/leh-ladakh-tour-packages.htm" title="Leh Ladakh Tour Packages">Leh Ladakh</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/samarkand-tour-packages.htm" title="Samarkand Tour Packages">Samarkand</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/edfu-tour-packages.htm" title="Edfu Tour Packages">Edfu</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/port-blair-tour-packages.htm" title="Port Blair Tour Packages">Port Blair</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/paris-tour-packages.htm" title="Paris Tour Packages">Paris</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/kaziranga-tour-packages.htm" title="Kaziranga Tour Packages">Kaziranga</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/bentota-tour-packages.htm" title="Bentota Tour Packages">Bentota</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/shimla-tour-packages.htm" title="Shimla Tour Packages">Shimla</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/mahabaleshwar-tour-packages.htm" title="Mahabaleshwar Tour Packages">Mahabaleshwar</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/luxor-tours-tour-packages.htm" title="Luxor Tour Packages">Luxor</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/phnom-penh-tour-packages.htm" title="Phnom Penh Tour Packages">Phnom Penh</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/langkawi-tour-packages.htm" title="Langkawi Tour Packages">Langkawi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/agra-tour-packages.htm" title="Agra Tour Packages">Agra</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/kuala-lumpur-tour-packages.htm" title="Kuala Lumpur Tour Packages">Kuala Lumpur</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/chitwan-tour-packages.htm" title="Chitwan Tour Packages">Chitwan</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/lucerne-tour-packages.htm" title="Lucerne Tour Packages">Lucerne</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/kufri-tour-packages.htm" title="Kufri Tour Packages">Kufri</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/lonavala-tour-packages.htm" title="Lonavala Tour Packages">Lonavala</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/alexandria-tours-tour-packages.htm" title="Alexandria Tour Packages">Alexandria</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/paro-tour-packages.htm" title="Paro Tour Packages">Paro</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/phuket-tour-packages.htm" title="Phuket Tour Packages">Phuket</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/pushkar-tour-packages.htm" title="Pushkar Tour Packages">Pushkar</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/cherrapunji-tour-packages.htm" title="Cherrapunji Tour Packages">Cherrapunji</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/kathmandu-tour-packages.htm" title="Kathmandu Tour Packages">Kathmandu</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/zurich-tour-packages.htm" title="Zurich Tour Packages">Zurich</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/alleppey-tour-packages.htm" title="Alleppey Tour Packages">Alleppey</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/port-elizabeth-tours-tour-packages.htm" title="Port Elizabeth Tour Packages">Port Elizabeth</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/forts-palaces-holidays-catid.htm" title="Forts and Palaces Packages">Forts and Palaces</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/house-boat-holidays-catid.htm" title="House Boat Packages">House Boat</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.flyingfeetholidays.com/honeymoon-holidays-catid.htm" title="Honeymoon Packages">Honeymoon</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.flyingfeetholidays.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(14)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:70:"Book Romantic Honeymoon in Bali Tour - 4 Nights / 5 Days Tour Packages";i:2;s:123:"book romantic honeymoon in bali tour - 4 nights / 5 days tour packages, beach and islands tour packages, bali tour packages";i:3;s:175:"Book Romantic Honeymoon in Bali Tour - 4 Nights / 5 Days tour packages from Flying Feet Holidays - Get attractive 4 Nights / 5 Days Beach and Islands  tour packages for  Bali.";i:4;s:1548:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bali"        
		                 },
		      "description": "Bali, the heavenly island of Indonesia is bliss incarnate. With views that help you imagine paradise, the island is idyllic for honeymoon. Couples can indulge in creating romantic memories. While the accommodation offers 5-star luxuries, sightseeing include beautiful beaches, ancient temples, and charming villages. The thrilling range of adventure sports, delightful food, relaxing Balinese massage, shopping pleasures and more help you have wonderful experiences.
With our 5-day Romantic Honeymoon in Bali plan for memories for a lifetime. Go through the itinerary for more details.
Note: This is just a suggested itinerary indicative of what could be possible. We customize holidays for your specific needs. Contact us if you want modifications so that we could customize a holiday to suit your need for an unforgettable International tour.


TRIP HIGHLIGHTS
A relaxed tour with honeymoon theme.
Stay 04 nights in Bali
Full Day Benoa Beach with Watersports Tour (Flying Fish, Banana Boat Ride & Jet Ski)
120 Min Ancient Balinese Spa Treatment
Kintamani Volcano Tour & Ubud Village
Tanah Lot Temple & Sunset Tour
All transfers",
		      "name": "Romantic Honeymoon in Bali Tour",
		      "telephone": "+91-9166682022"
		    }
		    </script>
			";i:5;N;}