a:6:{i:0;s:10919:"				<div class="h1"><h1>Italy - Highlights Of The Amalfi Coast Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sanskrutivacations.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sanskrutivacations.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Italy - Highlights Of The Amalfi Coast 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Naples, Rome</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.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Italy - Highlights Of The Amalfi Coast 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="52366"/>
						</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_14/393874/102680.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/102680.jpg"  width="150" height="150"    alt="Italy - Highlights Of The Amalfi Coast Tour" title="Italy - Highlights Of The Amalfi Coast 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
								</p>
								<p class="aj">Start Bomerano, a small village in the municipality of Agerola.</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> Agerola
								</p>
								<p class="aj">Leaving the Agerola plain we descend by bus to Amalfi. The town is the largest on the coast and a real highlight and was popular in Edwardian times with the British upper classes as a winter holiday destination. The large Duomo Cathedral dominates the town with its bright coloured tiles which are typical of the region. Continuing on by bus we climb to the romantic town of Ravello and the best views of the coastline. Ravello also has a grand Duomo but the Villa Rufolo and Villa Cimbrone are the stars of the town. Set amidst formal gardens their balconies stand at the edge of the cliffs enjoying stunning views and were aptly described by Andrï¿½ Gide as 'closer to the sky than the seashore'. There is time to wander, enjoy a coffee and soak up the atmosphere before we return to the cooler climes of Bomerano.</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> Naples
								</p>
								<p class="aj">We transfer after breakfast to the Bay of Naples where we will spend the morning visiting the intriguing city of Herculaneum. Buried in AD 79 by a giant mudslide, triggered by the eruption of Mt Vesuvius, the perfectly preserved remains give us an amazing insight into the life of a Roman city. After lunch we will travel by bus high up onto the slopes of Vesuvius itself. Depending on weather conditions, you may choose to be led by a specialist Volcano guide through one of the many incredible walks around the crater of Vesuvius (optional).</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> Naples
								</p>
								<p class="aj">Time to take to the trails today and enjoy one of the world's finest day walks. Leaving from our front door step it's a short stroll through the quiet village of Bomerano before we join the 'Walk of the Gods'. The route follows the contours of the land for the majority of the day with amazing views of the Amalfi coastline far below. In season the meadows are carpeted with flowers and the coastal waters teem with cruisers and pleasure boats. Our destination today is Positano, a near vertical town of colourful buildings reached by a network of ancient paths and tracks. On the way there is plenty of time to admire the beautiful views of the Amalfi before we descend 1500 steps to the beautiful coastal town of Positano. There is time for private exploration before we return in the late afternoon to our hotel by boat and bus.</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> Bomerano
								</p>
								<p class="aj">Relax around Bomerano, take an unguided walk either through the hills or down to the sea or maybe enjoy a boat ride along the coast to some famous Amalfi coast towns. Alternatively a private transfer can be arranged to the vast buried city of Pompeii (optional).</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> Bay of Naples
								</p>
								<p class="aj">We return to the Bay of Naples and a day of sightseeing in this fascinating city including the Piazza Plebiscito and the National Museum (optional). Naples has a mixed reputation as a city but the electric atmosphere and mix of modern and historic architecture make Naples a unique Mediterranean City. After the sightseeing there will be free time to explore before we return to our 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 7:</b> Amalfi
								</p>
								<p class="aj">We leave the hotel after breakfast and take the public bus down to Amalfi and board the boat to Capri. The journey along the Amalfi Coast is spectacular with small coves and bays of clear azure water overlooked by towering cliffs. The time spent on Capri is unguided and on arrival you are free to explore. A beautiful walk will take you up to Capri town and along a network of small pedestrianised streets to visit the remains of Villa Jovis, the former home of the fearsome Roman emperor Tiberius. A walk around the spectacular coastline is recommended and allows you to see a natural rock arch and the famous Faraglioni, rock stacks which stick vertically out of the sea. There is also time to do a spot of shopping in some of islands boutique shops before we return by boat and bus to our 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 8:</b> Departure
								</p>
								<p class="aj">End Bomerano.</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>
												</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.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Italy - Highlights Of The Amalfi Coast 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="52366"/>
						</form>
						</div>
						
						";i:1;s:82:"Book Italy - Highlights Of The Amalfi Coast Tour - 7 Nights / 8 Days Tour Packages";i:2;s:134:"book italy - highlights of the amalfi coast tour - 7 nights / 8 days tour packages, heritage tour packages, naples, rome tour packages";i:3;s:170:"Sanskruti Vacations offers Italy - Highlights Of The Amalfi Coast Tour - 7 Nights / 8 Days tour package, budget Heritage tour packages for Naples, Rome at exciting price.";i:4;s:427:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Naples, Rome"        
		                 },
		      "description": "",
		      "name": "Italy - Highlights Of The Amalfi Coast Tour",
		      "telephone": "+91-9769880881"
		    }
		    </script>
			";i:5;N;}