a:6:{i:0;s:12631:"				<div class="h1"><h1>Highlights of Vietnam - 8 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Highlights of Vietnam - 8 Days 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">Ho Chi Minh City</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Highlights of Vietnam - 8 Days 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="85194"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</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> Hanoi Arrival.
								</p>
								<p class="aj">Welcome to Hanoi: Vietnam’s bustling colonial capital. Your guide and driver will meet you outside the baggage claim of Noi Bai Airport and take you to your hotel in the city center. In the afternoon, take a walk around the center, visiting some of Hanoi’s main attractions: the Opera House, Old Quarter, Hoan Kiem Lake and Ngoc Son Temple. In the evening enjoy a traditional Water Puppet Performance – a unique Vietnamese Art form hailing from Southeast Asia’s wet-rice culture – followed by a welcome dinner at one of Hanoi’s finest restaurants.<br />
Accommodation: Hotel in Hanoi.</p>					
									<p><b>Meals : </b> Dinner.</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> Hanoi City Tour – Halong.
								</p>
								<p class="aj">Enjoy a half day to explore Vietnam’s charming capital, before driving through the countryside of the Red River Delta to the magical Halong Bay. With its wide tree-lined boulevards, French colonial architecture, peaceful lakes and ancient oriental pagodas, Hanoi is an eclectic mix that offers something for everyone. Your city tour will take you to Hanoi’s key sites: the Ho Chi Minh Complex (Ho Chi Minh's Mausoleum and stilt house), the nearby One Pillar Pagoda; the Temple of Literature, the Fine Arts Museum. In the afternoon, leave the bustle of the big city and drive to Halong Bay (3 to 4 hours drive).<br />
Accommodation: Hotel in Halong.</p>					
									<p><b>Meals : </b> Breakfast.</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> Halong Bay Cruise – Hanoi – Fly to Danang – Hoian.
								</p>
								<p class="aj">Today you enjoy a day cruise on Halong Bay: a UNESCO World Heritage Site and natural wonderland composed of jutting limestone islands and sparkling turquoise waters, located in the Gulf of Tonkin. After breakfast at the hotel, you are transferred to the Halong harbor to board your private junk cruise for a 4-hour journey. Cruise along the calm waters, between looming, limestone outcrops to visit Dau Go Cave “Grotto of the Wooden Stakes”, where, in 1288, one of Vietnam’s most famous generals, Tran Hung Dao, stored hundreds of stakes before battling the invading Mongolian army. A short walk away, visit the newly discovered Thien Cung Cave ("Grotto of the Heavenly Palace"), famous for its stalagmites and stalactites. Savor a fresh seafood lunch, served on board before sailing back to Halong City, where your car will be waiting to take you to Hanoi for your flight to Danang. Upon arrival, transfer to your hotel in Hoian.<br />
Accommodations: Hotel in Hoian.</p>					
									<p><b>Meals : </b> Breakfast, Lunch.</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> Hoian Walking Tour – Boat trip.
								</p>
								<p class="aj">Immerse yourself in the tranquility and charm of this sleepy riverside town. From the 16th to 18th centuries Hoian was a thriving international port frequented by Chinese, Dutch, French, Japanese, Portuguese and Arab traders, who came to trade in the high quality silk still produced in the region. Today, Hoian is a relaxing resort popular with tourists for its eclectic architecture, skilled tailors and numerous cafes. Take a half-day walking tour through the narrow winding streets of the ancient town centre, visiting Chua Ong Pagoda, the Chinese Assembly Hall, the 200-year old Tan Ky ancestral house and the famous Japanese Bridge. After lunch, take a short boat trip to a nearby island and visit a handicraft village specializing in ceramics. Return to the hotel in the late afternoon and enjoy a free evening at your leisure.<br />
Accommodation: Hotel in Hoian.</p>					
									<p><b>Meals : </b> Breakfast, Lunch.</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> Hoian – Danang – Hue.
								</p>
								<p class="aj">Depart Hoian for the scenic mountainous drive to Hue. Stop at the dramatic Hai Van Pass, the high dividing line between the climate zones of North and South Vietnam, to admire the spectacular views and at the fishing village of Lang Co for a drink. Spend the afternoon on a leisurely walking tour through Vietnam’s ancient capital city, visiting the Royal Citadel, Thien Mu Pagoda and the Mausoleum of King Tu Duc (a replica of the king’s palace built for the next reincarnation of the king), before exploring the Imperial Museum and Dong Ba Market.<br />
Accommodation: Hotel in Hue.</p>					
									<p><b>Meals : </b> Breakfast.</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> Hue – Fly to Saigon.
								</p>
								<p class="aj">Have breakfast at the hotel then drive to Phu Bai Airport of Hue to catch your flight to Vietnam’s modern metropolis: Saigon. Arrive in the late morning and enjoy an orientation tour through Ho Chi Minh City’s bustling streets en route to the hotel. Have lunch at a downtown restaurant of your choosing then set out on a guided city tour. Visit the War Remnants Museum, learn about Vietnam’s recent history at Reunification Palace, visit the nearby neo-Romanesque Notre Dame Cathedral and the City's Centre Post Office before passing by the ornate Opera Theatre and the City Hall. Finally, end up at the Ben Thanh Market, where vendors display a vast array of goods and handicrafts, appealing to every taste.<br />
Accommodation: Hotel in Saigon.</p>					
									<p><b>Meals : </b> Breakfast.</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> Saigon – Mekong Delta day trip.
								</p>
								<p class="aj">Today you travel to the Mekong River Delta on a day trip to explore the rich culture and lush fluvial landscape. After breakfast, your guide & driver will meet you at your hotel and take you to Cai Be. Start your tour with a visit to Cai Be’s colorful floating market, cruising among the local barges stuffed-full of fruits and vegetables. Visit some local workshops then enjoy a delicious lunch served at a local house in the cool shade of An Binh Island’s orchards. In the afternoon, take a traditional rowboat and venture deeper into the countryside, floating through narrow canals to enjoy the peaceful surroundings. Stop at a nursery garden to discover how farmers along the delta produce their world famous fruits and vegetables. The cruise ends around 3:30 PM in Vinh Long. Your driver will meet you at the dock and take you back to Saigon.<br />
Accommodation: Hotel in Saigon.</p>					
									<p><b>Meals : </b> Breakfast. Lunch.</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> Saigon Departure.
								</p>
								<p class="aj">Today is free at your leisure for last minute shopping or sight-seeing before driving to the airport to catch your departure flight home.<br />
Bon Voyage!<br />
Accommodation: N/A.</p>					
									<p><b>Meals : </b> Breakfast.</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">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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Highlights of Vietnam - 8 Days 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="85194"/>
						</form>
						</div>
						
						";i:1;s:74:"Book Highlights of Vietnam - 8 Days Tour - 7 Nights / 8 Days Tour Packages";i:2;s:128:"book highlights of vietnam - 8 days tour - 7 nights / 8 days tour packages, valley tour packages, ho chi minh city tour packages";i:3;s:158:"RAJAS TRAVELS offers Highlights of Vietnam - 8 Days Tour - 7 Nights / 8 Days tour package, budget Valley tour packages for Ho Chi Minh City at exciting price.";i:4;s:423:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Ho Chi Minh City"        
		                 },
		      "description": "",
		      "name": "Highlights of Vietnam - 8 Days Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}