a:6:{i:0;s:9660:"				<div class="h1"><h1>4 Nights Singapore Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.chaturveditravels.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>4 Nights Singapore 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">Tour Code </td>
						<td class="p5px pl0px vat">INTLO1/4 Nights/05 D</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Singapore, Singapore City</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 65099 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="4 Nights Singapore 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="28057"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Visa for Singapore<br />
Travel insurance<br />
Items of personal nature viz, drinks, laundry, calls, etc.<br />
Meals anything not mentioned in the itinerary<br />
Peak season charges, if applicable<br />
Service tax of 3.09%  on the total package<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 Arrival
								</p>
								<p class="aj">Arrive at Singapore, after clearing the immigration, you will be met by our local representative and transferred to Hotel. Check in at the hotel .Rest of the Day free for relaxation.<br />
In the Evening take a tour of the world’s only ‘Night Safari’, The world’s first Night Safari  set in 40 hectares of secondary jungle will unfold the mystery and drama of the tropical jungle after dusk with stunning effect. See a myriad of nocturnal animals, from fierce predators to timid forest dwellers, in their natural habitat under subtle moon glow lighting. Roam the jungle in the complete safety and comfort of your  Tram  which takes you through the East and West Loop passing by a large reservoir and weaving through selected habitats designed specifically to replicate the natural environment from the Himalayan Foothills to the Southeast Asian Rainforest and Indian Subcontinent. On completion of the tram ride, your tour guide will lead you on a walking trail where you will be able to view some animals at closer quarters.<br />
Return back to hotel . Overnight in the hotel at 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 2:</b> Singapore
								</p>
								<p class="aj">After breakfast, proceed for the  Singapore city tour  explore the city by driving round the Civic District, passing by the Padang, Cricket Club, historic Parliament House, Supreme Court and City Hall. Next, stop at the MERLION PARK and enjoy the impressive views of Marina Bay. Do not miss out this picture-taking opportunity with The Merlin, a mythological creature that is part lion and part fish. Visit THIAN HOCK KENG TEMPLE, one of Singapore’s oldest Buddhist-Taoist temples, before driving past Chinatown. Stop by a LOCAL HANDICRAFT CENTRE and observe craftsmen at work up-close. Proceed to the NATIONAL ORCHID GARDEN, located within Singapore Botanic Gardens, which boasts a sprawling display of 60,000 orchid plants. Our final stop at LITTLE INDIA will entrance you with the scent of joss sticks, jasmine and spices.<br />
Return back to the hotel. Rest of the time free at leisure. Overnight in the hotel at 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
								</p>
								<p class="aj">Sentosa - an island of peace and tranquility is just minutes away from the main Island of Singapore. On the island visit IMAGES OF SINGAPORE, where you’ll embark on journey to experience the colorful culture and vibrant heritage of Singapore, re-told through life-size figures, animatronics and special effects. End the tour with a scenic Cable Car Ride from Sentosa to Mount Faber where you can see the beautiful landscape of the city. Private chartered transportation between attractions will make your visit more comfortable.<br />
Return back to the hotel. Rest of the time free at leisure. Overnight in the hotel at 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> Singapore
								</p>
								<p class="aj">After breakfast proceed towards full day tour of Universal studio ( optional on additional cost ).Universal Studio Enter the thrilling world of movie magic as you “ride the movies” on roller coasters and other movie-themed attractions. Be dazzled and delighted by an immersive entertainment experience that brings the silver screen to life.<br />
This Hollywood movie theme park forms part of Resorts World Sentosa. Among the park’s many rides and attractions are Battlestar Galactica, the world’s tallest pair of dueling roller coasters and Far Far Away Castle, the first castle from the world of Shrek where you can experience the amazing Shrek 4-D attraction. One of the biggest spectacles in live entertainment is based on the movie Waterworld. The action comes surging to life in a tidal wave of death-defying stunts, explosions and thrilling action. Enjoy Jurassic Park Rapids Adventure, Madagascar: A Crate Adventure and Revenge of the Mummy and many more.<br />
Return back to the hotel. Rest of the free .Overnight in hotel at 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 5:</b> Singapore - Departure
								</p>
								<p class="aj">After breakfast, check out and transfer to Singapore airport for your return flight</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">Exclusions :</p> <ul><li>Visa for Singapore</li><li>
Travel insurance</li><li>
Items of personal nature viz, drinks, laundry, calls, etc.</li><li>
Meals anything not mentioned in the itinerary</li><li>
Peak season charges, if applicable</li><li>
Service tax of 3.09%  on the total package</li></ul><br />
												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="4 Nights Singapore 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="28057"/>
						</form>
						</div>
						
						";i:1;s:62:"Book 4 Nights Singapore Tour - 4 Nights / 5 Days Tour Packages";i:2;s:136:"book 4 nights singapore tour - 4 nights / 5 days tour packages, beach and islands tour packages, singapore, singapore city tour packages";i:3;s:196:"Book 4 Nights Singapore Tour - 4 Nights / 5 Days tour packages from Chaturvedi Travels and Tours - Get attractive 4 Nights / 5 Days Beach and Islands  tour packages for  Singapore, Singapore City.";i:4;s:643:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Singapore, Singapore City"        
		                 },
		      "description": "Visa for Singapore
Travel insurance
Items of personal nature viz, drinks, laundry, calls, etc.
Meals anything not mentioned in the itinerary
Peak season charges, if applicable
Service tax of 3.09%  on the total package",
		      "name": "4 Nights Singapore Tour",
		      "telephone": "+91-9826355115"
		    }
		    </script>
			";i:5;N;}