a:6:{i:0;s:14758:"				<div class="h1"><h1>Mumbai Goa Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.decenttravelenterprises.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.decenttravelenterprises.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mumbai Goa 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Mumbai, 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.decenttravelenterprises.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mumbai Goa 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="107010"/>
						</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_16/469503/177342.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/469503/177342.jpg"  width="150" height="150"    alt="Mumbai Goa Tour" title="Mumbai Goa 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 Mumbai
								</p>
								<p class="aj">On your arrival in Mumbai Airport meet our tour representative who further escorts you to your pre-booked hotel. Check-in and relax in your hotel. Rest of the time is to be spent at leisure. In the evening take a stroll around the locale if you wish to. Return to your hotel by evening, have dinner and stay overnight.<br />
<br />
Mumbai was given the name City of Dreams owing to tremendous opportunity it holds, mainly in Hindi cinema. The city is the capital of Maharashtra and overlooks the gamboling waves of Arabian Sea. Its cityscape might remind you of that of New York. But along with the bustling nooks, Mumbai has clung on to its heritage and history and takes immense pride in all of that. It is unarguable that this very city gives a cut-throat competition to even the most developed cities worldwide, let alone of India.</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> Mumbai
								</p>
								<p class="aj">Have your breakfast in the morning and proceed for Mumbai sightseeing session, which includes Elephanta Caves, Prince of Wales Museum, Hanging Garden, Juhu Beach, Gateway of India and Marine Drive.<br />
<br />
Elephanta cave is located in Gharapuri (The City of Caves), approximately ten kilometers away from Mumbai Harbor. The caves consists mainly of two groups- Hindu Caves (consisting if five caves) and Buddhist Caves (consisting of two caves). This rock-cut architecture adopted for the caves is datable to a time between 5th and 8th century. However an apt date of its construction is yet a mystery but historians have concluded them to the time when Mauryan rulers were defeated by Badami Chalukyas in 635 AD. Back then, the Elephanta was the capital of Konkan Mauryas and was called Puri or Purika. The caves today are a UNESCO World Heritage Site.<br />
<br />
Prince of Wales Museum is also known as Chhatrapati Shivaji Maharaj Vastu Sangrahalaya. It was founded in 20th century in order to commemorate the visit of Prince Wales. There are about 50000 exhibits inside the museum divided into three categories- Art, Archeology and Natural History. Artifacts and relics of Indus Valley Civilization, Guptas, Mauryas, Rashtrakutas, Chalukyas and others are put here for public display. Other than this, you can behold beautiful prints, illustration of different wildlife species, paintings, manuscripts etc.<br />
<br />
Just a few kilometers away from the museum is where the landmark of Mumbai stands, The Gateway of India. This structure was built in order to commemorate the visit of Their Majesties King George V and Queen Mary in 1911. Take a leisure stroll in the Hanging Garden, which is perched at the top of Malabar Hill, overlooking the beautiful Arabian Sea. This manicured terrace garden is festooned with a huge variety of plants and flower species. Juhu Beach, the popular beach of Mumbai is thronged with visitors. Some of Mumbai’s best street food and restaurants are located here. Marine drive is located in the heart of Mumbai, just beside a busy road. But the horns and screeches of city’s road don’t really interrupt the serenity that is attained here while sipping a cup of coffee and just simply unwinding.<br />
<br />
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 3:</b> Mumbai - Goa
								</p>
								<p class="aj">Have your breakfast and check-out from your hotel. You get a timely transfer to Mumbai Airport in order to catch your flight for Goa. On arriving Goa, meet our tour representative and get shifted to your pre-booked hotel. Check-in at your hotel and relax. Rest of the day is to be spent at leisure.<br />
<br />
Goa and its beaches pull huge crowd from different corners of the world. The state is a popular destination of India, especially for beach-persons and party-animals. But that is not all what Goa is about; its shopping scenario, biodiversity, architecture, heritage and culture happen to be assets of equal share. It is known for its laid-back vibe, but with all the amenities one could think of, even the ones unthinkable.<br />
<br />
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 4:</b> North Goa
								</p>
								<p class="aj">Have your breakfast and head towards the popular beaches of Goa, such as Calangute, Dauna Paula, Miramar and Baga Beach. Old Goa churches and Fort Aguada can also be visited.<br />
<br />
Aguada Fort was constructed in 1613 for the purpose of safeguarding from Marathas and Dutch. Even today the structure is well-preserved and overlooks a beautiful vista of sea and expanse of woods.<br />
<br />
Old Goa sightseeing session consists of Cidade De Goa, Basilica Bom Jesus, Church and Convent of Francis of Assisi, Church of Saint Cajetan, Church of Saint Monica, Museum of Christian Art, Solar Souto Maior, Foutanhas and Panjim.<br />
<br />
The Basilica of Bom Jesus houses the moral remains of St. Francis Xavier, a missionary who traveled across Asia to spread the knowledge until he died in 1552. St. Francis Xavier is regarded as the Patron Saint of Goa. The Church of St. Francis of Assisi was built in 1521 by the Portuguese rulers and marks the brilliance of architecture. In the Museum of Christian Art, you can witness a collection of Rosaries and items made of gold and precious stones. Solar Souto Maior is a reflection of Goa’s rich heritage, dating back to 1585 but has been restored and renovated. Here, you can witness a treasure trove of artifacts.<br />
<br />
You may choose to take a stroll and shop in the busy streets of Panjim. This is the capital of Goa and has local as well as branded showrooms for the shopaholics. Also, foodies can find a myriad of restaurants giving cut-throat competition to each other in sense of taste, ambience and décor.<br />
<br />
In the afternoon, have lunch in Panjim. As per our recommendations, you must try Goan Cuisine from the Mandovi Hotel, Continental from The Vinete, Indian cuisine from Delhi Darbar and Chinese and oriental from Goan Chin. Kindly note, the cost of lunch is not included in the price of the tour.<br />
<br />
After lunch, visit Baga Beach which is filled with exuberance and youthful vibe. You may shop, relax or indulge in water-sports activities here.<br />
<br />
Overnight stay in the 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 5:</b> South Goa
								</p>
								<p class="aj">On this day of the tour have your breakfast and get ready to visit the beaches of South Goa. Attractions to be visited today consist of Mangueshi Temple, Shanta Durga Temple, Colva Beach, among others.<br />
<br />
Mangueshi Temple is a popular temple of Goa and also one of the largest in the state. It is dedicated to Bhagavan Manguesh, an incarnation of Hindu Lord Shiva. Other shrines inside the temple is of Goddess Parvati , Lord Ganesha, Nandikeshvar, Gajana, Gramapurusha Deva Sharma, Bhagvati, Lakshminarayan and others.<br />
<br />
Shanta Durga Temple has its history dating back to 1730, when the foundation stone was laid. The shrine was earlier built of laterite mud and was later renovated in 1966. Main deity of the temple, Goddess Shantadurga mediates between Lord Shiva and Lord Vishnu.<br />
<br />
Also visit Margao, the headquarters of South Goa district. It also happens to be commercial and industrial center. Margao’s colonial quarter Largo De lgreja is a historical church square, surrounded by old buildings that have their own charm. It is surrounded by old buildings from three sides and the Church of Holy Spirit on the other. The church is one of Goa’s grandest churches datable to 1564, when it was built. Its architecture epitomizes Indian Baroque style of architecture, with interiors having regal feel throughout.<br />
<br />
To learn more about the rural lifestyle of Goa, Ancestral Goa is a perfect place to be in. The laterite sculpture of Saint Mirabai is indeed the tallest laterite sculpture of India. Ethnicity and history is exhibited through its art galleries, artifacts center and open air museum.<br />
<br />
After this, proceed to Menezes Braganza House in Chandor. It was built in 17th century and is located on one side of the village square, however now divided into two houses with same entrance. On its east is a small chapel that has relics of St. Francis Xavier. The interior reminds us of a beautiful past. On its westward is where you can find the claimed first private library of Goa.</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 6:</b> Departure from Goa
								</p>
								<p class="aj">On this day, after your breakfast, check-out from the hotel and get transferred to the airport in order to catch your flight for your onward journey.<br />
<br />
Hence the journey ends.</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>
																		<li>Sightseeing</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.decenttravelenterprises.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mumbai Goa 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="107010"/>
						</form>
						</div>
						
						";i:1;s:54:"Book Mumbai Goa Tour - 5 Nights / 6 Days Tour Packages";i:2;s:119:"book mumbai goa tour - 5 nights / 6 days tour packages, beach and islands tour packages, mumbai, goa city tour packages";i:3;s:161:"Decent Travel Enterprises offers Mumbai Goa Tour - 5 Nights / 6 Days tour package, budget Beach and Islands tour packages for Mumbai, Goa City at exciting price.";i:4;s:403:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Mumbai, Goa City"        
		                 },
		      "description": "",
		      "name": "Mumbai Goa Tour",
		      "telephone": "+91-9494675564"
		    }
		    </script>
			";i:5;N;}