a:6:{i:0;s:10497:"				<div class="h1"><h1>5 Days Trip To Kashmir</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.excellworldholidays.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>5 Days Trip To Kashmir</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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Anantnag, Baramulla, Ganderbal</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.excellworldholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="5 Days Trip To Kashmir - 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="89194"/>
						</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_1/27643/154916.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/27643/154916.jpg"  width="150" height="150"    alt="5 Days Trip To Kashmir" title="5 Days Trip To Kashmir" /></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 in Srinagar
								</p>
								<p class="aj">On your arrival in Srinagar Airport/ Railway Station, meet our tour representative and get assisted transfer to a pre-booked hotel. Check in and relax. On the banks of Jhelum River, amid the blotches of colorful flowers, you can find Srinagar, the summer capital of Kashmir. Dry fruits, Kashmiri handicrafts, shikaras and wooden mosques are a few things that make Srinagar nothing less than a paradise. Vast stretch of Himalayas prettifies Srinagar even more. The area is home to an expansive biodiversity.<br />
<br />
In the evening, you are free to take a shikara ride in Dal Lake or take a stroll in Chashmi-e Shahi (The Royal Spring), Shalimar Bagh (Abode of love) and Nishat (The Garden of pleasure). Second largest lake of Kashmir, Dal Lake is very popular in India and beyond. Its banks are lined with blooming garden of the Mughal era, hotels, hamlets etc. Himalayas on the backdrop and gurgles of this lake houseboat-cruising an unforgettable affair.<br />
<br />
Shalimar Bagh, Nishat Bagh and Chashme Shahi are located in Mughal Garden. Nishat Park, the second largest garden of Kashmir valley, has 12 terraces with spectacular details. Chashme Shahi is decorated with Iranian theme and the design is inspired from Persian gardens. The spring flowing down in terraces is a special feature of this park. This spring is divided into three parts; waterfall, aqueduct and waterfall. 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 2:</b> Srinagar - Sonamarg
								</p>
								<p class="aj">On this beautiful day prepare for a drive to Sonmarg, which literally means Meadow of Gold.  On reaching check in at your pre-booked hotel and relax. The town is located at an altitude of 2800 meters and overlooks popular peaks and glaciers like Amarnath Peak, Kaolhoi Glacier, Machoi Peak and Sirbal Peak. Azure Nallah Sidh River meanders through the town, making it look even prettier.<br />
<br />
A pony ride offers an incredible experience if you want to explore. Hire a horse or pony to reach Thajiwas Glacier that is carpeted with snow all year round.  Indulge in fun activities with your loved ones here. Do not miss clicking memorable photographs capturing the mesmerizing scenery. The climate of Sonamarg is always pleasant, be it in summers or in winters. Stay overnight 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 3:</b> Sonamarg - Gulmarg
								</p>
								<p class="aj">On your third day of the trip, proceed to Gulmarg. Gulmarg literally means Meadow of Flowers, and this town stands up to its name. It is perched at an altitude of 2730 meters. CNN regarded Gulmarg as “Heartland of Winter Sports of India” and rated it as Asia’s Seventh Best Ski Destination. Whether in summers or winters, the town is a year-round magnet for tourists around the world. Several movies have been shot in this beautiful town, like Jab Tak Hain Jaan, Bobby, Highway, Yeh Jawani Hai Deewani and Haider, among others.<br />
<br />
Here you can enjoy a ropeway ride to Khilanmarg or a pony ride. The Gulmarg Gondola is the highest and longest cable car ropeway of Asia and one of the best experiences in Kashmir. This cable car ride is divided into 2 stages and takes you to and from Kongdoori Mountain, which is close to Apharwat Peak. The views from the top are stunning. There are various other adventure activities awaiting you, like rock climbing, skiing and trekking. You can try your hands in golfing at one of the world’s highest golf courses here, with 18 holes. You can partake in the activities of your interest. Return to your hotel by evening and stay overnight.</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> Gulmarg - Pahalgam
								</p>
								<p class="aj">In the morning, prepare for Pahalgam. On the banks of Lidder River, Pahalgam is a popular hill-station in valley. Trekkers and nature-lovers find this town to be a pure delight. In fact, many trekking circuits are started from Pahalgam. About ninety percent of its total area is covered with forests and rich vegetation. Enjoy relaxing on the river banks or taking short treks. If you in for some adventure, you can partake in River rafting in River Lidder. Angling is another interest activity offered here.<br />
<br />
Pahalgam is also close to a number of attractions such as Avantipur ruins, Anantnag, Betaab Valley and more. In the evening, you can also indulge in shopping getting your hands on superb souvenirs such as woolens, Pashmina shawls, wooden objects, handicrafts and more. After this, return to your room and stay overnight.</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> Pahalgam - Srinagar
								</p>
								<p class="aj">Have your breakfast and check out from your hotel. Get assisted transfer to Srinagar Airport/ Railway Station, for your onward journey.</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>
															</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.excellworldholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="5 Days Trip To Kashmir - 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="89194"/>
						</form>
						</div>
						
						";i:1;s:61:"Book 5 Days Trip To Kashmir - 4 Nights / 5 Days Tour Packages";i:2;s:145:"book 5 days trip to kashmir - 4 nights / 5 days tour packages, hill station tour packages, srinagar, anantnag, baramulla, ganderbal tour packages";i:3;s:197:"Book 5 Days Trip To Kashmir - 4 Nights / 5 Days tour packages from Excellworld Holidays - Get attractive 4 Nights / 5 Days Hill Station  tour packages for  Srinagar, Anantnag, Baramulla, Ganderbal.";i:4;s:434:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Anantnag, Baramulla, Ganderbal"        
		                 },
		      "description": "",
		      "name": "5 Days Trip To Kashmir",
		      "telephone": "+91-9881120349"
		    }
		    </script>
			";i:5;N;}