a:6:{i:0;s:7723:"				<div class="h1"><h1>Thailand Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rapidactionexpedition.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rapidactionexpedition.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bangkok, Pattaya</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.rapidactionexpedition.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="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="98926"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Day 1: Arrive - Bangkok - Pattaya\r\nArrive at Bangkok Airport in the morning to be received cordially by our IHPL representative. Accompanied by the staff representative, get on a two hour drive to Pattaya, one of the most exotic beach destination in South East Asia. Post Arrival, indulge in your favorite pastimes. Enjoy the city ambience, relax and lay off at beaches, revel in the delicacies with local restaurants and relish the exotic bar. Pamper yourself with amazing body massages and shop till you drop. It\'s like the whole city for your wishes. Evening is free at your leisure! Return to your hotel for the overnight stay.\r\nDay 2: Pattaya - Half Day Coral Island Tour in Pattaya and Crocodile Farm\r\nPost Breakfast, get transferred to the picturesque Coral Island (Kohlan), passing through the wonderful azure waters of Gulf of Thailand. You have the entire day at your leisure. You can laze around the beach, relax, snorkel or swim around, relishing to the full, the island\'s marvelously scenic beaches. There is also an option of diving down the sea waters to behold the exotic marine life from close quarters.\r\n\r\nAfter this, Get transferred to the crocodile farm to marvel at these giant beasts from nearby. Besides having the largest water area, this farm also has largest population of crocodiles which are bred in-house. Spend the evening at your wish, soaking in and understanding this incredible city. Return to the hotel for the overnight stay.\r\nDay 3: Pattaya - Sriracha Tiger Zoo and Adventurous Activities\r\nStart your day off with a healthy breakfast and travel to Sriracha Tiger Zoo, which is one of the best Tiger zoos in the world. Pervaded with wonderful natural surroundings all over, the park is house to hundreds of tigers which you can see closely. Herein you also have great opportunity to take amazing pictures while holding tiger cubs in your hands and feeding them. An amazing dose of entertainment lies in here for your family and friends.\r\n\r\nIn the latter part of the day, relish the adventurous rides like the Tower Shoot and Sky Pattaya to enjoy to the hilt. The evening is free at your leisure. Return to your hotel and stay for overnight at Pattaya.\r\nDay 4: Pattaya - Bangkok - Chao Phraya\r\nAfter breakfast, get transferred from Pattaya to Bangkok and perform check in to your hotel and relax. Proceed to River City Pier later in the evening. From the River Shopping Complex, get aboard the beautiful Chao Phraya Princess Cruise and enjoy the amazingly picturesque sights of both the sides of the Chao Phraya River. Click the beautiful pictures of the two \"Wonders by Night\"-the temple of Dawn and the temple of Emerald Buddha, as you sail through the river on your amazing boat. Enjoy lip smacking dinner prepared carefully by expert chefs as well as live music as you revel in the delightful settings. Return to your hotel for the overnight stay.\r\nDay 5: Bangkok Safari World and Marine Park\r\nPost Breakfast, get ready for a day full of fun and frolic at the Safari World and Marine Park, one of the Thailand\'s most popular destinations. The park is divided into four different parts-the Safari Park, the Bird Park, The Games Corner, and the Macaw Island). An incredible haven of exotic wildlife, the Safari Park is an amazing world of several species like dolphins, orangutans, seals and many other exquisite birds as well as animals. The setting is closely African and there are mouth-watering lunch options to choose from. Transfer back to your hotel for few moments of relaxation. The evening is free to spend. Catch sights of amazing places within the city and experience the wonderful vibrancy of the place. Get transferred to your hotel for relaxed overnight stay.\r\nDay 6: Departure\r\nEnjoy your morning meals and perform check out. Get transferred to the airport for your return journey.<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>
												</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.rapidactionexpedition.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="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="98926"/>
						</form>
						</div>
						
						";i:1;s:52:"Book Thailand Tour - 4 Nights / 5 Days Tour Packages";i:2;s:117:"book thailand tour - 4 nights / 5 days tour packages, beach and islands tour packages, bangkok, pattaya tour packages";i:3;s:172:"Book Thailand Tour - 4 Nights / 5 Days tour packages from Rapid Action Expedition - Get attractive 4 Nights / 5 Days Beach and Islands  tour packages for  Bangkok, Pattaya.";i:4;s:4270:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya"        
		                 },
		      "description": "Day 1: Arrive - Bangkok - Pattaya\r\nArrive at Bangkok Airport in the morning to be received cordially by our IHPL representative. Accompanied by the staff representative, get on a two hour drive to Pattaya, one of the most exotic beach destination in South East Asia. Post Arrival, indulge in your favorite pastimes. Enjoy the city ambience, relax and lay off at beaches, revel in the delicacies with local restaurants and relish the exotic bar. Pamper yourself with amazing body massages and shop till you drop. It\'s like the whole city for your wishes. Evening is free at your leisure! Return to your hotel for the overnight stay.\r\nDay 2: Pattaya - Half Day Coral Island Tour in Pattaya and Crocodile Farm\r\nPost Breakfast, get transferred to the picturesque Coral Island (Kohlan), passing through the wonderful azure waters of Gulf of Thailand. You have the entire day at your leisure. You can laze around the beach, relax, snorkel or swim around, relishing to the full, the island\'s marvelously scenic beaches. There is also an option of diving down the sea waters to behold the exotic marine life from close quarters.\r\n\r\nAfter this, Get transferred to the crocodile farm to marvel at these giant beasts from nearby. Besides having the largest water area, this farm also has largest population of crocodiles which are bred in-house. Spend the evening at your wish, soaking in and understanding this incredible city. Return to the hotel for the overnight stay.\r\nDay 3: Pattaya - Sriracha Tiger Zoo and Adventurous Activities\r\nStart your day off with a healthy breakfast and travel to Sriracha Tiger Zoo, which is one of the best Tiger zoos in the world. Pervaded with wonderful natural surroundings all over, the park is house to hundreds of tigers which you can see closely. Herein you also have great opportunity to take amazing pictures while holding tiger cubs in your hands and feeding them. An amazing dose of entertainment lies in here for your family and friends.\r\n\r\nIn the latter part of the day, relish the adventurous rides like the Tower Shoot and Sky Pattaya to enjoy to the hilt. The evening is free at your leisure. Return to your hotel and stay for overnight at Pattaya.\r\nDay 4: Pattaya - Bangkok - Chao Phraya\r\nAfter breakfast, get transferred from Pattaya to Bangkok and perform check in to your hotel and relax. Proceed to River City Pier later in the evening. From the River Shopping Complex, get aboard the beautiful Chao Phraya Princess Cruise and enjoy the amazingly picturesque sights of both the sides of the Chao Phraya River. Click the beautiful pictures of the two \"Wonders by Night\"-the temple of Dawn and the temple of Emerald Buddha, as you sail through the river on your amazing boat. Enjoy lip smacking dinner prepared carefully by expert chefs as well as live music as you revel in the delightful settings. Return to your hotel for the overnight stay.\r\nDay 5: Bangkok Safari World and Marine Park\r\nPost Breakfast, get ready for a day full of fun and frolic at the Safari World and Marine Park, one of the Thailand\'s most popular destinations. The park is divided into four different parts-the Safari Park, the Bird Park, The Games Corner, and the Macaw Island). An incredible haven of exotic wildlife, the Safari Park is an amazing world of several species like dolphins, orangutans, seals and many other exquisite birds as well as animals. The setting is closely African and there are mouth-watering lunch options to choose from. Transfer back to your hotel for few moments of relaxation. The evening is free to spend. Catch sights of amazing places within the city and experience the wonderful vibrancy of the place. Get transferred to your hotel for relaxed overnight stay.\r\nDay 6: Departure\r\nEnjoy your morning meals and perform check out. Get transferred to the airport for your return journey.",
		      "name": "Thailand Tour",
		      "telephone": "+91-9411191687"
		    }
		    </script>
			";i:5;N;}