
Boasting passion, sophistication, and sacred devotion to the good life, Spain is a country richer and more diverse than you ever imagined. Its ancient castles; snowy mountain peaks; important monuments; sandy beaches and elegant cities make it one of the top travel destinations in the world. In fact, it’s impossible to run out of fun things to do in Spain. Located in the extreme southwest of Europe, Spain encompasses soul-stirring landscapes of all shapes and sizes. To the east, the Pyrenees mountain range impresses with its wild forests and tall peaks. Washed in the waters of the Mediterranean sea, the hilly coastal plain of Valencia gives in to the sandy beaches and lands rich on citrus orchards. Above this valley, snowy peaks of Sierra Nevada rise unexpectedly from the sunny plains of Andalucía.
To the northwest, lavishly green forests of Galicia dip their toes in the Atlantic; and the heart of Spain is filled with the windblown Meseta, a high central plateau, home to the adventures of Don Quijote.
However, Spanish landscapes are not the only ones resonating diversity. Many incredibly varied cultures shaped the soul of this temperament country including Castilians, Catalans, Basques, Lusitanians, Galicians, Romans, Arabs, Jews, and Romani people (Gypsies). What's more, each group enriched Spanish artistic, historical, and culinary heritage in its specific way.
Still, if places in Spain don’t disarm you with their landscapes, monuments, or music and dance, their succulent cuisine will surely do it. Food and wine are, indeed, a national obsession. When unsure of what to do in Spain, take a break in a tapas bar to think things over. The flavorsome local ingredients turn even the simplest of meals into a culinary experience. Traditional dishes include paella, fideuà, Jamon Serrano, patatas bravas, refreshing gazpacho as well as a vast range of tapas and pinchos. Also, red Rioja wine, white Verdejo or the sparkling Cava complement Spanish cuisine with smooth nonchalance.
Spain’s cities are modern and full of life while its countryside retains and enchanting quaint ambiance freckled with castles, and ancient ruins. The mountains offer refuge for hikers, bikers, and skiers; sunny beaches pamper leisure vacationers; Spanish islands welcome those in need of more exotic adventures. Madrid lures with its active lifestyle, culture, and museums; Sevilla charms with its music and traditions; and Barcelona seduces with modernist architecture and bohemian vibes - the choices are endless. All in all, whatever your travel taste buds prefer, this country won’t disappoint. Browse below for inspiration for exciting things to do in Spain!
The most known detail of Spanish cuisine is the tradition of eating tapas. The exact definition of tapas changes from region to region though, one principle always stays the same: tapa is a small portion of delicious food. When in Spain, go “tapear” hopping from one tapas bar to the next tasting local specialties.
Did you know that Spain prides itself on some of the best beaches in the world? The Mediterranean Sea washes calmly over 1660 km (1030 miles) of the Spanish coast. The beaches stretch from Tarifa, the southernmost point of Europe, to the rocky Cabo de Creus bordering with France. Each part of the coast offers very different holiday experiences!
From traditional to innovative, rustic to refined, white, red, and sparkling, the wines of Spain offer as much diversity as its legendary cuisine, culture, and natural beauty. In fact, Spain wine cultivation areas are more extensive than in any other country. Wine grapes grow all over the place featuring an incredible variety of 400 grape types.
Spain may seem like an unlikely destination for the thrill-seeking mountaineers amongst you. But, the Iberian Peninsula offers up some great mountain ranges with a ton of fantastic activities. So, if you are a skier, mountain climber, or trail hiker and you are wondering what to do in Spain, wonder no more.
From the Sagrada Familia in Barcelona to the Alhambra in Granada, Spain is choc-a-block with fantastic museums and monuments. You could spend your entire life jetting from city to city, exploring all the treasures Spain has to offer and still not see them all. For things to see in Spain, you’re never in short supply.
| # | Time | Query |
|---|---|---|
| 1 | 1.38 ms | SELECT url, namespace, method, content_redirection FROM `redirect` WHERE status = 1 |
| 2 | 2.91 ms | INSERT INTO `log_customer` ( `id` , `id_customer` , `log` , `date` ) VALUES( NULL , NULL ,... |
| 3 | 0.43 ms | SELECT * FROM `languages` WHERE TRUE AND `short` = 'en' |
| 4 | 0.89 ms | SELECT d.*, d.cdn_image_uuid, d.cdn_variants, d.cdn_processing_status, d.use_cdn, m.id_language, m.name, m.description, m.summary, m.seo_title, m.seo_description, m.seo_keywords, m.seo_url, m.img_alt, m.faqs, m.index_content FROM `destinations` AS d INNER JOIN `destination_meta` AS m on d.id =... |
| 5 | 1.4 ms | SELECT t.*, m.id_language, m.title, m.description, m.img_alt, m.blog_link, m.category_link FROM `thingstodo` AS t INNER JOIN `thingtodo_meta` AS m ON t.id = m.id_thingtodo WHERE TRUE AND t.`id_destination` = 1 AND t.`status` = '34' AND m.`id_language` = 1 |
| 6 | 1.25 ms | SELECT d.*, m.id_language, m.name, m.description, m.summary, m.seo_title, m.seo_description, m.seo_keywords, m.seo_url, m.img_alt, (select count(*) from product_destination where id_destination = d.id) + (select count(*) from product_destination where id_destination = d.id) as experiencies FROM... |
| 7 | 23.74 ms | SELECT dp.id_parent, COUNT(DISTINCT pd.id_product) AS cnt FROM `product_destination` pd INNER JOIN products p ON p.id = pd.id_product INNER JOIN product_meta pm ON pm.id_product = p.id AND pm.metaname = 'availability_next_date' AND pm.metavalue IS NOT NULL AND pm.metavalue <> '' AND pm.metavalue... |
| 8 | 1.39 ms | SELECT dp.id_parent, d.*, m.id_language, m.name, m.description, m.summary, m.seo_title, m.seo_description, m.seo_keywords, m.seo_url, m.img_alt FROM `destination_parent` dp INNER JOIN destinations AS d ON d.id = dp.id_child INNER JOIN destination_meta AS m ON d.id = m.id_destination WHERE... |
| 9 | 17.64 ms | SELECT pd.id_destination, COUNT(DISTINCT pd.id_product) AS cnt FROM `product_destination` pd INNER JOIN products p ON p.id = pd.id_product INNER JOIN product_meta pm ON pm.id_product = p.id AND pm.metaname = 'availability_next_date' AND pm.metavalue IS NOT NULL AND pm.metavalue <> '' AND... |
| 10 | 130.86 ms | SELECT p.id FROM `products` p INNER JOIN `product_meta` pm ON pm.id_product = p.id AND pm.metaname = 'featured' AND pm.metavalue = '1' WHERE p.city IN ( SELECT dm_city.name FROM `destination_parent` dp1 JOIN `destinations` d_region ON d_region.id = dp1.id_child AND d_region.type = 27 JOIN... |
| 11 | 4.78 ms | SELECT DISTINCT pd.id_product FROM product_destination pd INNER JOIN products p ON p.id = pd.id_product INNER JOIN suppliers s ON s.id = p.id_supplier WHERE p.status = ? AND s.status = ? AND ( pd.id_destination = ? OR pd.id_destination IN ( SELECT id_child FROM destination_parent WHERE id_parent... |
| 12 | 1.99 ms | SELECT * FROM `product_system` WHERE id_product_dotravel IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |
| 13 | 9.3 ms | SELECT id_product, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND metaname = ? AND id_language = ? |
| 14 | 0.71 ms | SELECT *, CONCAT(UCASE(LEFT(name, 1)), LCASE(SUBSTRING(REPLACE(name,'_',' '), 2))) as title FROM `status` WHERE TRUE AND `name` = 'active' AND `group` = 'review_status' ORDER BY `id` DESC LIMIT 0 , 30 |
| 15 | 1.84 ms | SELECT id_product, SUM(rating_overall) / COUNT(*) AS rating_overall, COUNT(*) AS review_count FROM `reviews` WHERE id_product IN... |
| 16 | 0.55 ms | SELECT * FROM `products` WHERE `id` IN (?,?,?,?,?,?,?,?) |
| 17 | 0.47 ms | SELECT *, CONCAT(UCASE(LEFT(name, 1)), LCASE(SUBSTRING(REPLACE(name,'_',' '), 2))) as title FROM `status` WHERE TRUE AND `name` = 'active' AND `group` = 'review_status' ORDER BY `id` DESC LIMIT 0 , 30 |
| 18 | 0.35 ms | SELECT * FROM `type` WHERE TRUE AND `group` = 'sub_product_type' AND `name` = 'group' ORDER BY `id` DESC LIMIT 0 , 30 |
| 19 | 0.64 ms | SELECT id_product, id_language FROM `sub_product` WHERE id_product IN (?,?,?,?,?,?,?,?) AND type = ? ORDER BY id_language ASC |
| 20 | 0.29 ms | SELECT * FROM `languages` WHERE TRUE AND `id` = 1 |
| 21 | 0.64 ms | SELECT id_product, seo_url FROM `seo` WHERE id_product IN (?,?,?,?,?,?,?,?) AND id_language = ? |
| 22 | 1.65 ms | SELECT id_product, metaname, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?,?,?,?,?) AND metaname IN (?,?,?,?) AND id_language = ? |
| 23 | 2.29 ms | SELECT pp.* FROM `product_photos` pp INNER JOIN ( SELECT id_product, MIN(show_order) AS min_order FROM `product_photos` WHERE id_product IN (?,?,?,?,?,?,?,?) GROUP BY id_product ) first ON pp.id_product = first.id_product AND pp.show_order = first.min_order WHERE pp.id_product IN (?,?,?,?,?,?,?,?) |
| 24 | 0.7 ms | SELECT id_product, SUM(rating_overall) / COUNT(*) AS rating_overall, COUNT(*) AS review_count FROM `reviews` WHERE id_product IN (?,?,?,?,?,?,?,?) AND status = ? GROUP BY id_product |
| 25 | 0.75 ms | SELECT s.id_product, MIN(pr.price) AS min FROM `product_prices` pr INNER JOIN `sub_product` s ON s.id = pr.id_subproduct INNER JOIN `age_group` a ON a.id = pr.id_agegroup WHERE s.id_product IN (?,?,?,?,?,?,?,?) AND pr.price > 0 GROUP BY s.id_product |
| 26 | 0.41 ms | SELECT * FROM `type` WHERE TRUE AND `id` = 1 ORDER BY `id` DESC LIMIT 0 , 30 |
| 27 | 0.35 ms | SELECT *, CONCAT(UCASE(LEFT(name, 1)), LCASE(SUBSTRING(REPLACE(name,'_',' '), 2))) as title FROM `status` WHERE TRUE AND `id` = '23' ORDER BY `id` DESC LIMIT 0 , 30 |
| 28 | 0.59 ms | SELECT * FROM `type` WHERE TRUE AND `id` = 2 ORDER BY `id` DESC LIMIT 0 , 30 |
| 29 | 2.03 ms | SELECT id_product, metaname, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?,?,?,?,?) AND metaname IN (?,?) AND id_language = ? |
| 30 | 1.94 ms | SELECT id_product, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?,?,?,?,?) AND metaname = ? AND id_language = ? |
| 31 | 0.98 ms | SELECT s.id_product, MIN(pr.price) AS min FROM `product_prices` pr INNER JOIN `sub_product` s ON s.id = pr.id_subproduct INNER JOIN `age_group` a ON a.id = pr.id_agegroup WHERE s.id_product IN (?,?,?,?,?,?,?,?) AND pr.price > 0 GROUP BY s.id_product |
| 32 | 1.62 ms | SELECT id_category, COUNT(DISTINCT id_product) AS cnt FROM product_category WHERE id_product IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) GROUP BY id_category |
| 33 | 0.96 ms | SELECT c.*, m.id_language, m.name, m.description, m.seo_title, m.seo_description, m.seo_keywords, m.seo_url, m.img_alt FROM `categories` AS c INNER JOIN `category_meta` AS m on c.id = m.id_category WHERE TRUE AND c.`status` = '32' AND m.`id_language` = 1 ORDER BY `name` ASC LIMIT 0 , 30 |
| 34 | 0.79 ms | SELECT c.*, m.id_language, m.name, m.description, m.seo_title, m.seo_description, m.seo_keywords, m.seo_url, m.img_alt FROM `categories` AS c INNER JOIN `category_meta` AS m on c.id = m.id_category WHERE TRUE AND c.`status` = '32' AND m.`id_language` = 1 AND m.`name` = 'Culture' LIMIT 0 , 30 |
| 35 | 1.39 ms | SELECT DISTINCT id_product FROM product_category WHERE id_category IN (?) AND id_product IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |
| 36 | 0.52 ms | SELECT * FROM `product_system` WHERE id_product_dotravel IN (?,?,?,?) |
| 37 | 1.09 ms | SELECT id_product, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?) AND metaname = ? AND id_language = ? |
| 38 | 0.63 ms | SELECT id_product, SUM(rating_overall) / COUNT(*) AS rating_overall, COUNT(*) AS review_count FROM `reviews` WHERE id_product IN (?,?,?,?) AND status = ? GROUP BY id_product |
| 39 | 0.42 ms | SELECT * FROM `products` WHERE `id` IN (?,?,?,?) |
| 40 | 0.49 ms | SELECT id_product, id_language FROM `sub_product` WHERE id_product IN (?,?,?,?) AND type = ? ORDER BY id_language ASC |
| 41 | 0.51 ms | SELECT id_product, seo_url FROM `seo` WHERE id_product IN (?,?,?,?) AND id_language = ? |
| 42 | 0.82 ms | SELECT id_product, metaname, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?) AND metaname IN (?,?,?,?) AND id_language = ? |
| 43 | 0.8 ms | SELECT pp.* FROM `product_photos` pp INNER JOIN ( SELECT id_product, MIN(show_order) AS min_order FROM `product_photos` WHERE id_product IN (?,?,?,?) GROUP BY id_product ) first ON pp.id_product = first.id_product AND pp.show_order = first.min_order WHERE pp.id_product IN (?,?,?,?) |
| 44 | 0.46 ms | SELECT id_product, SUM(rating_overall) / COUNT(*) AS rating_overall, COUNT(*) AS review_count FROM `reviews` WHERE id_product IN (?,?,?,?) AND status = ? GROUP BY id_product |
| 45 | 0.6 ms | SELECT s.id_product, MIN(pr.price) AS min FROM `product_prices` pr INNER JOIN `sub_product` s ON s.id = pr.id_subproduct INNER JOIN `age_group` a ON a.id = pr.id_agegroup WHERE s.id_product IN (?,?,?,?) AND pr.price > 0 GROUP BY s.id_product |
| 46 | 1.39 ms | SELECT id_product, metaname, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?) AND metaname IN (?,?) AND id_language = ? |
| 47 | 0.98 ms | SELECT id_product, metavalue FROM `product_meta` WHERE id_product IN (?,?,?,?) AND metaname = ? AND id_language = ? |
| 48 | 1 ms | SELECT s.id_product, MIN(pr.price) AS min FROM `product_prices` pr INNER JOIN `sub_product` s ON s.id = pr.id_subproduct INNER JOIN `age_group` a ON a.id = pr.id_agegroup WHERE s.id_product IN (?,?,?,?) AND pr.price > 0 GROUP BY s.id_product |
| 49 | 0.77 ms | SELECT a.id, a.title, a.seo_url, a.description, a.id_adminuser FROM `article_destination` ad INNER JOIN `articles` a ON ad.id_article = a.id WHERE ad.id_destination = 1 ORDER BY a.title ASC |