a:6:{i:0;s:19344:"				<div class="h1"><h1>Darjeeling - Kalimpong - Gangtok 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>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.rajastravels.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="85245"/>
						</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_13/370602/149885.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/149885.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 />
<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 third 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 handlooms 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 />
<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 Ropeway- 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 Kachenjunga; 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.rajastravels.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="85245"/>
						</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:174:"RAJAS 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-9820123553"
		    }
		    </script>
			";i:5;N;}