a:6:{i:0;s:13343:"				<div class="h1"><h1>Singapore & Malaysia Combo Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.stardestinationtours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.stardestinationtours.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore & Malaysia Combo 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kuala Lumpur, Singapore</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.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Combo 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="72937"/>
						</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_15/439456/130842.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/439456/130842.jpg"  width="150" height="150"    alt="Singapore & Malaysia Combo Tour" title="Singapore & Malaysia Combo 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> Singapore – Adventure Cove Water Park with S.E.A Aquarium
								</p>
								<p class="aj">The Singapore and Malaysia Tour starts with your arrival at the Singapore Airport. Enjoy the warm welcome to the Lion City. A tour representative shall be present to attend you and transfer to the hotel in Singapore. Relax and get fresh.<br />
<br />
Later in the day proceed to the Adventure Cove Water Park. The adventure park and its enthralling rides gives you an adrenaline rush. Zoom through thrilling waterslides such as South East Asia's first hydro magnetic coaster. The Blu water Bay wave pool is ideal for lots of fun. There rea rides where you can grab a tube and journey down Adventure River. There are almost 14 themed zones including a tropical jungle garden. A cavern in the park is inhabited by the mysterious sea creatures. In the adventure zone one can enjoy the mesmerizing experience to snorkel over a colorful coral reef with 20,000 friendly fishes.<br />
<br />
The S.E.A Aquarium is one of the world's largest aquarium. Here visitors can immerse yourself in the magic of life underwater. The aquarium is a supersize window to the ocean. Visit more than 800 species of marine animals. The aquarium is home to magnificent manta rays, enormous goliath groupers, Napoleon wrasse and other gentle giants of the sea. Around 200 sharks also inhabit the cerulean depths.<br />
<br />
Recover from the magical allure of the marine world. The evening is at your leisure. The vivacious nightlife of Singapore awaits to be explored. The Clarke Quay is the place to be. The charming diversity makes sure that every visitors is left spellbound. Return to the hotel for 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 2:</b> Singapore- Sands Sky Park and Sentosa Island Tour
								</p>
								<p class="aj">Begin the day with a refreshing breakfast at Sands Sky Park at the Marine Bay. Snuggled in the heart of the city, here is a moment worth cherishing a lifetime. The views are spectacular and you will be surely charmed.<br />
<br />
After a hearty breakfast, proceed to the Butterfly Park & Insect Kingdom. Surrounded by verdant tropical foliage, the park showcases the spectacular beauties of Mother Nature. With a great variety of fluttering butterflies and exotic insects, this tamed wilderness is a sure delight to all visitors. There is a golden opportunity to enjoy a truly unique outdoor experience. Activities offered in the lush kingdom is suitable for all ages. Discover ecosystems and species only found in Singapore or Southeast Asia. Next, board the Sky ride and grasp the fantastic panoramic scenery of the city skyline and beautiful coastline.<br />
<br />
There's no better way to complete a marvelous day at Sentosa than to take in a spectacular night show set outdoors against the backdrop of an open sea. Wings of Time is an international famed musical and laser light show. Witness an awe-inspiring display of water, laser and fire effects, set to majestic music and a landscape of breathtaking views. The show narrates a tale of friendship and courage. The poignant music will linger with you long time after you leave the dreamlike island. Return to the hotel for overnight stay in Singapore.</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> Singapore - Universal Studios Tour
								</p>
								<p class="aj">Start the day with a hearty breakfast. After your delicious start, head to the universal studios. In the Universal Studio Tour, go beyond the screen. The real thrill lies in exploring the nuances of the movie making. There are numerous thrilling ride the Movies at Universal Studios Singapore at Resort World Sentosa. Experience innovative rides, shows, and attractions based on your favorite blockbuster films and television series. These include Transformers The Ride: The Ultimate 3D Battle, Shrek 4-D Adventure, Revenge of the Mummy, Madagascar: A Crate Adventure Jurassic Park Rapids Adventures, Battlestar Galactica: HUMAN vs. CYLON™ dueling Coasters, and many more.<br />
<br />
Recover from the mesmerizing world of movies with an overnight stay in your hotel in Singapore.</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> Arrival in Kuala Lumpur - Night tour with KL Tower Ticket
								</p>
								<p class="aj">Pack your bags and enjoy a delicious breakfast in your hotel. After you meal, you will be transferred to Kuala Lumpur. The magical capital of Malaysia awaits with a warm welcome. From the Coach station board your coach to Kuala Lumpur. On arrival avail transfer to the hotel in Kuala Lumpur. Check-in and enjoy the lavish comforts of your room and the hotel.<br />
<br />
Kuala Lumpur is the Asian cyber city. The Malaysian capital has a treasure of historic temples and mosques co-existing with state-of-the-art towers and shopping malls. In the evening proceed for the Kuala Lumpur night tour with KL Tower ticket. The views form the PETRONAS towers is simple beyond words can describe.<br />
<br />
Return to hotel for overnight stay in Kuala Lumpur.</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> Kuala Lumpur – Full Day Genting Theme Park
								</p>
								<p class="aj">After an appetizing breakfast at the hotel, proceed for full day Genting Highlands tour. The Genting highlands are breathtaking. Amidst the natural beauty in the fresh mountain airs about 6,000 feet above sea level, it is Malaysia's luxury holiday resort and a World-Class City of Entertainment. The spectacular vacation spot is surrounded by one of the oldest tropical jungles in the world. Enjoy the numerous indoor amusement rides, casino, cinemas, restaurants and shopping malls. You will not wish to return. The charming allures shall capture your hearts. Overnight stay in Kuala Lumpur 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 6:</b> Kuala Lumpur – Half Day Country side & Batu Caves Tour
								</p>
								<p class="aj">Start the day with an early morning breakfast. Next, proceed to Half Day country side & Batu Caves Tour. This sightseeing tour starts with a visit to the Malaysian Batik Cottage. Here watch how fine Batik garments are made. Next visit to the world's only Royal Selangor Pewter factory. Pewter products are well known worldwide. Here you can buy some rare bargains at the world re-known departmental store. Next highlight of the day is the most exciting stopover, The Batu Caves. The towering limestone outcropping is located just 13 kilometers north of Kuala Lumpur. These caves house numerous Hindu shrines. The intriguing Batu Caves is one of the must visit famous landmark in Kuala Lumpur. Witness the marvel of nature. Return to hotel for 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> Depart Kuala Lumpur
								</p>
								<p class="aj">Begin the day with a delicious breakfast in the hotel. Your time is at your leisure, until our representative takes you to the airport. You will have all arrangements for a comfortable journey back home. Return home with cherished memories of Singapore and Malaysia.</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.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia Combo 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="72937"/>
						</form>
						</div>
						
						";i:1;s:70:"Book Singapore & Malaysia Combo Tour - 6 Nights / 7 Days Tour Packages";i:2;s:133:"book singapore & malaysia combo tour - 6 nights / 7 days tour packages, heritage tour packages, kuala lumpur, singapore tour packages";i:3;s:187:"Book Singapore & Malaysia Combo Tour - 6 Nights / 7 Days tour packages from Star Destination Tours - Get attractive 6 Nights / 7 Days Heritage  tour packages for  Kuala Lumpur, Singapore.";i:4;s:426:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kuala Lumpur, Singapore"        
		                 },
		      "description": "",
		      "name": "Singapore & Malaysia Combo Tour",
		      "telephone": "+91-9888421743"
		    }
		    </script>
			";i:5;N;}