a:6:{i:0;s:9951:"				<div class="h1"><h1>Darjeeling Gangtok Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sriganpatitoursandholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sriganpatitoursandholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Darjeeling Gangtok Tour</p>
				<br />
				
									<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>
					
					<table class="w100 formTable imgWidth">
					<tr>
					
											<td class="p10px vat imgWidth150 w150px">
						<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_2/30889/168566.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/30889/168566.jpg"  width="150" height="150"    alt="Darjeeling Gangtok Tour" title="Darjeeling Gangtok Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											
					<td class="p10px">
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Gangtok, Darjeeling</p>
												<p><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
											</td>
					</tr>
					</table>
										<br />
					
					<div class="packageTabs myTabs horizontal mc"><!--MY TABS STARTS-->
					<ul class="fo lsn m0px p0px">
					
											<li id="tab2"><a href="#data2">Itinerary</a></li>
												<li id="tab4"><a href="#data4">Tour Detail</a></li>
												<li id="tab6"><a href="#data6">Terms &amp; Conditions</a></li>
											</ul>
					
					
											<div class="ic bdr" id="data2"><!--DATA2 START-->
						<br />
						<ul class="lsn m0px p0px">
									<li>
									<p class="b mb5px">Day 1: Arrival
									</p>
									<div class="data p10px">On arrival at New Jalpaiguri Railway Station (70.3 km) / Bagdogra Airport (65.3 km) / Tenzing Norgay Bus Stand (61.9 km), meet our representative who assists you while you take a transfer to Darjeeling.<br />
<br />
Set at an elevation of 2050 m, Darjeeling is a beautiful hill town in West Bengal, popular for its tea plantations. Home to Darjeeling Himalayan Railway, a UNESCO World Heritage Site, this tranquil town makes every visitor experience spectacular views of the Majestic Himalayas. The pleasing weather and soothing ambience of the place promises to leave every visitor mesmerized.<br />
<br />
On reaching, check-in to the hotel. Step out to explore the Mall or shopping area of Darjeeling in the evening. Later, come back to the hotel for overnight stay.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 2: Darjeeling
									</p>
									<div class="data p10px">Wake up early this morning and start driving towards the famous Tiger Hill (11 km) to experience a sunrise like never before. As you pass through, thick forests of oak and magnolia, get ready to enjoy a sunrise over Kangchenjunga Peak (subject to clear weather). Tiger Hill is famous to offer a panoramic view of Mount Everest and Mount Kanchenjunga together. As the first rays of the sun hit the place, you get to see the twin peaks of Kanchenjunga painted in shades of pink and orange.<br />
<br />
After enjoying this breathtaking sunrise, head back to Darjeeling. En-route, visit Ghoom Monastery, War memorial and Batasia Loop. An age old monastery, Ghoom Monastery is known for its spiritual ambience, beautiful thangkas and alluring surroundings. The monastery holds much importance for Buddhists as it preserves some of the rare Buddhist manuscripts. Batasia Loop is the perfect host to Darjeeling Himalayan toy train, which passes through the place in a loop-like pattern. Near Batasia loop, there is a war memorial dedicated to the brave soldiers who lost their lives for the country during wars and operations after independence.<br />
<br />
On reaching the hotel, have your breakfast and go for your next round of sightseeing. Start with a visit to Padmaja Naidu Zoological Park, which is well-known for its exotic flora and fauna. Visit Peace Pagoda, another major tourist attraction of Darjeeling. The place is believed to be a symbol of peace and spirituality. There is a Buddhist temple and monastery located near Peace pagoda. Done up in traditional Japanese style, they offer a serene ambience to meditate.<br />
<br />
With that spirit of mountaineering, you really can’t miss visiting the famous Himalayan Mountaineering Institute (Closed on Thursday). Enjoy the beautiful views of the tea plantations and snow-capped peaks with a Cable Ride that takes you to the beautiful Rangit Valley from Darjeeling. Explore the true beauty of Darjeeling, which lies in its Tea Estates and pick the best tea for yourself. Also, visit attractions like Tensing Gumpo Rock, Tibetan Refugee Self Help Center (Closed on Sunday) and Natural History Museum (Sunday Closed).<br />
<br />
Head back to the hotel and enjoy a stroll around the mall in the evening. Stay overnight at the hotel</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 3: Gangtok
									</p>
									<div class="data p10px">Munch some healthy breakfast in the morning and then take a transfer to Gangtok, located at a distance of 96 km from Darjeeling.<br />
<br />
A well-known Buddhist pilgrimage site, Gangtok is nestled amid the high peaks of the Himalayas. Set at an elevation of 1600m, the place allures tourists from all over the world to explore its untouched beauty. Lakes, gardens, monasteries, Gangtok has something for every tourist. Gangtok experiences pleasant weather all throughout the year, this is why, people throng the place to enjoy some time amid natural beauty all through the year.<br />
<br />
On reaching, check-in to the hotel and go for sightseeing at major tourist attractions of Gangtok. Do Drul Chorten Stupa is one of the most important Stupas in Sikkim. The stupa features intricate architecture which leaves every visitor mesmerized.<br />
<br />
Set on a scenic hill above Gangtok, Enchey Monastery is one of the major attractions of Gangtok. It is believed that the monastery belongs to the Nyingma order of Vajrayana Buddhism. The location where the monastery is located is believed to be blessed by Lama Drupthob Karpo, who was an expert in tantric art of Buddhism. Enchey Monastery is beautifully decorated and features alluring images of the deities Buddha, Loki Sharia, and Guru Padmasambhava. One can find a number of masks in the monastery which are used during the annual religious dances. Do visit other attractions like Directorate of Handicrafts & Handloom, Research Institute of Tibetology, White Hall and Flower Show. Later, return back to the hotel. Enjoy the evening at leisure. Stay overnight at the hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 4: Tsomgo Lake & Baba Mandir
									</p>
									<div class="data p10px">This morning, after having your breakfast, leave for your excursion to Tsomgo Lake (38.5 km) and Baba Mandir (54.6 km).<br />
<br />
A tranquil and scenic lake, Tsomgo Lake is one of the most popular attractions of Gangtok. Set at an elevation of 3780 m, this glacial lake is considered holy by Sikkimese people. There is a temple dedicated to Lord Shiva, located on the banks of the lake. The place is a paradise for bird watchers as get to spot a number of Brahmini ducks and migratory birds near the lake.<br />
<br />
Located at a distance of around 16 km from Tsomgo Lake is Baba Mandir. A popular pilgrim center, Baba Mandir is believed to possess wish fulfilling powers. The shrine is built in the memory of Baba Harbhajan Singh, who was an Indian Army soldier and lost his life near Nathula Pass. It is believed that he is still ‘on duty’ for the Indian Army and he guards the lives of soldiers posted on the India- China border.<br />
<br />
You have an option of visiting Nathula Pass, which is located 20 km from the shrine. Later, head back to Gangtok. In the evening, go for a stroll around the Mall road or any of the local shopping centers. Stay overnight at the hotel.</div>					
									</li>
									<br />
									<li>
									<p class="b mb5px">Day 5: Departure
									</p>
									<div class="data p10px">Have some delicious breakfast and then leave for Siliguri / New Jalpaiguri Railway Station (119 km) / Bagdogra Airport (126 km) / Tenzing Norgay Bus Stand (113 km). On reaching, carry on with your onward journey.</div>					
									</li>
									<br />					
							</ul>						<!--DATA2 EMD--></div>
											
						<div class="ic bdr" id="data4"><!--DATA4 START-->
						<br />
													<p class="b mb5px dif">Inclusions :</p>
							<ul>
																	<li>Hotel</li>
																				<li>Sightseeing</li>
																	</ul>
							<br />
													<!--DATA4 EMD--></div>
												<div class="ic bdr" id="data6"><!--DATA6 START-->
						<br />
						* 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. ~^#^~						<!--DATA6 EMD--></div>
											
					<!--MY TABS END--></div>
					";i:1;s:62:"Book Darjeeling Gangtok Tour - 4 Nights / 5 Days Tour Packages";i:2;s:119:"book darjeeling gangtok tour - 4 nights / 5 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:165:"Sri Ganapati Tours & Holidays offers Darjeeling Gangtok Tour - 4 Nights / 5 Days tour package, budget Valley tour packages for Gangtok, Darjeeling at exciting price.";i:4;s:414:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Darjeeling Gangtok Tour",
		      "telephone": "+91-8974893345"
		    }
		    </script>
			";i:5;N;}