a:6:{i:0;s:12981:"				<div class="h1"><h1>Singapore and Thailand Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.highspiritadventures.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.highspiritadventures.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore and Thailand 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">
						7 Nights / 8 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"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore and Thailand 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="118763"/>
						</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/445618/192545.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/445618/192545.jpg"  width="150" height="150"    alt="Singapore and Thailand Tour" title="Singapore and Thailand 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> Arrive Singapore
								</p>
								<p class="aj">After arriving at the Singapore airport,  representative helps you with an assisted transfer to the hotel. While the day is at leisure, the evening is scheduled for a memorable night safari tour. The first wildlife park in the world offers an entirely different experience to the visitors of having a rendezvous with the wildlife of the tropical jungle during the night hours. Soft lighting technique has been used so that the visitors can see around 1000 night animals of over 100 species. Hop into the tram and enjoy the show. The tiny island country has a lot stored for you in the coming days. In the evening Dinner at the Restaurant without transfers.<br />
<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 2:</b> Singapore
								</p>
								<p class="aj">Begin the day with a refreshing breakfast in the hotel, which will be followed by a panoramic half-day tour of the city. Proceed for a half day Singapore City Tour. Pose with the famous Merlion at the Merlion photo stop. Stop for other excitement at the Suntec City and the Fountain of Wealth. Explore China Town-Chinese neighborhood, Little India- Singapore's ethnic neighborhood where Indian and Singapore's culture mingle with each other and drive past the government houses and Orchard Road. Rest of the day is at leisure. In the evening Dinner at the Restaurant without transfer. Overnight 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
								</p>
								<p class="aj">Start the day leisurely. Have breakfast in hotel and indulge in the pleasures of your room. In the afternoon, proceed on a Sentosa Twilight Tour. The fun-filled tour includes a one-way cable car ride, admission ticket and visits to the SEA Aquarium, Merlion Tower, and Wings of Time show. Sentosa is a true slice of paradise. It is blessed with a kaleidoscope of attractions and activities. Step afoot the island and be mesmerized. The lush greenery is a breathtaking beauty. Peppered with exciting attractions, the tropical resort is themed park, Nature Park and heritage centre all rolled into one. Return back to the hotel for dinner and 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 4:</b> Singapore – Bangkok
								</p>
								<p class="aj">Start your day with breakfast after which you can check out from the Hotel. Get an assisted transfer to the airport to catch your flight to Bangkok. Upon your arrival at Bangkok Airport, meet the tour representative who will assist you in smooth transfer to the Pattaya hotel for hotel check-in. Pattaya is less than 2 hours via road, 150 kilometers South-East of Bangkok. The picturesque beach resort offers something to everyone. It is blessed with the best of everything- sightseeing, recreation, fun and entertainment. In the evening dine at the restaurant and rest overnight in the hotel.<br />
<br />
Spend the evening at leisure or opt for the Alcazar Show. An evening of the world-famous cabaret can give the Lido and Moulin Rouge a run for their money. Featuring a grand theatre with 1,200 seats the state-of-the-art light and sound system, creates a show offers a unique blend of acting, stage design, costumes and glamour. There are several Indian and local restaurants to enjoy a sumptuous dinner on your own. Return to your hotel for a restful 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> Pattaya
								</p>
								<p class="aj">Breakfast is followed by pick-up from the hotel for Coral Island tour. On reaching the designated spot, hop into the speed boat for going to the Coral Island, also known as Koh Lann Island.<br />
<br />
Known for abundant natural beauty and peaceful environ, this island is known for being a combination of relaxing as well as adventures experiences. The soft white sands let you relax and enjoy a leisure walk. Undersea-walk, parasailing, jet skiing and water skiing are some of the water sports activities that you can partake in. You can also explore the colorful coral reefs of islands of Koh Krok and Koh Sak by going for snorkeling and deep-sea diving.<br />
<br />
**Please take note that you have to make payment for parasailing and undersea walk activities, also bring your own diving equipment at the spot since there are no dive shops in this area.<br />
<br />
In the afternoon, back to Pattaya for lunch at an Indian Restaurant. Stay overnight.</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 - Bangkok
								</p>
								<p class="aj">Recharge yourself with a healthy breakfast at the hotel after which you proceed to travel back to Bangkok. Check in the hotel and proceed for city tour. Embark on a pleasant exploration of Bangkok. The capital city of Thailand is the city of temples, spas, endless shopping sprees and a vivid nightlife. The city and temple tour takes you to some of Bangkok's most distinguished Buddhist temples locally known as WATS. Visit Wat Traimit, Temple of the Golden Buddha which is home to a 5.5 ton statue of the holy Buddha made from solid gold and is a fine example of Sukhothai art. Next stop comes at Wat Pho, Temple of the Reclining Buddha that is home to the largest and the oldest shrine of its kind in Bangkok. Enjoy a shopping spree at the Gems Gallery next. Head to the comfort of your hotel for dinner and 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> Bangkok
								</p>
								<p class="aj">Have a leisurely breakfast at the hotel as the day is free of plans. Either enjoy the delights of your hotel or you can opt for an exciting time at the Safari World and Marine Park. Thailand's popular open zoo is divided into four distinct sections; the Safari Park, Bird Park, Games Corner and Macaw Island. Spend time up-close with dolphins, orangutans, seals and a myriad of other exotic animals and birds amidst a picturesque African setting. Take a break while you choose from several lunch options available for you. Return to the hotel to take rest. Evening is free for you to enjoy as you like. Dinner and 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 8:</b> Tour ends
								</p>
								<p class="aj">Begin the day with as scrumptious breakfast after which check out from the hotel. Get timely transfer to the Bangkok International Airport for your return flight. The tour ends. Take home cherished memories of Singapore with Thailand.</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>
																		<li>Transfers</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.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore and Thailand 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="118763"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Singapore and Thailand Tour - 7 Nights / 8 Days Tour Packages";i:2;s:142:"book singapore and thailand tour - 7 nights / 8 days tour packages, beach and islands tour packages, bangkok, pattaya, singapore tour packages";i:3;s:181:"High Spirit Adventures offers Singapore and Thailand Tour - 7 Nights / 8 Days tour package, budget Beach and Islands tour packages for Bangkok, Pattaya, Singapore at exciting price.";i:4;s:426:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya, Singapore"        
		                 },
		      "description": "",
		      "name": "Singapore and Thailand Tour",
		      "telephone": "+91-8629029169"
		    }
		    </script>
			";i:5;N;}