a:6:{i:0;s:19366:"				<div class="h1"><h1>Darjeeling - Kalimpong - Gangtok Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.northerntourandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.northerntourandtravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Darjeeling - Kalimpong - 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, Kalimpong</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.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling - Kalimpong - 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="51656"/>
						</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_12/334611/101818.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/334611/101818.jpg"  width="150" height="150"    alt="Darjeeling - Kalimpong - Gangtok Tour" title="Darjeeling - Kalimpong - 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> Arrival at Gangtok
								</p>
								<p class="aj">On your arrival at Bagdodra airport/ Jalpaiguri railway station, meet our tour representative and get escorted to pre-booked hotel in Gangtok.<br />
<br />
Revered as the ‘land of monasteries, Gangtok is one of the top tourist destinations to visit in India. The city boasts of number of iconic monasteries, educational institutions, striking valleys and wonderful sanctuaries. With its breathtaking attractions, Gangtok allures travelers from all parts of India and across the globe. The place has much to offer when it comes to attractions.<br />
<br />
You may visit Rumtek Monastery; largest Gompa in Sikkim, Saramsa Garden (a beautiful garden where you can see number of fruits and flowers planted), Fambong La Wildlife Sanctuary (wonderful sanctuary famous for varied flora and fauna) and Yumthang valley (the valley is home to Shingba Rhododendron Sanctuary where there are 24 species of Rhododendron).<br />
<br />
Overnight stay 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> Excursion to Tsomgo Lake (38 km/ around an hour drive)
								</p>
								<p class="aj">After breakfast, proceed for short trip to Tsomgo Lake; one of the most popular tourist spots settled at an attitude up to 12, 400ft. The lake receives its water from the melting of snows of the mountains. The lake holds great religious importance among locals. Legends say that, Buddhist monks in earlier times predicted the future after the study of color of water.<br />
<br />
You may also indulge in wonderful yak and mule ride along the lake and adore the spectacular surrounding. There is also a Lord Shiva temple near the lake where you can offer sincere prayers to seek the blessings of the Lord.<br />
<br />
Next you head to Baba mandir which is another major tourist attraction in Gangtok. The holy shrine is placed at an altitude up to 1300ft. and is just few kilometers away from Tsomgo Lake.<br />
<br />
Locals here claim that the temple was put up in the memory of Baba Harbhajan Singh (a soldier). In fact, the temple is also referred to as Baba Harbhajan Singh temple.<br />
<br />
With some good, memories return back to hotel. Rest of the day you can either shop at the lively bazaars of Gangtok or just loosen up in the hotel room.<br />
<br />
Wel, if you are in Gangtok, shopping becomes a must-do thing. The best-buys of the place are handicrafts, locally made artifacts, Tibetan carpets, shimmering jewelries, Sikkim tea, alpine cheese, black cardamom and other traditional outfits.<br />
Overnight stay 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> Gangtok local sightseeing (half day) - get transferred to Kalimpong (77Km, around one and a half dri
								</p>
								<p class="aj">On day, have breakfast and embark on a half-day sightseeing tour to Gangtok and later in the evening proceed to Kalimpong.<br />
<br />
During your Gangtok tour, you visit Directorate of handicraft hand looms Emporium; one among the few best places to shop in state Sikkim. Boasting of traditional motifs, Tibetan carpets and other excellent handicrafts including Thankas, Choksee and locally made furniture, the center was put up with an objective behind, to preserve and propagate the brilliant artifacts of local artisans. All the stuff you get here is unique and under your budget.<br />
<br />
Next you visit Research Institute of Tibetlogy which initially was referred to as Namgyal Institute of Tibetology; one of the most important places in Gangtok that deserves your visit where you get to discover about the very culture, spirit and essence of land. Built in Sikkimese styles of architecture, the research institute constitutes of a library with massive collection of Tibetan works popular all around the world and a museum of Tibetan Iconography and religious art.<br />
<br />
In today’s time, the institute is known worldwide and has become a great place to hold series of lectures and International conferences on Tibetan and Buddhist studies.<br />
<br />
Further, visit Do Drul Chorten which is one of the most important and magnificent stupas in Sikkim holding Kangyur relics (holy books) and other religious objects. The stupa is situated on a hill and is pious enough among Buddhists. The chief attraction of the stupa is the golden top dome and the 108 prayer wheels around the stupa. Prayers are offered by turning the wheel and chanting the mantra ‘Om Mane Padmane Hum’ inscribed on the wheels. The stupa was made under the supervision of Trulshik Rinpoche, the head of Nyingma sect of Tibetan Buddhism.<br />
<br />
Then we take you to the must-visit monastery in Gangtok, Sikkim, Enchey monastery; an important seat of the Nyingmapa order of Vajrayana school of Buddhism. Surrounded by tall pine trees, the iconic monastery is a two storey building boasting of shells which are regarded auspicious Buddhist symbols and several murals representing the protective deity and wheel of law on the porch.<br />
<br />
Thereafter, explore White hall; historically significant building, erected in British styles. The hall comprises of an officer’s club and a badminton court. Also, visit the Flower Exhibition Center; a wonderland for plant lovers. With rich display of greenery and colorful flowers, the center also holds Sikkim Flower Show where visitors get to see beautiful orchids.<br />
<br />
After travelling in and around Gangtok, straight away travel to Kalimpong. Situated on a ridge, overlooking Teesta River, Kalimpong is rich in terms of horticulture. From notable Buddhist monasteries to sanctified spots, Kalimpong has a lot to keep you engaged. It is a perfect place for history buffs.<br />
<br />
Upon reaching Kalimpong, check-in at a hotel and settle down. Rest of the evening is at leisure or you can also roam around the attractive nurseries and local markets which are full with paintings, statues, thankas and items made from bone.<br />
Overnight stay 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> Kalimpong Sightseeing (half day) - get transferred to Darjeeling (48km, around 2 hours drive)
								</p>
								<p class="aj">Fourth day is set out to explore Kalimpong. After breakfast, leave the hotel and drive through scenic road to Deolo hill; listed among the important places of interest to visit in Kalimpong. Deolo hill is one of the two hills in between which the town Kalimpong is setup. Scale the highest point of the region, Deolo hill, up to 1704m above the sea level. From the top, relish the enchanting views of Teesta River, Relli valley and gorgeous surrounding.<br />
<br />
Then you head to Hanuman mandir; a big statue of Lord Hanuman on a hill. It is a great place for Hanuman devotees. Afterwards, visit the popular school of the town, Dr. Graham’s homes (school). The school was opened with a motive to educate the children of tea workers and other poor kids. The Graham’s home is also a well-known shooting spot.<br />
<br />
Later, proceed to some important tourist spots in Kalimpong including- Durbin Monastery which is placed on the Durbin Dara Hill. The star attraction of the monastery is two large cylinders around 10ft high, on two sides. On turning the cylinders by a crank, the lever is so arranged that a bell would prompt on every turn. You also get to see prayer wheels on outside walls of the monastery; Manghal Dham, which a shrine cum a prayer hall. Dedicated to Lord Krishna the temple was raised by Shri Krishna Pranami in the memory of Guru Sri 108 Mangaldasji. The temple houses the statues of Prannath, Raj Shyamji and Mangaldasji.<br />
<br />
The divine Mangal Dham works on the principles to help the schools, orphanages and whosoever in need; and Pine view nurseries which presents you a breathtaking and largest collection of cactus in whole Asia. The variety would make you wonder about cactus as a possibility in North Eastern locations too, apart from desert areas.<br />
<br />
Later on, get transferred to Darjeeling.<br />
<br />
Renowned as the ‘Queen of hills’, Darjeeling is an important tourist destination to visit in the state of West Bengal. The marvelous hill station is set up at an elevation of 7100ft with mountains and valleys all around and is best-known for salubrious weather, natural beauty, tea farms, monasteries, lakes, museums and a whole lot. The awe-inspiring views of Kanchenjunga, (the third highest mountain peak in the world) would totally leave you awestruck.<br />
<br />
Darjeeling is also home to the famous World Heritage Train- Darjeeling Himalayan Railway; a thin gauge course connecting Darjeeling and Siliguri. Popular as the Darjeeling Toy train, the train started its operation in around 1881 and is one of the few hill railways operating in India. The train passes through some rolling hills, green jungles and tea farms of Darjeeling.<br />
<br />
On your arrival at Darjeeling, check-in at a hotel and relax. Further, in the evening you are free to walk around the local markets. Some of the unique buys of Darjeeling that shouldn’t be missed during your visit include variety of teas, amazing kitchen wares, brass statues, woven fabrics and shinning jewelries.<br />
<br />
Overnight stay in the Darjeeling.</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> Darjeeling local Sightseeing (half day)
								</p>
								<p class="aj">Today early morning get ready for some thrilling drive to Tiger Hill; at a height up to 8,500 ft. (On a clear day), cherish the mesmerizing natural beauty of the hill, the lush green jungles and the tranquil ambience. Usually, it is noted that, visitors stopover this hill to relish the wonderful sunrise. The ultimate view of golden sunrays falling over the snow covered Himalayan ranges would surely leave you awestruck.<br />
<br />
From Tiger hill you can have a perfect view of Kanchenjunga, the third highest peak in the world. In case you are lucky, you may also get to see the world’s highest peak, Mount Everest.<br />
<br />
Thereafter, on the way back to hotel room, visit the Ghoom monastery-built by Lama Sherpa Gyaltsho, the monastery belongs to Gelugpa (yellow hat) Sect. The monastery is highly revered among Buddhists and is storehouse to several Buddhist manuscripts. The highlights of the monastery are thangkas on the walls and around 4.57m high statue of Maithreya Buddha. The serenity of the place would surely provide you great peace and power; and then proceed to Batasia Loop and War Memorial. Situated inside Batasia Loop- a scenic garden, War Memorial is a tribute to Gorkha soldiers of Darjeeling who sacrificed their life in the battle. Inaugurated in 1995, the memorial holds an elevated platform where there is a statue of a soldier paying respect and a Cenotaph.<br />
<br />
The loop offers amazing views of Kanchenjunga and picturesque surrounding from toy train (route from Ghum and Darjeeling).<br />
<br />
Getting back to hotel for breakfast and relax for some time. After breakfast, get ready for a half day tour to Darjeeling.<br />
<br />
Begin with Padmaja Naidu Zoological Park which is famed for some rarely seen species including Red Panda, Siberian Tiger, Tibetan Wolf, Black Bear and Snow Leopard. Located at a height up to 2133m, Padmaja Naidu is one of famous and highest Zoo in India. The main idea behind the formation of the park was to conserve the endangered species of fauna. The park has an amazing scenic beauty of lush jungles.<br />
<br />
Then we take you to Himalayan Mountaineering Institute (closed on Thursday)- an institute basically put up to encourage today’s generation students to improve participation in exciting sports like mountaineering; Passenger Rope way- one of the finest ways to adore the beautiful Darjeeling . It is India’s first Passenger Ropeway starting from Singamari. The route to Darjeeling and Singla Bazaar feels even better when you experience the ride.<br />
<br />
From the Cable Car, one can truly sense enchanting tea farms, breathtaking valley, waterfalls and the River Ranjeet and Ramman. Moreover, you can also have the splendid views of Eastern Himalayan Range and the snow covered peaks of Kanchenjunga; Tenzing and Gombu Rock Darjeeling- two big natural rocks set opposite to each other. Named after Tenzing Norway is the Tenzing rock and Gombu rock named after Nawang Gombu. Both the rocks are training locations for Himalayan Mountaineering Institute students; Tibetan Refugee Self Help Center-a perfect place to explore Tibetan Culture through the artifacts, wooden carvings, photographs, carpets, leather work and much more put into exhibition and on sale; Tea Estate- producing variety in teas, tea estates in Darjeeling are famous for their well-maintained farms where you can see different flavors, taste and aroma of teas (Sunday closed); Peace Pogoda- a Buddhist Stupa/ monument specially put up to maintain peace and unite people of all religion and caste. Constructed under the guidance of a Buddhist monk, Nichidastu Fuji, the Stupa stands for world peace.<br />
<br />
Return back to 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> Departure
								</p>
								<p class="aj">Departure.</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.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling - Kalimpong - 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="51656"/>
						</form>
						</div>
						
						";i:1;s:76:"Book Darjeeling - Kalimpong - Gangtok Tour - 5 Nights / 6 Days Tour Packages";i:2;s:144:"book darjeeling - kalimpong - gangtok tour - 5 nights / 6 days tour packages, valley tour packages, gangtok, darjeeling, kalimpong tour packages";i:3;s:190:"A.G Northern Tour and Travels offers Darjeeling - Kalimpong - Gangtok Tour - 5 Nights / 6 Days tour package, budget Valley tour packages for Gangtok, Darjeeling, Kalimpong at exciting price.";i:4;s:439:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Kalimpong"        
		                 },
		      "description": "",
		      "name": "Darjeeling - Kalimpong - Gangtok Tour",
		      "telephone": "+91-9086002323"
		    }
		    </script>
			";i:5;N;}