a:6:{i:0;s:10705:"				<div class="h1"><h1>Taste Of Turkey Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Taste Of Turkey 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">Istanbul</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Taste Of Turkey 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="66342"/>
						</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/370602/121702.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/121702.jpg"  width="150" height="150"    alt="Taste Of Turkey Tour" title="Taste Of Turkey 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> Istanbul - Arrival Day
								</p>
								<p class="aj">Meet at the airport and transfer to your hotel. You will be given your room key and the rest of the day is yours to explore Istanbul. Overnight in Istanbul.</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> Istanbul City Tour
								</p>
								<p class="aj">Pick up at 08:30am from your hotel for the a day tour of old Istanbul city. Visit to ST. SOPHIA This ancient basilica, built by Constantine the Great in the 4th century and reconstructed by Justinian in the 6th century, is one of the architectural marvels of all time. TOPKAPI PALACE The great palace of the Ottoman sultans from the 15th to the 19th centuries housing an exquisite collection of cyrstal, silver, and Chinese porcelain, robes worn by the sultans and their families, the famous jewels of the Imperial Treasury, miniatures, the Holy Mantle; enshrining relics of the Prophet Mohammed. SULTANAHMET IMPERIAL MOSQUE Across from St. Sophia built in the 16th century by the architect Mehmet, is known as the BLUE MOSQUE because of its magnificent interior decoration of blue Iznik tiles. HIPPODROME Ancient Hippodrome, the scene of chariot races, with the three monuments; the Obelisk of Theodosius, the bronze Serpentine Column and the Column of Constantine. Lunch break at 13:00pm after the lunch Murtis Tour will then take you to the GRAND COVERED BAZAAR In this labyrinth of streets and passages are more then 4, 000 shops with each trade having its own area: the goldsmiths street, the carpet sellers, Turkish arts and crafts, such as handpainted ceramic plates, hand - honed copperware, brassware and trays, water ewers, onyx - ware and meerschaum pipes. After the tour, transfer back to your hotel. Overnight in Istanbul. Please Note: Hagia Sophia is closed on mondays, Topkapi Palace closed on tuesdays, Grand Bazaar closed on sundays. If your tour is on one of these days we would offer you to visit Underground Cistern instead of Hagia Sophia and Topkapi palace museum, instead of Grand Baazar you will visit Spice Bazaar.</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> Istanbul Bosphorus Cruise and Istanbul to Cappadocia
								</p>
								<p class="aj">After breakfast depart for Bosphorus Cruise tour. Enjoy a magical Istanbul Bosphorus Boat Cruise and Spice Market Tour starting at 08:30. Enjoy the array of sites you can see from the boat including: SPICE BAZAAR (Egyptian Bazaar). BOSPHORUS BY BOAT a traditional excursion by boat along the waterway separating Europe and Asia.. Lunh break at the Turkish restaurant. After the lunch depart for Istanbul Ataturk airport for domestic flight to Cappadocia. Transfer from airport and check in to your hotel in Cappadocia. Overnight in Cappadocia.</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> Cappadocia Tour
								</p>
								<p class="aj">Today we will get to know the Cappadocia region, a volcanic area in which the geological formation started 10 million years ago. As a result of these formations phallic like pillars have come to life. The beautiful horse country Katpatuka, (as the Persians called her) is an unbelievable strip of land, enchanting and mysterious. Cappadocia region is also famous for its arts, including ceramic and carpets. You will be picked up approximatley 09:30 from your hotel to join our regular tour. Tour starts with Uchisar Castle, the highest point of Cappadocia. After Uchisar, you visit Goreme Open Air Museum, the Heart of Cappadocia. Goreme Open Air Museum is famous for frescoes dating to 10th century describing the life of Jesus Christ and monks. Next stop is Cavusin, which is an abandoned village with old cave Greek houses. After Cavusin you go to the restaurant in Avanos to have lunch. After lunch, you visit a pottery work shop, to see how to make potteries. Then you go Pasabagi where you can see three - headed fairy chimneys. After Pasabagi you visit another workshop to see Cappadocian handwoven carpets and kilims. Next stop is Devrent Valley, which is also called Imagination Valley, where you can see natural rock formations looking like animals. Then you head to a wineshop in Urgup for wine tasting. Last stop is Three Beauties, three beautiful fairy chimneys with their hats, which is the symbol of Cappadocia. This tour will end approximately 18:00 and you will be returned back to your hotel. Overnight in Cappadocia. If you do not have Capadocia pass, you can stay at the hotel or you can also buy one of our optional daily tours, wich are more than 15 different options.</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> Cappadocia to Istanbul - End of Tour
								</p>
								<p class="aj">After breakfast you will have free time shopping in Cappadocia. Today we depart for Kayseri airport for our domestic flight to Istanbul and then back to home. We hope your tour was a memorable one and we would like to see you in the future in one of our tours again. Have a nice trip back home and thanks for choosing us.</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>
															</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Taste Of Turkey 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="66342"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Taste Of Turkey Tour - 4 Nights / 5 Days Tour Packages";i:2;s:107:"book taste of turkey tour - 4 nights / 5 days tour packages, heritage tour packages, istanbul tour packages";i:3;s:137:"RAJAS TRAVELS offers Taste Of Turkey Tour - 4 Nights / 5 Days tour package, budget Heritage tour packages for Istanbul at exciting price.";i:4;s:400:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Istanbul"        
		                 },
		      "description": "",
		      "name": "Taste Of Turkey Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}