a:6:{i:0;s:12382:"				<div class="h1"><h1>Darjeeling Gangtok Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.visiontourandtravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.visiontourandtravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Darjeeling Gangtok 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling</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.visiontourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling Gangtok 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="73572"/>
						</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_16/450636/131704.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/450636/131704.jpg"  width="150" height="150"    alt="Darjeeling Gangtok Tour" title="Darjeeling Gangtok 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> Arival in Darjeeling
								</p>
								<p class="aj">An  representative will receive you at the New Jalpaiguri Railway Station/Bagdogra airport. From here, our representative will be assisting in your further journey to Darjeeling, which is around 68 km away. Located at an average height of 6700 ft, Darjeeling is a beautiful hill station that is famous for its scenic Himalayan trenches and sprawling tea estates.<br />
<br />
Here you also have the luxury of exploring its breathtaking beauty on a vintage train, which is famous as toy train. After an hour and forty minutes, you would be entering the mesmerizing surroundings of Darjeeling. Make a Check in to the hotel, relax for a while. Rest of the day would be free, so you can spend it at leisure or choose to walk out to the local market or a shopping mall. 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 2:</b> Sightseeing in Darjeeling
								</p>
								<p class="aj">Start your day fresh with a mountain trip to Tiger Hill. Being the highest point of Darjeeling, Tiger Hill offers some of the best sights of the Himalayas, which are apt to be visited early in the morning. Imagine yourself standing infront of the mighty Kanchenjunga peak, the snow clad peaks of which are turning golden due to the rising sun. This panoramic view is the best introduction of Tiger Hill. In order to catch this breathtaking sight, leave early from your hotel. The magnificent hill is around 11 km from the town of Darjeeling.<br />
<br />
As you climb down the hill, you would be embarking on a visit to the incredible Ghoom monastery and Batasia Loop. One of the oldest Tibetan Buddhist monasteries in Darjeeling, Ghoom monastery is about 7 Km from the town and is famous for its huge statue of Lord Buddha. Post that, drive back to your hotel for a hearty breakfast. Rest of the day is scheduled for visiting major attractions inside the town.<br />
<br />
First on the list would be Himalayan Mountaineering Institute, followed by Lebong race course, Peace Pagoda, Tibetan Refugee Self Help Center, Tensing-Gumbo rock, ropeway and Parmesan Nadia Himalayan Zoological park, which houses the rare Snow leopard and Tibetan wolf. You also would be getting a chance to visit the lush green tea estates, which the town is so proud of. As you would be done with all the sightseeing, head back to the comfort of your hotel for an 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 3:</b> Drive to Gangtok
								</p>
								<p class="aj">Post breakfast, make a check out from your hotel and head to Gangtok, a mystical hill station in the Himalayas of the North-East. Located in the eastern Himalayan range, Gangtok has an amazing blend of nature and religion. Amidst dense forests and Himalayan peaks, lies the quaint hill station of Gangtok, which is dotted with several colorful monasteries.<br />
<br />
The drive to Gangtok takes around 2 hrs and 23 mins. Thus, you would be having ample time to relax in your hotel. You can even utilize time to explore the nearby attractions, which are at walking distance. This would be followed by an overnight stay in your hotel in Gangtok.</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 Gangtok
								</p>
								<p class="aj">Once you are done with the breakfast, the  tour representative will be guiding you to the sightseeing tour of Gangtok. With the maiden visit to Enchey and Rumtek monastery, Gangtok tour starts on a spiritual note. Both the Enchey and Rumtek are amongst the most significant of the monasteries located in Gangtok.<br />
<br />
The former is located at a distance of around 3 km from Gangtok. The legendary monastery is believed to be constructed 200 years back, and today it marks an important seat of Nyingma order of Tibetan Buddhism. On the contrary, Rumtek monastery is open to every kind of a Buddhist. Little older than Enchey, Rumtek monastery houses relics of the 16th Karmapa.<br />
<br />
Post that, you would be visiting the Research Institute of Tibetology, Directorate of Handicrafts and Handlooms, Chorten and Orchid sanctuary. By evening, you will be back in your hotel. Call it a day and spend the night at leisure.</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> Excursions from Gangtok
								</p>
								<p class="aj">Day 5 of our exclusive Darjeeling-Gangtok tour is dedicated to excursions from Gangtok. Under this, you would be heading towards the very popular Tsomgo lake and Baba Mandir. Tsomgo is a glacial lake, which is around 38 km from the town of Gangtok. Scaling the Gangtok-Nathula highway, which goes through rugged mountain terrains and cliffs, you would be reaching the beautiful Sikkimese lake. This will take around an hour.<br />
<br />
The lake is famous for its scenic and tranquil beauty which makes it a peaceful outing place. Besides its beauty, Tsomgo lake also holds a sacred status. Right on the banks, lies a temple of Lord Shiva, which adds to the divinity of the region. After spending a wonderful time at the breathtaking Tsomgo lake, you will start your journey to Baba Harbhajan Singh Mandir, which is located nearby. Unlike the other shrines in Sikkim, which are dedicated to some deity or religious concept, Baba Mandir commemorates an army martyr, Major Harbhajan Singh.<br />
<br />
The shrine has a lot of significance for the locals as well as the personnels of Indian army posted in the region. Major Harbhajan Singh was an Indian army officer as well as a saint. Army personnels believe that the spirit of him protects them in every situation and owing to this belief, they dedicated a shrine to him. The shrine is nestled at an altitude of around 4000 mtrs, high up in the hills.<br />
<br />
Post that, you would be driven back to your hotel for your overnight stay in Gangtok. Evenings would be free, so you can utilize the last of your moments in Gangtok, strolling around the nearby streets and market. MG road mall in the vicinity would be a nice option.</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> Journey back home
								</p>
								<p class="aj">Pack your bags and post breakfast, check out from the hotel and Gangtok. You would be transferred to the New Jalpaiguri railway station/Bagdogra airport for your journey back home. This marks the end of our Darjeeling-Gangtok tour.</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.visiontourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling Gangtok 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="73572"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Darjeeling Gangtok Tour - 5 Nights / 6 Days Tour Packages";i:2;s:119:"book darjeeling gangtok tour - 5 nights / 6 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:172:"Book Darjeeling Gangtok Tour - 5 Nights / 6 Days tour packages from Vision Tour & Travels - Get attractive 5 Nights / 6 Days Valley  tour packages for  Gangtok, Darjeeling.";i:4;s:424:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Darjeeling Gangtok Tour",
		      "telephone": "91-9987181732/8684821464"
		    }
		    </script>
			";i:5;N;}