a:6:{i:0;s:11643:"				<div class="h1"><h1>Goa Offbeat Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.orientconnections.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.orientconnections.co.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.orientconnections.co.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="57605"/>
						</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/367652/109361.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/367652/109361.jpg"  width="150" height="150"    alt="Goa Offbeat Tour" title="Goa Offbeat Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Panjim Airport - Thivim Railway Station - Aldona - Arvalem - Goa backwaters (optional)<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 homestay 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 homestay 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 homestay.<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 travelled 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.orientconnections.co.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="57605"/>
						</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:162:"Book Goa Offbeat Tour - 4 Nights / 5 Days tour packages from Orient Connections - Get attractive 4 Nights / 5 Days Beach and Islands  tour packages for  Goa City.";i:4;s:482:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Goa City"        
		                 },
		      "description": "Panjim Airport - Thivim Railway Station - Aldona - Arvalem - Goa backwaters (optional)",
		      "name": "Goa Offbeat Tour",
		      "telephone": "+91-9552952695"
		    }
		    </script>
			";i:5;N;}