AI TRAVEL GUIDE

BeforeYouGo

Personalized travel guides, generated by AI.

Lisbon 4 days Couple Medium budget Balanced
Lisbon in 4 Days: Atlantic Coastlines, Sintra Forests, and Green Escapes
Lisbon is one of Europe's rare capitals where you can swim in the Atlantic, hike misty palace forests, and watch the sun sink into the sea — all within an hour of the city center. July puts you right in peak golden-hour season, so lean into Sintra's UNESCO trails and the wild beaches of Arrábida before the crowds hit noon.
🌤 Best time: July is sunny and warm but busy — go early to beaches and parks, everything peaks after 11am
WEATHER
CONDITIONS
Late July in Lisbon is reliably hot, sunny, and dry — classic Mediterranean summer at its peak.
TEMPERATURE
26-35°C (79-95°F) during the day, dropping to 18-20°C (64-68°F) at night
RAINFALL
Virtually zero — July averages 1-3mm of rain for the entire month
EXPECT
Strong Atlantic breeze keeps it more bearable than inland Spain, but UV is intense and midday sun is genuinely harsh.
LOCAL TIPS
TIPPING
Tipping is appreciated but not mandatory — round up the bill or leave 5-10% at sit-down restaurants, nothing at cafes.
SAFETY
Lisbon is very safe, but watch your phone in Alfama tram crowds and on the 28E tram — pickpockets target distracted tourists specifically there.
TRANSPORT
Get a Viva Viagem card and load it with zapping credit — use it for metro, trams, buses, and ferries across the city.
ETIQUETTE
Don't rush your waiter — Portuguese dining is slow and intentional, and flagging someone down repeatedly reads as rude.
WHAT TO PACK
SPF 50+ — sun is brutal
Grippy sandals for cobblestones
Light linen, evenings cool slightly
Reusable water bottle, always
Daypack for beach day-trips
Plug adapter type F
YOUR ITINERARY
1
Palaces, Mist, and Forest
MORNING
Sintra UNESCO Forest Trails and Pena Palace Grounds — Hike the wooded trails around Pena Palace before crowds arrive — the grounds alone are worth it.
4 hours · €14 per person for palace grounds, trails free
LUNCH
Grab a travesseiro pastry and bifanas at Piriquita in Sintra village — a local institution since 1862 in Sintra Vila
~€10-15 per person
AFTERNOON
Cabo da Roca — Europe's Westernmost Point — Stand at the continent's edge on dramatic Atlantic cliffs with zero fencing and full ocean views.
2 hours · Free, bus from Sintra ~€3
DINNER
Back in Lisbon — try bacalhau à brás at Zé da Mouraria, a no-frills local tavern in Mouraria in Mouraria
~€25-35 for two
EVENING
Wander Mouraria's back alleys — Skip Alfama tonight — Mouraria is quieter, more local, and you'll hear live fado drifting from windows.
2
Wild Beach, Turquoise Water
MORNING
Parque Natural da Arrábida Beach Day — Drive or take a tour to Arrábida's limestone cliffs and Caribbean-blue coves — Portugal's most beautiful coastline.
Full day, depart by 8:30am · Rent a car ~€40/day or guided tour ~€35/person
LUNCH
Pack a picnic from Mercado de Campo de Ourique the night before — local cheese, presunto, and fresh bread in Arrábida cliffside
~€15-20 for two
AFTERNOON
Snorkel the Portinho da Arrábida Cove — Crystal-clear water with underwater rock formations — rent snorkel gear from the beach shack for €5.
2-3 hours · €5 snorkel rental, beach access free
DINNER
On the way back — stop in Setúbal for grilled choco frito (fried cuttlefish) at any waterfront tasca in Setúbal waterfront
~€20-30 for two
EVENING
Sunset from Miradouro da Graça — One of Lisbon's best viewpoints — less crowded than Santa Catarina, wine from a nearby kiosk encouraged.
3
City Forest and River Edges
MORNING
Monsanto Forest Park Hike — Lisbon's 1,000-acre urban pine forest — locals jog here, tourists almost never come, trails are genuinely wild.
2.5 hours · Free
LUNCH
Head to LX Factory for Sunday market vibes — grab prego no pão from a food stall on the terrace in Alcântara / LX Factory
~€10-15 per person
AFTERNOON
Tagus River Ferry to Cacilhas and Arreiro do Cacilhas Viewpoint — Take the 10-minute €1.30 ferry to the south bank for dramatic Lisbon skyline views tourists completely overlook.
2.5 hours · €1.30 each way per person
DINNER
Taberna da Rua das Flores — seasonal Portuguese small plates, reservations essential in July in Chiado
~€40-55 for two
EVENING
Cais do Sodré waterfront stroll — Walk the Ribeira das Naus promenade along the river — cool breeze, locals out, completely free and beautiful.
4
Coastal Cliffs and Calm Goodbye
MORNING
Cascais Coastal Bike Trail to Boca do Inferno — Rent bikes in Cascais and ride the flat Atlantic cliff path to the dramatic natural rock arch formation.
3 hours · Bike rental ~€10/day, train from Lisbon ~€2.30 each way
LUNCH
Adega do Gonçalves in Cascais — local workers eat here, cheap arroz de lingueirão (razor clam rice) in Cascais town center
~€15-20 per person
AFTERNOON
Praia do Guincho Wild Beach — Europe's windiest beach backed by dunes and pine forest — raw, dramatic, and five minutes from Cascais by taxi.
2.5 hours · Free, taxi ~€10 each way
DINNER
Back in Lisbon — splurge slightly at Cervejaria Ramiro for fresh seafood, a Lisbon institution since 1956 in Intendente
~€50-70 for two with drinks
EVENING
Final sundowner at Rio Maravilha rooftop — LX Factory's rooftop bar with sweeping Tagus River views — the perfect last-night scene, no tourist in sight.
HIDDEN GEMS
💎
Jardim do Torel — a tiny hilltop garden with a pool and city views that 99% of tourists walk right past in Intendente
💎
Lagoa de Albufeira — a hidden coastal lagoon 30 minutes south of Lisbon where locals kayak and camp, almost no tourists
💎
The miradouro on top of Parking Bairro Alto — climb to the top of the public car park on Rua de São Pedro de Alcântara for a secret rooftop view
WARNINGS
⚠️
Tram 28E is a pickpocket hotspot — hold your phone and bag in front of you or skip it entirely and walk Alfama instead
⚠️
Arrábida beach access is restricted on weekends in summer — check the official quota system and book your car entry slot in advance
LOCAL LAWS
⚖️
Drinking alcohol on public streets is restricted in designated Lisbon zones at night.
⚖️
Drone flying near Sintra palaces and protected landscapes requires prior authorization.
⚖️
Smoking is banned in all restaurant and bar interiors, including outdoor areas attached to buildings.
BOOK YOUR TRIP

Want a personalized itinerary for your own trip?

Plan my trip →
and // quote breakout) — never interpolate untrusted values raw into a script. const DESTINATION = "Lisbon"; // Apply a photo as background with dark overlay function applyPhotoToEl(el, photo, overlayOpacity) { if (!el || !photo) return; const opacity = overlayOpacity || 0.55; el.style.backgroundImage = `linear-gradient(rgba(0,0,0,${opacity}), rgba(0,0,0,${opacity})), url(${photo.url})`; el.style.backgroundSize = 'cover'; el.style.backgroundPosition = 'center'; el.style.backgroundRepeat = 'no-repeat'; el.classList.add('has-photo'); } // Add Unsplash attribution (required by guidelines) function addAttribution(el, photo, className) { const existing = el.querySelector('.' + className); if (existing) existing.remove(); const attr = document.createElement('div'); attr.className = className; attr.innerHTML = `Photo by ${photo.photographer} on Unsplash`; el.appendChild(attr); } // Fetch photos and apply to header + sections async function loadSectionPhotos() { try { const res = await fetch(`/api/photo/${encodeURIComponent(DESTINATION)}`); const data = await res.json(); if (!data.photos || data.photos.length === 0) return; const photos = data.photos; const get = (i) => photos[i % photos.length]; // Header const header = document.getElementById('main-header'); if (header) { applyPhotoToEl(header, get(0), 0.45); addAttribution(header, get(0), 'photo-attr-header'); } // Weather section applyPhotoToEl(document.getElementById('section-weather'), get(1)); // Tips section applyPhotoToEl(document.getElementById('section-tips'), get(2)); // Warnings/laws section const numDays = document.querySelectorAll('.day-card').length; applyPhotoToEl(document.getElementById('section-warnings-laws'), get(3 + numDays)); } catch (e) { // Fail silently — page works fine without photos } } // Fetch a themed photo for each day card using its photo_query attribute function loadDayCardPhotos() { const dayCards = document.querySelectorAll('.day-card'); dayCards.forEach(card => { const query = card.dataset.photoQuery; if (!query) return; fetch(`/api/photo/${encodeURIComponent(query)}`) .then(res => res.json()) .then(data => { if (data.photos && data.photos.length > 0) { applyPhotoToEl(card, data.photos[0], 0.6); } }) .catch(() => {}); // Fail silently }); } // Run both on page load loadSectionPhotos(); loadDayCardPhotos();