a:7:{i:0;s:7057:"				<div class="h1"><h1>Kashmir Fishing Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="https://www.heavensgroup.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="https://www.heavensgroup.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kashmir Fishing 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">New Delhi, Srinagar</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price </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="https://www.heavensgroup.co.in/travel-inquiry.htm">
						<input type="hidden" name="subject" value="Kashmir Fishing 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="45221"/>
						</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_10/278544/89446.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/278544/89446.jpg"  height="150"  width="150"    alt="Kashmir Fishing Tour" title="Kashmir Fishing Tour" loading="lazy"></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> Delhi - Srinagar
								</p>
								<p class="aj">Arrive at Srinagar airport from Delhi. On arrival, complete the check-in formalities at your pre-booked hotel. The rest of the day is free for leisure activities- explore the popular tourist spots, admire the surrounding natural scenery, visit the local bazaar etc. The evening is scheduled for Shikara ride. 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 2:</b> Gund
								</p>
								<p class="aj">Post breakfast on the 2nd day of the tour, depart to Gund to enjoy fishing. On arrival, check-in your luxury tents. You can catch Brown Trout in abundance. During fishing, also treat your eyes to the surrounding natural beauty. Overnight in tents.</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> Wangath - Srinagar
								</p>
								<p class="aj">On day 3, after breakfast, proceed to upper, middle and lower Wangath. Return to Srinagar in the evening for an 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 4:</b> Dachigam National Park - Srinagar - Departure from Delhi
								</p>
								<p class="aj">Today is the last day of the tour, visit the well-known Dachigam National Park and a beautiful one too. It is home to rare Kashmir stag Hangul. This place is quite popular for its fish population. If you want, you can also embark on a safari, you may spot animal and bird species such as Musk deer, Leopard, Himalayan Grey Langur, Leopard Cat, Himalayan Black Bear, Himalayan Brown Bear, Jackal, Hill Fox, Himalayan Weasel, Black Bulbul, Minivet, Red Start, Chough etc. Later, get on-time transfer to the airport to board a flight to Delhi from where you board a flight to your onward 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="https://www.heavensgroup.co.in/travel-inquiry.htm">
						<input type="hidden" name="subject" value="Kashmir Fishing 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="45221"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Kashmir Fishing Tour - 3 Nights / 4 Days Tour Packages";i:2;s:124:"book kashmir fishing tour - 3 nights / 4 days tour packages, lakes & rivers tour packages, new delhi, srinagar tour packages";i:3;s:154:"Heavens Group offers Kashmir Fishing Tour - 3 Nights / 4 Days tour package, budget Lakes & Rivers tour packages for New Delhi, Srinagar at exciting price.";i:4;s:397:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Srinagar"        
		                 },
		      "description": "",
		      "name": "Kashmir Fishing Tour",
		      "telephone": "+91-9034015552"
		    }
		    </script>
			";i:5;N;i:6;N;}