a:6:{i:0;s:14388:"				<div class="h1"><h1>7 Days Holiday in Andaman Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.wenstravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.wenstravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>7 Days Holiday in Andaman 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 16500 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.wenstravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="7 Days Holiday in Andaman 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="52502"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_9/267703/102835.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/267703/102835.jpg"  width="150" height="150"    alt="7 Days Holiday in Andaman Tour" title="7 Days Holiday in Andaman Tour" /></a></p></div></li>
																		<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_9/267703/103322.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/267703/103322.jpg"  width="150" height="150"    alt="7 Days Holiday in Andaman Tour" title="7 Days Holiday in Andaman Tour" /></a></p></div></li>
																		<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_9/267703/103323.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/267703/103323.jpg"  width="150" height="150"    alt="7 Days Holiday in Andaman Tour" title="7 Days Holiday in Andaman 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> Port Blair (Arrival)
								</p>
								<p class="aj">Following your arrival at the Port Blair Airport, also known as Veer Savarkar Airport, a Yatra representative will meet you and assist you to board the designated vehicle. The capital city of Andaman and Nicobar Islands, Port Blair is famous for its pristine natural beauty and serene environment. The city offers fabulous views of coconut and palm trees, azure blue water and gleaming sand. It is one of the major tourist places in India.<br />
<br />
Thereafter, check in to the hotel and retire for some time. In the afternoon, head towards the Corbyn’s Cove Beach, a beautiful beach situated at a distance of 7 kilometers from Port Blair City. Glittering blue sea-water, glimmering white sand, coconut & palm trees and abundant greenery will attract you to feel the beauty of nature. Besides, you can partake in several natural activities such as surfing, scuba diving and boating.<br />
<br />
Thereafter, you can visit the famous Cellular Jail in Port Blair. This jail has played a pivotal role in the history of the glorious freedom struggle of India. Entirely made up of individual cells, Cellular Jail will remind you of the intolerable tortures and pain suffered by the freedom fighters imprisoned here. This place is a memorial of those courageous martyrs. You can also see the glimpses of Indian freedom struggle through the Sound and Light Show organized every evening in Cellular Jail.<br />
<br />
Once you’ve explored the attractions in Port Blair, return back to the hotel and retire for the day. Stay overnight 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> Cruise from Port Blair to Havelock (54 km approx.)
								</p>
								<p class="aj">In the morning, following a sumptuous breakfast, check out of the hotel and head straight towards Havelock, situated 54 kilometers away from Port Blair. The breathtaking views of beaches scattered by palm trees and coral reefs, azure blue water and amazing resorts in this island attract tourists from all over the world. Upon your arrival at Havelock, check in at the hotel and relax for some time.<br />
<br />
Pay a visit to the famous Radhanagar Beach in the afternoon. This beach is not only the finest beach in India but also it has been honored as ‘Asia’s Best Beach’ by the famous ‘Time Magazine’. The blue water, peaceful environment and white sand offer an overwhelming look to this beach. Here you can enjoy sun basking and stroll in the soft sand. Also, guests can partake in various adventure sports such as scuba diving, game fishing, swimming and snorkeling etc.<br />
<br />
Post spending quality time at the beach, return back to the hotel and take rest. Stay overnight 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 3:</b> Sightseeing in Havelock
								</p>
								<p class="aj">Post breakfast in the morning, check out of the hotel. Embark on an adventurous trip to the Ocean Pearl Dive Centre.<br />
<br />
This centre is a PADI resort where certified and experienced professionals train the tourists for snorkeling and scuba diving. Here you can participate and pay in a training class and go for scuba diving. Other water sports that you can partake in include snorkeling on sea water and get a chance to watch the exotic marine life. Here you’ll get to see some rare species of fishes and corals while snorkeling. You should not forget to carry an extra pair of clothes, snacks, footwear and a bottle of drinking water before going for snorkeling.<br />
<br />
Following an enchanting trip, return back to the hotel and take rest.  Here you must take a shower to refresh yourself. Stay overnight 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 4:</b> Sightseeing in Havelock Cruise from Havelock to Port Blair
								</p>
								<p class="aj">Early morning, after a luscious breakfast, enjoy your time at leisure. You have ample options to do such as watch television and listen to music. Besides, you can marvel at the pristine beauty of the surroundings and notice that the Havelock Island rests like a paradise in the sea. Later, check out of the hotel. Embark on a road trip to the Kala Pathar Beach, located near the Kala Pathar Village. The black rocks, green water and attractive vistas make this beach a wonderful place to visit. Here you will also see magnificent dive centers and resorts in this region.<br />
<br />
Following a memorable day at Kala Pathar, return to the hotel and take rest. After the sunset, take your luggage and board the cruise. Cruise back to the Port Blair and check-in at the hotel. Have a nice sleep in the night.</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> Sightseeing in Port Blair
								</p>
								<p class="aj">Early morning, after breakfast, check out from the hotel. Later, embark on a sightseeing tour of Port Blair. Today, explore the renowned museums in the city such as Samudrika Museum, Fisheries Museum and Anthropological Museum.<br />
<br />
At the Fisheries Museum, you would explore around 350 species of marine life such as starfish, fishes and live corals. In the Anthropological Museum, the tribal culture of the region is displayed. Here you will see a huge collection of weapons, models, clothes, baskets, photographs and tribal boats etc.<br />
<br />
Also known as the Naval Marine Museum, Samudrika Museum is run and owned by the Indian Navy. Here you will see antique collections of corals and shells etc. The museum also displays the history, geography and culture of Andaman and Nicobar Islands. Later, enjoy a fantastic experience of discovering the Port Blair Museum and return back to the hotel for 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 6:</b> Port Blair (Sightseeing)
								</p>
								<p class="aj">After the sightseeing, return to the hotel and take rest. Enjoy a cosy overnight stay.<br />
<br />
In the morning, after a delicious breakfast, check out of the hotel. Later, move out to explore the tourist attractions in Port Blair. Later, move towards the North Bay, an enchanting island of Port Blair, and board a glass-bottomed boat cruise. While boating in the azure waters, you will see a perfect view of marine life.<br />
<br />
After a delightful experience of boating, proceed towards another fascinating spot-Ross Island. This island is adorned by the eye-catching views of the green surroundings. Ross Island was under the control of Indian Navy and features some ruins from history including a church and Chief Commissioner’s House. These historical assets are bounded by old trees and plants that date back to past centuries.<br />
<br />
Thereafter, board a streamer and proceed towards the famous Viper Island, named after the vessel ‘Viper’. It was believed that the ruins of the ship ‘Viper’ were abandoned in this island. Here you can enjoy a panoramic view of the beautiful surroundings and click photographs in this island.</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> Port Blair
								</p>
								<p class="aj">Early morning, taste the flavor of delicious breakfast and satiate you appetite. Later, check out from the hotel and drive to the Port Blair Airport. Thereafter, board the flight for onwards journey.</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>
															</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.wenstravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="7 Days Holiday in Andaman 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="52502"/>
						</form>
						</div>
						
						";i:1;s:69:"Book 7 Days Holiday in Andaman Tour - 6 Nights / 7 Days Tour Packages";i:2;s:128:"book 7 days holiday in andaman tour - 6 nights / 7 days tour packages, beach and islands tour packages, port blair tour packages";i:3;s:175:"Book 7 Days Holiday in Andaman Tour - 6 Nights / 7 Days tour packages from Sprasad Travels - Get attractive 6 Nights / 7 Days Beach and Islands  tour packages for  Port Blair.";i:4;s:412:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "",
		      "name": "7 Days Holiday in Andaman Tour",
		      "telephone": "+91-9439123510"
		    }
		    </script>
			";i:5;N;}