a:6:{i:0;s:11651:"				<div class="h1"><h1>Bangkok - Pattaya - 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>Bangkok - Pattaya - 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">INTL/052 Nights Bang</td>
						</tr>
												<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">Bangkok, Pattaya, Singapore</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 61699 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="Bangkok - Pattaya - 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="28063"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Visa for Thailand and 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 .<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 />
In the afternoon proceed for Sentosa Island tour.<br />
 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 hotel at Singapore<br />
</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 – Bangkok (By Flight)
								</p>
								<p class="aj">After breakfast rest of the day free for shopping and to explore the city on your own. Later check out from the hotel and transfer to airport for flight to Bangkok. On arrival at Bangkok New Suwarnabhumi Airport, after clearing the immigrations and customs, met our representative and transfer to hotel. Check in at the hotel and rest of the day at free leisure. Overnight at hotel in Bangkok.</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> Bangkok
								</p>
								<p class="aj">After breakfast proceed for half day city tour of Bangkok This is one of the most popular tours, and it gives guests a rich insight into Buddhism, architecture and the hustle and bustle of Bangkok. Three of the capital’s most stunning temples are visited including Wat Trimit (The Temple of Solid Golden Buddha weight 5.5 tons).This temple houses an ancient solid gold seated Buddha image of the Sukhothai Period, three meters in height and weighing 5.5 tons. Wat Pho (The Temple of the Reclining Buddha) This large and extensive temple neighbours the Grand Palace and contains a gigantic gold plated Reclining Buddha. The temple is also regarded as the first center of Thai Massage Education. Wat Benchamabopit (The Marble Temple).This unique marble temple was constructed during the reign of King Rama V. It employs European ecclesiastic detail, such as stained glass windows and contains a superb cloister collection of bronze Buddha images ,Later visit  the world famous Gems & Jewellery shop. <br />
Later return back to the hotel Rest of the day free at leisure. Overnight at the hotel in Bangkok.</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> Bangkok - Pattaya (By Coach 2 Hrs)
								</p>
								<p class="aj">After breakfast, check out from the hotel and transfer to Pattaya by a/c coach, where is one of the most destinations of tourist who love the beach, sunshine, nightlife and a lot of entertainments. Take about 2 hrs from Bangkok by road. Arrive Pattaya, transfer and check in at hotel and Rest of the day free at leisure. Overnight at hotel in Pattaya.</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> Pattaya
								</p>
								<p class="aj">After Breakfast proceed to Coral Islands – enjoy watching corals and marine life from glass bottom boats in crystalline blue waters Start of tour with speed boat ride to a paragliding platform (paragliding at own cost)(Absolutely safe even for non swimmers)Enjoy many water sports at the Coral Island (at own cost). Return to Pattaya for Indian Lunch at the restaurant. Return back to hotel and rest of the day free at leisure. Overnight at hotel in Pattaya.</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> Pattaya - Bangkok- Departure
								</p>
								<p class="aj">After breakfast, free at leisure till time transfer to Bangkok airport to board the flight back to home.<br />
</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>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Visa for Thailand and 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="Bangkok - Pattaya - 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="28063"/>
						</form>
						</div>
						
						";i:1;s:73:"Book Bangkok - Pattaya - Singapore Tour - 6 Nights / 7 Days Tour Packages";i:2;s:149:"book bangkok - pattaya - singapore tour - 6 nights / 7 days tour packages, forts and palaces tour packages, bangkok, pattaya, singapore tour packages";i:3;s:194:"Chaturvedi Travels and Tours offers Bangkok - Pattaya - Singapore Tour - 6 Nights / 7 Days tour package, budget Forts and Palaces tour packages for Bangkok, Pattaya, Singapore at exciting price.";i:4;s:669:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya, Singapore"        
		                 },
		      "description": "Visa for Thailand and 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": "Bangkok - Pattaya - Singapore Tour",
		      "telephone": "+91-9826355115"
		    }
		    </script>
			";i:5;N;}