a:6:{i:0;s:14695:"				<div class="h1"><h1>Mumbai Goa Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.wenstravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.wenstravels.com/tour-packages.htm" title="Tour Packages">Tour 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.wenstravels.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="52490"/>
						</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_9/267703/102823.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/267703/102823.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.wenstravels.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="52490"/>
						</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:166:"Book Mumbai Goa Tour - 5 Nights / 6 Days tour packages from Sprasad Travels - Get attractive 5 Nights / 6 Days Beach and Islands  tour packages for  Mumbai, Goa City.";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-9439123510"
		    }
		    </script>
			";i:5;N;}