a:6:{i:0;s:16594:"				<div class="h1"><h1>American So journey Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.parlholidays.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.parlholidays.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>American So journey 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">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New York, Las Vegas, Los Angeles, San Francisco, Fresno, Buffalo, Niagara, Corning, Washington D.C.</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.parlholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="American So journey 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="86837"/>
						</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_15/447323/151807.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/447323/151807.jpg"  width="150" height="150"    alt="American So journey Tour" title="American So journey 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 Los Angeles
								</p>
								<p class="aj">As you reach the lovely iconic city of the US, Los Angeles, our tour representative meets you and helps you with an assisted transfer to the hotel. After completing the check-in formalities, you are free to explore the city on your own. Following the rule of 'live and let live', the city is a mix of relaxation, leisure and excitement at the same time. Savor sumptuous dinner.<br />
<br />
Stay overnight in Los Angeles.</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> Los Angeles- Las Vegas
								</p>
								<p class="aj">On the 2nd day of the tour, post breakfast, start the half-day guided sightseeing tour of Los Angeles including the prime attractions. The tour starts by driving past Beverly Hills- the hub of excitement and entertainment; the popular Sunset Boulevard street; the Mann's Chinese Theatre- a cinema palace of the famous Hollywood Walk of Fame, it is also known as TCL Chinese Theatre, Rodeo Drive- a street with 3-block setting that is known for being the center of luxury dining, shopping and luxurious accommodation experiences as well as options, and lastly, the very popular 'HOLLYWOOD' sign.<br />
<br />
Sightseeing is followed by a road journey to Las Vegas. As you reach, complete the check-in formalities. Continue with a city tour of Las Vegas attractions including the tall Stratosphere Tower with a height of 1,149 feet where you can relish rides, jumps and food at this site. The next attraction in line is Downtown Glitter Gulch- the street and the casino area where all of the city's action happens. Next is the wonderful Illumination tour and a show in Las Vegas at the Fremont Street Light Show. This night is going to be a memorable lifetime experience for you. Now, have dinner.<br />
<br />
Overnight stay in Las Vegas.</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> Las Vegas
								</p>
								<p class="aj">The 3rd day of the tour after breakfast is at leisure. Celebrated as the Gambler's Paradise, Vegas is a resort town famous for its endless entertainment, lively energy and 24-hour running casinos. You can indulge in the activities of your interest. The other option is an excursion to the Grand Canyon. This site is located at a distance of four and a half house away from Las Vegas. Covering an area of 10 miles with 277 miles of length, it is known for its striking natural formation of layered red rocks. Most of the canyon is a national park. Some of the popular activities that the visitors can indulge in here include mule rides, aerial tours, hiking, camping and rafting in River Colorado.<br />
<br />
After dinner, stay overnight in Las Vegas.</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> Las Vegas- Fresno
								</p>
								<p class="aj">After breakfast at the hotel, begin your journey for Fresno- famed to be the business, financial, cultural and entertainment hub of the San Joaquin Valley. As you arrive late afternoon, check-into the hotel. The evening is free. Explore this city on your own. Have sumptuous dinner at a delightful restaurant.<br />
<br />
Overnight stay in Fresno.</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> Fresno- San Francisco
								</p>
								<p class="aj">On the 5th day of the tour, post breakfast, start your road journey to San Francisco, famous for cable cars, year-long fog, a hilly landscape, vibrant Victorian houses and the iconic Golden Gate Bridge. After completing the check-in formalities, begin the sightseeing tour with a walk on Lombard Street, USA's most crooked street. Thereafter, start your drive past the Civic Centre. Stop at the Twin Peaks for a photograph opportunity. This place offers a lovely view of the legendary Bridge, looking stunning in its bright orange color. Next in line is a drive the Fisherman's Wharf, a famous destination of the city, via Ghirardelli Square with a historic waterfront. This is a public landmark, a popular square, popular amidst locals as well as tourists for delightful seafood, remarkable sights and unique shopping experiences. Indulge in shopping at the Pier 39, a lively market that has over 110 stores and wonderful attractions. In the evening, you can enjoy a cruise on the famous San Francisco bay.<br />
<br />
Dinner and overnight stay in San Francisco.</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> San Francisco-Buffalo- Niagara
								</p>
								<p class="aj">After breakfast on this day, board a flight to Buffalo. As you arrive at the Buffalo airport, hit the road for an assisted transfer to Niagara Falls. Complete the check-in formalities at the hotel. Linking the borders of Canada and the US, these waterfalls are one of the world's most- visited natural wonders. The view of the falls at night is even more mesmerizing with special light-effect added to the falls.<br />
<br />
Have your dinner. Overnight stay.</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> Niagara- Corning
								</p>
								<p class="aj">On the 7th day of the tour, have your breakfast and continue to the legendary Niagara Falls for experiencing and witnessing the wonderful whirlpool and rapids, cruising past falls on the Maid of the Mist. The cruise is operational from the last week of May as per the weather conditions. The tourists who book the cruise before this time, they are offered The View Mobile Tram ride.<br />
<br />
Later on, get transferred to Corning- one of the chief innovators in materials science in the world. The place produces some of the most stunning ceramic and glass products. On arrival, check-in at the hotel. Proceed for a visit to the Corning Glass Museum, dedicated to history, art and science of glass. Witness the live glassmaking demonstration and learn how to make glass. The museum has more than 40,000 glass objects on display. This visit is followed by dinner.<br />
<br />
Stay overnight in Corning.</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> Corning- Washington D.C.
								</p>
								<p class="aj">After breakfast, day 8 of the tour is going to be super exciting especially for kids and chocolate lovers as today you embark on a Chocolate tour at the famed Hershey's Chocolate World. The tour starts with a visit to the tropical rainforest where cocoa is grown as well as harvested. During your visit to the Hershey's Chocolate factory you can also understand the process, from making up to delivering the best quality products, starting from bean to milk chocolates all around. You will hear, feel and smell chocolate.<br />
<br />
After this memorable tour, you head to the capital city of the United States, Washington D.C., a pleasure for sightseeing enthusiast as it is dotted with a number of important buildings and other architectural marvel. On reaching, complete the check-in formalities at a hotel.<br />
<br />
After dinner, stay overnight in the capital city.</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 9:</b> Washington D.C. - New York
								</p>
								<p class="aj">Have your breakfast in the morning, followed by a guided city tour of Washington D.C. the tour starts with a drive to the Capitol Hill for a memorable photo opportunity. Known to be the city's largest historic residential neighborhood, it is the center of entertainment and nightlife here. Later on, continue with driving through Pennsylvania Avenue, to the Lafayette Park where you can enjoy superb views of the White House. Do not forget to click some photographs here. During your road journey, have stoppages at different landmarks of Washington D.C. like the Washington Monument- an amazing viewpoint offering panoramic views of the city; the World War II Memorial – constructed in the commemoration of American soldiers and other people who lost their lives in World War II; the Lincoln Memorial- constructed in the commemoration of the 16th President of the US -Abraham Lincoln and lastly, Jefferson Memorial- a superb Classic Revival architecture, another popular presidential memorial.<br />
<br />
After sightseeing, continue drive towards the New York. After reaching, check- in. New York is fast-paced busy city, known as the world's center of fashion, art, finance and culture. A huge number of leisure and business visitors from all around the world come here every year. The evening is booked for relishing 'Big Apple' on an Illumination Tour, as you drive past superbly well-lit landmarks of the city, proving to be an unforgettable experience. After this, you some free time at hand at Times Square.<br />
<br />
Post dinner, stay overnight in New York.</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 10:</b> Departure
								</p>
								<p class="aj">Today is the last day of the tour. Start it with a sumptuous breakfast following it with sightseeing tour of New York. The tour starts with visit to the Statue of Liberty, at Liberty Island. A World Heritage Site, this colossal statue is a representation of human spirit. Continue with sightseeing as drive past the well-known landmarks of the New York city like the New York Exchange, the Wall Street, the popular Manhattan Bridge, World Trade Centre site, Brooklyn Bridge, through Soho right up to the Little Italy, the Fifth Avenue, the Broadway and then to the Madison Square Garden up to the Times Square, lying on the confluence of the Broadway and the 42nd Street, known as the 'Crossroads of the World'. This place is city's entertainment hub. Later, you are scheduled for memorable photo opportunities at popular points such as Trump Tower, the United Nations Headquarters and Rockefeller Centre.<br />
<br />
Get on-time transfer to the airport to board a flight for your onward destination.</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.parlholidays.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="American So journey 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="86837"/>
						</form>
						</div>
						
						";i:1;s:64:"Book American So journey Tour - 9 Nights / 10 Days Tour Packages";i:2;s:203:"book american so journey tour - 9 nights / 10 days tour packages, heritage tour packages, new york, las vegas, los angeles, san francisco, fresno, buffalo, niagara, corning, washington d.c. tour packages";i:3;s:249:"Book American So journey Tour - 9 Nights / 10 Days tour packages from Parl Holidays - Get attractive 9 Nights / 10 Days Heritage  tour packages for  New York, Las Vegas, Los Angeles, San Francisco, Fresno, Buffalo, Niagara, Corning, Washington D.C..";i:4;s:495:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New York, Las Vegas, Los Angeles, San Francisco, Fresno, Buffalo, Niagara, Corning, Washington D.C."        
		                 },
		      "description": "",
		      "name": "American So journey Tour",
		      "telephone": "+91-9250975237"
		    }
		    </script>
			";i:5;N;}