a:6:{i:0;s:11125:"				<div class="h1"><h1>Kashmir  Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.highspiritadventures.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.highspiritadventures.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kashmir  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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Anantnag, Baramulla</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.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="118725"/>
						</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_15/445618/192506.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/445618/192506.jpg"  width="150" height="150"    alt="Kashmir  Tour" title="Kashmir  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 in Srinagar
								</p>
								<p class="aj">Arrive at the Srinagar Airport where you’ll meet our tour agent. He will assist you with an assisted transfer to Houseboat. Complete the check-in formalities and savor the welcome drink. After settling-in, begin the city jaunt of Srinagar. The catalog of attractions includes gardens of Srinagar- Mughal Gardens, Chashmi-e Shahi (The Royal Spring), Nishat Bagh (The Garden of delight) Shalimar Bagh (Abode of love).

Mughal Gardens – a well-maintained cluster of garden built in Charbaugh arrangement in Persian style, much-loved by the Mughal rulers. It features canals, fountains and pools. This garden was established by Emperor Babur and has contributions from his predecessors like Jehangir and Shah Jahan. Visited by tourists enormously, Mughal Garden is one of the renowned attractions in Kashmir. The garden is a grouping of three major gardens- namely the Nishat Bagh, Chashm-e-shahi and Shalimar Bagh. Nishat Bagh is a terraced Mughal garden that is the second prevalent Mughal garden in Kashmir. Resting on the eastern side of the Dal Lake, this garden has 12 terrace levels, with old chinars, rows of flowers and water channels with fountains. Shalimar Bagh was commissioned in 1619 by Mughal Emperor Jahangir for his spouse, Nur Jahanand, is a well-known as the highlight of Mughal horticulture. Chashm-e-shahi is the smallest of the 3 gardens here nut is a pre-eminent for its Royal Spring. There is a shelter space around the spring that is, to a certain extent, rich in iron and minerals.

The sundown is scheduled for a tremendous Shikara Ride in the notable Dal Lake. An activity not to be missed when in Srinagar, Shikara ride takes you to the length and breadth of the lake. Shikara is a small narrow boat that lets you cruise on the serene azure blue waters of the lake. There are floating markets selling Kashmiri specialties like dry fruits, woolen and Pashmina shawls. There various other Shikaras selling different knick-knacks, ice creams, fruits and vegetables. While cruising, don the local attire do and click beautiful photographs. There are even bigger Shikaras selling eatables like pakoras, Maggie and more.

Savor a delicious meal and stay overnight in the pre-booked lodge.</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 - Gulmarg - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, the day is scheduled for a trip to Gulmarg, a place that boasts of pristine charm in abundance. The place looks like heaven nestled amidst sky-kissing mountains and shrouded under a sheet of verdant milieu and colorful flowers. A visit to Gulmarg will surely be invigorating and memorable. It has been a vacation inn from the days of the British. The road from Srinagar to Gulmarg is adorned with charming white and purple flowers. Enjoy the scenery.

Shortly after reaching Gulmarg, get set to unwind the place and witness its attractions. The hill-town houses Asia’s highest and longest cable car project, the Gulmarg Gondola, the renowned thing to do here. This is two-level ropeway Cable car that carries around 600 people per hour, to and from Kongdoori massif, nearby Afarwat Peak (13,780 ft). Once you reach the top, give a visual retreat to your eyes to the alluring sights of the snow-capped Himalayas. You can also participate in hiking and horse riding to wander around the place. If you are visiting Gulmarg between December and April, take delight in Skiing as Gulmarg is one of the world’s outstanding skiing destinations. Try your hand at golfing at the highest golf course in the world with 18 holes.

Return to Srinagar by sundown. Overnight stay in the resort.</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> Srinagar - Pahalgam - Srinagar
								</p>
								<p class="aj">Shortly, after munching breakfast, leave the hotel for a daylight expedition of Pahalgam or the Valley of Shepherds. E- Route Pahalgam and halt to visit the Saffron fields. Pampore is the place in Kashmir that has been producing Saffron from past 2500 years. Kashmiri Saffron is counted among the best quality. You can click pictures here to save them as memoirs. Get awe-struck by nature’s charming views.

Later, carry on towards Pahalgam, a mesmerizing hill-town of Kashmir, covered with profuse greenery. Resting on the banks of Lidder River, Pahalgam is a much loved spot for the shooting of Bollywood movies and magnetizes an extreme number of tourists. On arrival, travel around the admired tourist attractions of Pahalgam. If you are an adventure buff, try your hand in River Lidder. Hop onto a horse’s back to explore the place. You can shop for some amazing local stuff from the bazaar of Pahalgam.

Visit Avantipura remnants, remains of ancient Hindu shrines that were established by King Awanti Varman who reigned over the region during the 9th century. The ruins have temples, enshrining Lord Shiva and Lord Vishnu. The location is surrounded by verdant greenery and offers mental peace. The subsequent attraction is Anantnag Sulphur Springs, 2 in number. The water of these springs is un-faded. Spend some unforgettable with your loved ones here.

After sundown, back to Srinagar. 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> Departure from Srinagar
								</p>
								<p class="aj">After morning supper, on the final day of the trip, you have some leisure time at hand till departure. Indulge in the activities of your curiosity. Afterwards, get a timely transfer to Srinagar airport to board the flight for your next destination.</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.highspiritadventures.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir  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="118725"/>
						</form>
						</div>
						
						";i:1;s:52:"Book Kashmir  Tour - 3 Nights / 4 Days Tour Packages";i:2;s:125:"book kashmir  tour - 3 nights / 4 days tour packages, hill station tour packages, srinagar, anantnag, baramulla tour packages";i:3;s:179:"Book Kashmir  Tour - 3 Nights / 4 Days tour packages from High Spirit Adventures - Get attractive 3 Nights / 4 Days Hill Station  tour packages for  Srinagar, Anantnag, Baramulla.";i:4;s:414:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Anantnag, Baramulla"        
		                 },
		      "description": "",
		      "name": "Kashmir  Tour",
		      "telephone": "+91-8629029169"
		    }
		    </script>
			";i:5;N;}