a:6:{i:0;s:11523:"				<div class="h1"><h1>Goa Offbeat Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.hussaintours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.hussaintours.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Goa Offbeat 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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Goa City</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.hussaintours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Goa Offbeat 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="64160"/>
						</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/387846/118828.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/387846/118828.jpg"  width="150" height="150"    alt="Goa Offbeat Tour" title="Goa Offbeat 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> Meet the family. Explore Aldona on mountain bikes
								</p>
								<p class="aj">The Goa Away from the Beaches experience starts with your arrival in Goa. From Goa's Panjim Airport or at the Thivim station in North Goa, a pickup can be organized if required. For the perfect start of the offbeat tour, hop into a local bus or taxi and reach Aldona Village in North Goa.<br />
<br />
Your stay, during your tour is arranged with the Amaral family. Meet the hosts, Roberto and Raquel. In the sleepy little village of Aldona, deep in the heart of North Goa, they own a beautiful Goan-Portuguese house. The homestay is at least 500 years old, though the exact age remains unknown. The family allots one or two of the private rooms in the outhouse cottage. The lodging enjoys the feel of the colonial times. These rooms are equipped with a common verandah, surrounded by the verdant greenery of trees. Hear the melodies of the chirping birds, and the harmonies life of the peaceful village.<br />
<br />
Relax for a while or spend time getting to know your hosts. Roberto and Raquel have grown up in these parts, and are full of fascinating stories. Know about how Goa has transformed since the hippie era. Lie on a hammock, read, write, draw, paint and do the things you love. The soothing surroundings is a pleasant change form chaos of cities.<br />
<br />
Today after rest, go walking or cycling around Aldona on the in-house mountain bikes. The gentle terrain offers some interesting trails. Mingle with neighbors lazing outside their homes and locals working in their rice paddies. Learn about their lives and hear their stories. Enjoy the treasures far from the general notions of Goa.<br />
<br />
Return to home stay for the night.</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> Day trip: Aravalem waterfalls, rock-cut caves, Mayem Lake OR to Mapusa Market
								</p>
								<p class="aj">The morning starts with the calls of birds and the melodies of the village. Have breakfast and get ready for a day trip.<br />
<br />
The day trips can be to Arvalem or Mapusa. In Arvalem, visit the rock-cut caves and the waterfalls. The rock-cut caves is believed to be Asia's oldest, yet is completely off the tourist radar. The spectacular Arvalem waterfall is a good picnic spot. Splash in the azure waters. Next, row a paddleboat into the serene Mayem Lake.<br />
<br />
You can also choose to visit the favorite street market in the town of Mapusa. The bargains are quite tempting. Explore the wonderful town occupied by tourists most of the year.<br />
<br />
In the late afternoon, let your hosts give you an intimate glimpse into the village they call home. They take you to the village church and cemetery, where you come across interesting experiences. The picturesque Aldona fort, the abandoned Portuguese homes, ancient bridges transport you back in the colonial era. Your visit ends at a traditional bakery in the village. Watch and savor, fresh breads being baked in colossal earthen oven. The warm and fluffy delicacies remains one of the favorite memories of offbeat Goa.<br />
<br />
Return to the home stay for a restful night.</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> Kayak in the backwaters. Guided village trip
								</p>
								<p class="aj">Goa cannot stop surprising you. Today after a healthy breakfast, gear up for something unknown to many. Today you are all set to explore the backwaters of Goa. The rivers, lagoons, lakes and the sea have created one of the most beautiful eco-system, and what better is very few actually know about it. Unlike the backwaters of Kerala, the popular counterpart there are no houseboats and nor commercialization, only an endless stretch of serenity.<br />
<br />
Board a kayak and get ready to explore. There are small coves, mangroves, little hamlets on the shores, and other enchantments of nature. Spot birds and wildlife, it is a world untouched. Watch the sunset and be back to your homestay in Aldona Village.</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> Optional trips
								</p>
								<p class="aj">Goa is not visited but experienced. Today, there are no concrete plans. Make your own plans or relax in your home stay.<br />
<br />
If you feel like you want to pack in more, your options are abundant.<br />
<br />
You can join your host Roberto for a speedboat trip through the uncharted backwaters of Goa. This 1.5-hour trip, offers to revel in the natural beauty. Pass through secluded villages and intricate mangroves. Bird spotting is the real pleasure. Watch eagles, kingfishers, peacocks perched on trees, and some species you may have never even seen before. The Indian Mugger Crocodile might also make appearance if you are lucky. Between October and March, you can choose to speedboat into the Arabian Sea. In these months is possible to scout for dolphins. Unlike the Dolphin charters, it is a personalized experience of visiting the gentle beasts.<br />
<br />
For an alternate tour, go island hopping on a ferry. Rent a bike or car. Take the drive through the less traveled river route via Pomburpa. The route navigates through picturesque scenery. Make stops at small family-run Goan eateries. Sample Goan dishes and urakh (feni's lesser known cousin). The delicious taste tantalize your taste buds. You can also a give a shot to lady luck, Try gambling at the floating casino. Spend the night in parties, lost in music and dancing. Celebrate life in Goan style.</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> Departure from Goa Airport - Railway station
								</p>
								<p class="aj">Today is the last day of your trip. Enjoy a delicious platter and bid farewell to your hosts. Get a transfer to catch your flight or train home. Your tour is over, but you take a little bit of Goa along in your hearts.</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>Transport</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.hussaintours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Goa Offbeat 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="64160"/>
						</form>
						</div>
						
						";i:1;s:55:"Book Goa Offbeat Tour - 4 Nights / 5 Days Tour Packages";i:2;s:112:"book goa offbeat tour - 4 nights / 5 days tour packages, beach and islands tour packages, goa city tour packages";i:3;s:157:"Book Goa Offbeat Tour - 4 Nights / 5 Days tour packages from Hussain Tours - Get attractive 4 Nights / 5 Days Beach and Islands  tour packages for  Goa City.";i:4;s:396:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Goa City"        
		                 },
		      "description": "",
		      "name": "Goa Offbeat Tour",
		      "telephone": "+91-9411923927"
		    }
		    </script>
			";i:5;N;}