a:6:{i:0;s:16643:"				<div class="h1"><h1>Gangtok Kalimpong Darjeeling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kunzongtourandtravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kunzongtourandtravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Gangtok Kalimpong Darjeeling 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">
						7 Nights / 8 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.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Gangtok Kalimpong Darjeeling 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="75846"/>
						</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/451899/134879.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/451899/134879.jpg"  width="150" height="150"    alt="Gangtok Kalimpong Darjeeling Tour" title="Gangtok Kalimpong Darjeeling 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> New Jalpaiguri Station/ Bagdogra Airport- Gangtok (2 hours)
								</p>
								<p class="aj">New Jalpaiguri Station/ Bagdogra Airport- Gangtok (2 hours)</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> Gangtok
								</p>
								<p class="aj">Have your breakfast and proceed for Gangtok sightseeing. Attractions to be visited today are Directorate of Handicrafts and Handlooms, Rumtek Monastery, Chorten, Botanical Garden, Research Institute of Tibetology and View Point.<br />
<br />
Directorate of Handicrafts and Handlooms showcases incredible work of art by local artisans. Thanka paintings, handlooms, carpets, cane and bamboo works, wooden carved and painted items, wooden masks, multi-craft items, traditional hats and caps, embroidered products and stuffed dolls are some of the artworks presented here for sale. Directorate of Handicrafts and Handlooms is a major attraction of Gangtok.<br />
<br />
Rumtek Monastery or Dharmchakra Centre is an important Buddhist religious spot and the largest monastery of Sikkim state. It was built in mid 18th century and served as a seat for Karma Kargyu lineage. By 1959, the monastery fell into ruins and but was rebuilt by Karmapa. Maroon and gold hues are generously added to the monastery, which is a Tibetan insignia.<br />
<br />
Chorten or Do Drul Chorten is an eye-catching stupa built in 1945, by Trulshik Rinpoche. The sacred spot also has 108 prayer wheels or Mani Lhakor, Chorten Lakahang and statues of Guru Rinpoche (Guru Padmasambhava). Pilgrims from different regions around the world visit this stupa to offer homage.<br />
<br />
Jawaharlal Nehru Botanical Garden is thick green locale, located near Rumtek Monastery. The garden consists of more than 50 varieties of tree species and a wide range of flowering plants too. For even more refreshing experience, take a stroll in the oak forest. Different orchids are grown in the huge greenhouse inside the garden. For children, there is a recreational area where they can enjoy merry-go-round, see-saw and other swings.<br />
<br />
Namgyal Institute of Tibetology is where you can find a peace of mind. The foundation of the building was laid in 1957 by 14th Dalai Lama and was inaugurated in 1959 by Pandit Jawaharlal Nehru, the then prime minister of India. Different projects are being worked on in the research institute like the one which seeks to record social history of about 60 monasteries of Sikkim. A visit to this institute gets the person to grab more knowledge about Tibet and Buddhism.<br />
<br />
Tashi View Point is a popular site of the Gangtok, from where you can get a splendid view of Kanchenjunga Peak (highest peak of Indian and third highest peak of the world) and the surrounding. Snow-clad peaks and clouds entwine to invent a hail-worthy aura. To spot peaks changing colors head to the peak before 5 am. You have to climb up the hill through steep flight of stairs to reach the semi-circular platform made for viewing.<br />
<br />
Overnight stay in hotel room.</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- Tsomgo Lake- Gangtok (40 km one side)
								</p>
								<p class="aj">After sumptuous breakfast in the hotel room you prepare for an excursion to Tsomgo Lake that makes people believe that nature can do wonders. This is a glacial lake perched at an elevation of 3780 meters. Indo-China Border is just a few kilometers away from here and so is Nathu La Pass. Trekkers consider this a treasure, as only nature surrounds it and no chaos of human inhabitation, just humungous hills, brahminy ducks, red pandas and other adorable species. A temple dedicated to Lord Shiva is also located on the lakeside. Tsomgo Lake literally means “source of lake” in local dialect (Bhutia). If you are visiting this spot during May and August, you can come across a mélange of colorful flowers, like rhododendrons, blue and yellow poppies.<br />
<br />
Return to your hotel room by evening and spend the rest of time at leisure. 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> Gangtok- Kalimpong (73 km- 1 ½ hour)
								</p>
								<p class="aj">Enjoy your breakfast and set for a drive to Kalimpong. Check in at your hotel room and relax till you leave for Kalimpong sightseeing, which includes Pine View Nurseries, Dr. Graham’s Homes School, Hanuman Mandir, Durpin Monastery, Deolo Hill and Mangaldham.<br />
<br />
Kalimpong is a town in West Bengal state, situated at an altitude of 1250 meters. The town is an important trade center of botany, more than 80 percent of India’s gladioli and other orchids are produced here. The town is home to Nepalis, Lepchas and other ethnic groups and migrants. Kalimpong acts as a center for Buddhism, its monastery Zang Dhok Palri Phodang houses Tibetan Buddhist scriptures that are rare. However the town is small, but a myriad of opportunities and sites please travelers to make a visit.<br />
<br />
Pine View Nursery provides a feast to the vision through its huge collection of cactus and flowering plants. The plants have been brought from north, south and central regions of America. Hanuman Temple is perched at the top of a hill, reachable through a flight of stairs. A Durga Temple is also located here; both the temples are popular and are revered by locals. Deolo Hill is an 8-acre rich grassland with manicured orchids, overlooking a spectacular view of Durpin Hil, Kalimpong town, rivulets, rivers and the largest peak of India, Kanchenjunga.<br />
<br />
Durpin Monastery or Zang Dog Palri Monastery is a significant Buddhist monastery of the town and was constructed in 1972 by Honable Dudjum Rimponche. Mangal Dham is a temple complex dedicated to Lord Krishna, built in remembrance of Guruji Mangal Dasji.<br />
<br />
Overnight stay in 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 5:</b> Kalimpong- Darjeeling (48 km- 1 hour 40 minutes)
								</p>
								<p class="aj">After breakfast check out from the hotel and drive to Darjeeling. The route to Kalimpong and Darjeeling is immensely enchanting and unforgettable. On arriving Darjeeling, check in at your hotel and relax. In the evening step out to take a stroll in Mall road or in local markets. Overnight stay in hotel.<br />
<br />
Darjeeling is known worldwide for its tea-gardens. A splendid expanse of tea-garden is seen strewn all over the hills. The town is located at an elevation of 7100 feet above sea level. Darjeeling Himalayan Railway is also worth a special mention; even UNESCO has considered it a World Heritage Site. During the British Raj, Darjeeling served as a summer capital. Beauty and serenity of this town are indeed unexplainable, and could only be felt. British adorned the town with structures of their own styles and today these structures add more touch to the town’s magnificence.</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> Darjeeling
								</p>
								<p class="aj">Early in the morning before sunset take a drive to Tiger Hill, at an altitude of 8000 feet. Tiger Hill lets you savor the sight of two of the highest peaks of the world, Mount Everest and Kanchenjunga. A peaceful view of the sunrise can be enjoyed from this point. The sun-rays first embrace the peaks of these two peaks and gradually spread throughout the panorama.<br />
<br />
When done with Tiger Hill, head to visit Ghoom Monastery, Peace Memorial and Batasia Loop.<br />
<br />
Ghoom Monastery is Tibetan Buddhism school, with a statue of Maitreya Buddha which is 15 feet high and catches the eye. The monastery was built in 1875 by Lama Sherab Gyatso. Images of Chenrezu and Chongapa (disciples of Buddha) are also placed in the monastery. Batasia Loop is a rich manicured garden where you can pay homage to the martyrs in War Memorial or spot Darjeeling Himalayan Train cooing and heading to its destination.<br />
<br />
After this, return to the hotel for breakfast. Refresh yourself and leave for second round of sightseeing which includes Peace Pagoda, Tensing Gumbo Rock, Tea Estate, Padmaja Naidu Zoological Park, Ropeway, Himalayan Mountaineering Institute (Closed on Thursday), Tibetan Refugee Self Help Center (Closed on Sunday), Natural History Museum (Sunday Closed).<br />
<br />
Peace Pagoda was built Nichidatsu Fujii in 1972, as a lesson of peace and spirituality. The monument stands up to its name and enables its visitors to attain tranquility and a connection with god. A lavish exposition of Tibetan culture is to be seen in Tibetan Refugee Self Help Center. Take a step closer to nature in Tea Estate, Padmaja Naidu Zoological Park and Natural History Museum. Adventure-seekers love to visit Himalayan Mountaineering Institute and Ropeway.<br />
<br />
Return to the hotel by late evening. 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 7:</b> Darjeeling-Mirik- Darjeeling (62 km- 1 ½ hour: one side)
								</p>
								<p class="aj">Have your breakfast and get ready for an excursion to Mirik. Drive past orange orchards, tea gardens, landscaped gardens, cardamom groves or stopover at scenic spots for photography or leisure.<br />
<br />
Mirik is perched at an elevation of 1495 meters above sea level. Almost everybody who visits Darjeeling makes it a point to not miss visiting Mirik too. Lakes, tea gardens, orchards and view points are few of the many things that attract huge number of tourists. Cruising aboard a shikara on Sumendu Lake is a soulful experience. Buddhist Meditation Center Bokar Monastery is recommended for peace-lovers and spiritual people. You may also take a stroll around orchids and tea gardens or just relax at different viewpoints and enjoy the sight.<br />
<br />
Return to Darjeeling by late evening and 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 8:</b> Darjeeling- Siliguri (1 ½ hour- 64 km)
								</p>
								<p class="aj">Have your breakfast and check out from the hotel. You get a timely transfer for your onward journey to New Jalpaiguri Railway Station (NJP) / Bagdogra Airport (IXB) / Tenzing Norgay Bus Stand (Junction). The journey ends here.</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.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Gangtok Kalimpong Darjeeling 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="75846"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Gangtok Kalimpong Darjeeling Tour - 7 Nights / 8 Days Tour Packages";i:2;s:140:"book gangtok kalimpong darjeeling tour - 7 nights / 8 days tour packages, valley tour packages, gangtok, darjeeling, kalimpong tour packages";i:3;s:196:"Book Gangtok Kalimpong Darjeeling Tour - 7 Nights / 8 Days tour packages from Kunzong Tours and Travel - Get attractive 7 Nights / 8 Days Valley  tour packages for  Gangtok, Darjeeling, Kalimpong.";i:4;s:435:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Kalimpong"        
		                 },
		      "description": "",
		      "name": "Gangtok Kalimpong Darjeeling Tour",
		      "telephone": "+91-9593716601"
		    }
		    </script>
			";i:5;N;}