Portugal and Spain

We traveled to Portugal and Spain from August 13 to August 24, spending 5 nights in Porto and 4 nights in Barcelona.

| Photos | Porto | Barcelona | Costs |

Booking and Planning

I found the LAX-MAD flight via ThriftyTraveler’s alerts in August of last year. August didn’t feel like the ideal time to visit Spain (it’s too hot) and we originally planned to travel in May. But I wanted to set an east coast trip in May before points booking with AA went up in price. And also, of the few hotels in which I can use Amex Hilton Aspire credit card’s resort credits, there is a hotel in Porto that takes it. I thought we could combine a stay there with this trip. 

I booked us LAX-Madrid-Porto in Iberia business, but had the unforeseen hiccup that we needed to stay home on May 23 for a family event. Since our hotel stay on the night of August 23 would have been free through Hilton’s fifth night free benefit, this was not price-optimal.  We booked an August 23 Barcelona-Madrid-LAX Iberia PE return flight with Avios (using British Airways to book to get a better cancellation policy).

Then, 1-2 months before the trip, I started seeing return flight alternatives in J saver rate on American Airlines. There were lots of options, routing through MIA, PHL, JFK, DFW. We booked MIA, then PHL, but then I figured that PHL-LAX is not likely to have frequent service to LAX so if there is one disruption with the flight schedule we could end up stranded for half a day or more. So I chose the DFW option with a 6 hour layover there (leaving DFW at 9:30pm), hoping we could standby for the 3:30pm, 5:30pm, 6:30pm options. Although, two days before the departure, we changed again for a Miami layover.

I also briefly considered replacing the LAX-MAD-OPO flight for a LAX-JFK-OPO on Delta J to try out their JFK lounge but we ultimately decided against it as JFK-OPO doesn’t give nearly enough time to sleep during the flight. 

Flight LAX-Madrid-Porto

Boarding in LAX

I think Iberia doesn’t allow you to enter your TSA Precheck KTN number during the online booking. It seems you have to request it through customer support..? I can’t remember if I did or not. Maybe when I booked it in August of 2025 and immediately tried to add KTN, they said that it was too far away and couldn’t handle it. And then maybe I forgot. When we showed up at the airport, we found at the security checkpoint that our tickets didn’t have Precheck. But we happened to have Clear+ and breezed through regular security. This is the one time where it came in handy at LAX. We camped out behind the reclining chairs in the Qantas lounge until two people got off, and took a nap there. 

Our flight was delayed by 30 minutes, but Iberia only updated the departure time on our boarding pass, keeping the boarding time the same at 4:50pm. Apparently when the arriving aircraft is delayed, the airline expects the departure to be delayed but they still try to keep the boarding time, so sometimes you show up on time to board and they barely manage to clean the aircraft before boarding starts. So we went there at 4:50pm, but the boarding was nowhere near starting. The arriving aircraft had gated 10 minutes ago, and the passengers were deplaning. The airport was pretty hot. At 5:30pm, they finally lined us up to board. They announced that they were not taking digital boarding passes, paper only. (What? Why) so we got one through the gate agent. Then we just stood there and waited by the gate, then waited outside the jetbridge, then waited inside the jetbridge.. while they were still cleaning the plane. I saw the crew rolling out big balls of laundry down the stairs.

Iberia A350

The food was fine. We got antipasti, burrata, salmon, and chicken breast. 

The seats are the old school ones similar to Asiana’s A380 J layout. But it has more storage than Asiana. The footwell was on the small side and uncomfortable. I think even numbered window seats have about 20% more width in the footwell because it opens to the side, towards the wall. We should get those next time. Some of the seats make a high pitched whirring noise as you recline them.

The in-flight map had open source license acknowledgments – OpenStreetMap, “modified Copernicus Sentinel data”, etc which is pretty cool. Their hardware is so slow though. And at first I got the impression that you can’t move the map at all, it’s just a view of the entire globe with a line showing the flight’s trajectory, which looked super uninteresting. For some reason, later on I was able to drag around in “Aircraft view”. They also have options called “above cam” or “chase cam”, but they aren’t camera feeds from outside the airplane like Air France’s A350. They are just satellite photo data (pretty high res) pretending that you are looking out the window. Okay… that’s unusual.

Connecting in Madrid’s Terminal 4S

When booking the flights, we originally had a two-hour layover in Madrid to transfer to Porto. I thought two hours would be fine, especially considering I had seen options for even shorter one-hour layovers—which felt entirely too tight. I knew there was a chance our inbound flight might land early, giving us a comfortable two-and-a-half-hour buffer. Ultimately, we landed with about 1 hour and 50 minutes to spare, right on schedule.

Gemini said that it would be a little tight but doable. We just need to keep walking to our gate. However, the airport navigation was super confusing right from the start.

The Iberia app lets you add the boarding pass to my Google Wallet. This boarding pass listed our departing gate as 46S.

At LAX, they told us that we couldn’t board with the digital one so we got one printed. They printed us the MAD-OPO flight too. In that one, there was no gate listed but it said “K Zone”.

As we were landing, the screens showed how to use their passport control system. To go the kiosks, scan passport and get a photo and fingerprints taken, answer to some questions on the screen, then walk to the automatic security gate and scan your passport again and that’s it! Ok good got it.

We were the third person to get off the plane, along with I assume were other anxious connecting passengers. At the end of the jetbridge, we were stuck a few minutes as the grond crew argued among themselves about which of the two hallways was the one that was supposed to be used by the deplaning passengers. As we walked inside the airport, we saw a couple dozen kiosks lined up with signage saying “Non EU Citizens register here”. But no one was using them. This must be the ESTA system that the EU planned to roll out last year but had been getting delayed multiple times. Everything in their system is already pointing at the ESTA, but it’s not implemented yet. (Currently delayed until end of 2026)

Then there were lines on the ground. Pink for non-EU Citizens, blue for EU Citizens. We followed the pink line.. And though the line ended at a point and there was a security checkpoint there. Is this passport control? But it looks empty? We entered it and showed the boarding pass. They told us we need to keep going towards the “K Gates”. Okay.. shortly after the pink lines resumed.  There were many hallways and doors and stairs and it was very easy to lose track of the pink lines, which were not always showing up. They sometimes disappeared and then you had to look for the signage.

It was very confusing what this “K Zone” was supposed to be. Looking at how it unfolded, it seems that they cluster gates into groups and give them Zone names.

When we finally reached immigration and passport control. There were a dozen lanes and a total of 100 people lined up. We showed our boarding passes to the airport worker who directed us to the one lane to the right painted blue, that read “urgent connections”. Some passengers like us and airplane crew members were going through this line. Phew. We were through passport control in 10 minutes. This was supposed to be the biggest time sink, so we were good so far. 

Then there were some confusing signage but we managed to take the escalators down and find the underground monorail that connects T4S with T4. 

After arriving at 4S, we had to walk through a duty-free shopping area with loud music playing. The signage was appearing and disappearing randomly. We checked the flight display boards, which now listed our gate as J64.

As we hunted for the K Zone, signs split off: one pointing toward Gates J50–J59 and another to the right for Gates J80–J89. Neither sign posted range options that included 64 (it was either 50–59 or 80–89), nor did it match the original digital pass listing of 46.

We decided to just follow the J50–J59 direction, and eventually, the concourse opened up into a market-like setup where each booth served as a gate. Out of nowhere, signs finally appeared for Gates 60–70. We made it to the gate as our group was standing to board soon.

Boarding and paying for “Business Class”

When we reached our gate, we noticed a regular-sized narrow-body plane hooked up to the jet bridge outside. Strangely, staff announced that we would be taking a shuttle bus to board our plane instead.

Looking at the gate setup, the jet bridge path was completely blocked off—a total “ghost tunnel” that hid where it went—forcing everyone down a flight of stairs to the tarmac bus. The bus drove us out to a separate section of the apron reserved for smaller CRJ-1000 regional aircraft. We knew this in advance. The airplane looked much smaller than I expected though.

When booking the LAX–MAD–OPO route, I had been offered various class upgrades for the Madrid-to-Porto segment (Business, Economy, Economy Comfort with extra legroom, etc.). Expecting a long, tiring journey, I opted to spend the extra ~10,000 Avios to book us into Business Class for the Porto segment as well, expecting a standard “Eurobiz” setup (a 3×3 layout with the middle seat blocked out).

The way in which this flight was “business class” is puzzling.

Because the plane is 2×2, there is no middle seat to block. Which makes sense. The first five rows were separated by a small curtain, but the seats themselves had the exact same width and legroom pitch as standard Economy. So what’s the point of the curtains.. just to give you a sense of getting something.

Because the aircraft was so small, gate agents required every single passenger to gate-check their carry-on suitcases, leaving people with only their personal item. No explanation. Just gate checking everyone and putting a little tag on it.

When agents saw our boarding pass, they tagged our suitcases with grey Priority tags. We assumed this meant our bags would hit a baggage carousel first upon arrival.

Watching the ground crew load the plane felt like watching baggage get packed into the underbelly of a charter bus—they were just standing right there handing bags up manually.

The flight itself was tiny and super uncomfortable, but it was only 45 minutes, so it doesn’t matter much.

Upon landing in Porto, there was no indoor baggage carousel. Instead, qwe walked down the mobile air stairs directly onto the tarmac. Ground workers got the suitcases unloaded and just placed them on the tarmac for each passenger to pick up their own as we left. The “Priority” luggage service consisted entirely of ground workers placing our tagged bags about three feet closer to the walkway as we stepped off the plane so we could grab them ourselves before getting on the arrival bus.

I am at a loss here. What exactly was Iberia selling by selling a separate economy and business class ticket. Basically all seats were economy.

Flight Porto-Madrid-Barcelona

Vueling flies this route nonstop, and they are a LCC subsidiary of Iberia and they can be booked with Iberia avios. I was planning to book that one, but Vueling turned out to not be selling this flight on points for the specific day that I needed to fly (Wednesday August 19). After weighing the cash options, I opted for Porto-Madrid-Barcelona on Iberia. I booked Basic Economy with points, but after linking my AA Plat/OneWorld Sapphire status to the booking it let me choose seats, luggage (which we didn’t need anyway), and lounge access.

We got very lost walking from the gates to Dali, even though I was closely following its location on Google Maps. (Google Maps tends to have the accurate locaiton of lounges inside the airports). It’s supposed to be in the center… but there was no signage to Dali, only to the Aena Lounge. Turns out that they only have signage to Dali coming from security to the lounge, not from the gates to the lounge. 

We were impressed with the brunch food in Madrid’s Iberia Dali Lounge. Tortilla de patatas, sandiwches, jamón, empanadas, an asian fusion soy sauce-seaweed rice, breads, fruits, they were great. And towards lunchtime, they even put out a full tray of Haagen Dasz icecreams. We grabbed one on the way out. The lounge felt pretty hot though, nowhere seemed to have proper AC, including the bathroom. I could see on the display boards that they were advertising their nap room with 8 beds and children’s playroom with toys.. And Xbox consoles. I HAD to go check out the xboxes. I didn’t see the toys (maybe there were multiple playrooms?) but I saw two children absolutely monopolizing the two Xbox consoles, complete with a 40-inch curved screen monitor. But no wireless controllers. I saw another passenger take a nap lying sideways in the oversized red couches, and did the same for ten minutes. I made a makeshift pillow with my jacket and it was pretty comfortable.

When we boarded the A320 for Madrid-Barcelona, they tagged our luggage with orange, which apparently means “this is the one luggage that is allowed to go to the overhead bins”. When we tried to put both a backpack and suitcase, the FA stopped us saying that we are allowed to only put one item in the overhead. We kept it low profile and later loaded it when the FA was distracted with other passengers. When later we heard the FA talk with some last passengers about there not being anymore overhead bin space.. I was like oops sorry.. but not sorry welcome to America.. in Madrid.

Flight Barcelona-Miami-Los Angeles

I experimented with this a lot and probably booked and rebooked 20 flights for this return flight. Our ideal travel length was 10 nights, to maximize the Hilton 5th night free benefit. But this meant that we would be returning on Monday August 24th, which has two disadvantages: first, it’s just the day before Christine returns to work on Tuesday. That’s something we do on trips often but still a factor. Second, we have a family event on Sunday August 23 – so it would be preferable that we stay around. After some searching around, I booked a BCN-MAD-LAX flight on Iberia PE, landing in LAX at 4pm. So it would give us just enough time to get back home for the family dinner. Switching to a J option that would become available later was also an option.

Rebooking, rebooking, rebooking

Many flight options became available during the weeks leading up to the flight, as late as the day before. There was BCN-AMS/CDG-LAX on AF/KLM PE at 40k Air France miles, and many combinations of BCN-MIA/PHL/DFW/JFK, or BCN-LHR-LAX at 70k-85k Alaska miles. There was a BCN-LHR-LAX at 57.5k AA+$130, which was probably the cheapest. Of the LHR-LAX on British Airways options, only the ones with a 6+ hour layover in LHR had lower fees when booked on AA or AS. (Or else it would be $1,000 in fees per person in J. I saw BA F options with $1,300 fees as well pop up.)

I needed to book this flight with Alaska miles to secure Alaska Gold/OneWorld Sapphire status for 2027. I’ve had AA Plat/OW Sapphire for two years and it has been super useful, from foreign airline lounge access and basic economy benefits to AA/AS MCE selection. A long transcon flight is alright with extra legroom. 

Two weeks before our trip, I found a flight in AA J transiting through Philadelphia and landing in LAX at 10:40pm. Christine was okay with switching to Monday after hearing that we had J options. Then, mid-trip, I switched to a flight with a 5-hour layover in Dallas, hoping that we could standby for an earlier Dallas-LAX flight (either in First or Economy) once at the airport. If everything aligned well, we could possibly get on an alternative flight just an hour after landing, which would get us to LAX by Monday 4pm, which is preferable to landing at 10:40pm. I felt that a transit through one of AA’s hub airports like MIA or DFW would keep our options more flexible vs transiting at somewhere like PHL, which has fewer flights to LAX. 

After dealing with the heatwave in Barcelona on Wednesday and Thursday, I had a feeling that we wouldn’t be very rested when we return, and possibly deal with a long recovery and loss of work time. So we changed plans again and decided to travel on Sunday. After switching a couple of times, I settled for an option through Miami at 70k+$45 per person. 

Between a 3.5-hour layover and 2-hour layover in Miami, I chose the 2 hour. This should be enough time in our situation because of a combination of favorable factors. We were flying in J, had Global Entry, TSA Precheck, Clear+, and had no checked luggage – just a backpack and carry-on suitcase. Given these conditions, it should take us 30 minutes to exit and re-enter security and get to our gate. The airplane arrived an hour earlier than scheduled in Miami so we were set.

Passport Control in Barcelona

We took off slightly late from our hotel, and got to the airport 2.5 hours before our 12:20pm departure. Which should have been plenty of time… but even after Fasttrak, the passport control line had almost 200 people in line and took forever, although the line moved very fast and all we had to do was scan our passport and get our photos taken in the kiosk. Apparently, there are supposed to be (post ETIAS?) three lanes – EU Citizens, The ~15 Passport Agreement Countries which includes US and Korea, and the rest. But according to Gemini (is this even accurate?), the airport sometimes has three lanes and sometimes only two. This time, there was only a EU lane and a non-EU lane. Every passenger turning the corner after McDonalds to find the end of the 200-person lane was shocked. It was fun watching their reactions. A couple turned around the corner, saw how long the line was going, and the woman covered her mouth and couldn’t stop laughing in shock. The guy proffered, “oh fuck”.

By the time we reached the gates, we had 15 minutes before boarding started at 11:30am. I had been sweating a lot going through passport control in the hot airport, and really wanted a shower. But the Miro Lounge was 5 minutes in the opposite direction of our gate.  I figured I could still make it, and had Christine go ahead to the gate and I rushed to the lounge. It only had 3 shower rooms and they were still cleaning one, so I got a wait card and 5 minutes later they called my turn. 

I quickly showered and changed to new clothes as Christine was nervously messaging me that somehow boarding started ten minutes earlier than scheduled and when I finally got to our Gate E86, Group 5 was boarding and they were showing a “Last Call” sign on the display board. (Even though the actual last call happened 20 minutes later) Turns out that AA decided to start boarding sooner because we had to get on a shuttle bus for 5 minutes to reach our airplane. Hey, it was worth it. (Despite Christine’s anxiety). My skin was not itchy and I had a very fresh flight.

Flight and Lounge

Flying on the AA 772 J was comfortable as usual. The seat cushions felt a tad bit stiffer than the AA 789 seats, but the layout is very convenient and there’s plenty of storage. Enough for a 13” laptop, ipad mini, phone, USB-C rapid charger, game controller, mouse, water bottle, and noise-cancelling headsets. I slept 3 hours, then did some blogging of the trip, played XCOM on the tablet, and played Brotato and the demo version of Elliot: Millenium Tales on the laptop with the controller. I was feeling a bit out of it towards the 5th hour, and found that their snack bar between the forward and middle J cabins had water bottles, chips, and chopped fruits in little bowls. I chomped the fruit bowl whole into my mouth as I couldn’t find spoons. I felt immediately better and rehydrated afterwards.They passed out gyoja dumplings before landing, which the FA was having a real hard time pronouncing for some reason. “Would you like some gyoja Kyoto? They are dumplings.” Maybe their crew training emphasized having to say out loud “gyoja” to highlight that it’s fancy eating.

We arrived 50 minutes ahead of schedule to Miami. We exited and re-entered security through AA’s transfers line and were in the Flagship Lounge in less than 30 minutes. I don’t know why but I was a bit on the edge yelling out “where is my laptop??!?!” as we were going through the non-precheck security in the transfers section. My laptop was still in the tray but I couldn’t see it with the tray’s lips. 

The Miami Flagship Lounge had a decent buffet and an a-la-carte dining section. We were too full so we just had some salads and their crab clam chowder. There was an ice cream station where an ice cream “bartender” scoops the ice cream for you. I got one and sprinkled it with all the toppings that I could think of. An hour later when I passed by the area, I noticed that the ice cream station closes at 5pm. I had made it just in time!

Apparently there were some thunderstorms that could have delayed our MIA-LAX connection, but they had cleared out. After takeoff, we saw some thunderstorms pretty up close! They sometimes lit up the entire sky above the clouds.

As we were taxiing towards takeoff, we heard the FAs talk to each other that a passenger had vomited a lot. Apparently she wanted to stay on the flight, but after weighing that English communication between them was not fully reliable, they decided to call the medical crew to disembark. So she stayed at the airport and we took off.. and apparently her family stayed on the flight? Strange.

Right behind me was another passenger who sounded mentally unstable. She was on the phone the entire boarding time talking with her work colleague, then talking to her boyfriend and making baby noises. She had hilariously exaggerated expressions and a fake-sounding high pitch, she reminded me of the Keeley Jones character from Ted Lasso.

After the medical crew took the vomiting passenger, the FAs seemed to want to figure out whether the unstable passenger was likely to cause trouble mid-air and whether this was a good opportunity to get her to disembark if needed. At some point, she started crying. A FA approached her and asked her if she was alright and whether she would prefer to get off the flight. She said no she’s fine, her father passed away, and that she needs to get away to Los Angeles. Then she started complaining on the phone that first class is not nice, they don’t treat her right, and that in economy FAs were nicer. Ultimately she stayed, curled up on her seat, sleeping uneventfully for most of the flight.

Parking around LAX

In previous years this would have been unthinkable to me but we decided to park near LAX for this 10-night trip. There were a range of options from $80 to $300 for the entire 12-day period. They could be clustered in these groups:

  1. Hotels on Century Blvd: the most expensive and run shuttles every 15 minutes.
  2. Parking structures on Century: some run shuttles, some don’t, but you could in theory park here and walk a bit and use the hotel’s shuttle if you can fake it til you get there.
  3. Hotels and parking structures in El Segundo: some pretty cheap ones are here and shuttles run every 30-60 minutes and for LAX pickup only upon request. Some are pretty close to the Metro K Line Mariposa Station.
  4. Some parking lots and structures spread in the general vicinity of LAX. Usually have no shuttle, but some are by a Metro K Line or C Line station. Can be very cheap, like $6/day.
  5. Metro Station parking: this can be the cheapest, apparently. I haven’t yet been able to find detailed information about them.

We parked at Sonesta Select LAX El Segundo, which belongs to the third category of El Segundo locations, for $100. When headed to LAX to park here, we originally wanted to stop by Ktown for lunch and continue to the hotel parking, but we were running late so we went straight to the hotel, arrived at 12:50pm, and got on the 1pm shuttle. Their shuttles run on a dual schedule:

  • 5:30 AM – 1:30 PM: every 30 minutes (on the hour and half-hour).
  • 1:30 PM – 12:00 AM: Hourly (runs at 1:30 and 2:30, then 3pm, 4pm, and so forth).

Parking at LAX was pretty straightforward. Returning from LAX to the parking lot was pretty hard. After the delays, we landed at 9:40pm on Sunday night. When we exited the hotel shuttles section, the lanes were chaotic. There were many shuttles coming to pick up airline crew. Two lanes were being used by shuttles to pick up passengers, and even that was not enough, so there was a lot of honking and shuttles trying to push their way in. Traffic was at an all-time high. The hotel parking said that we could call, text, or whatsapp message them.

I texted them at 10:10pm, as we were exiting the plane. As there was no response, I called them at 10:27pm, and they said that they would send a shuttle and it would arrive in 15 minutes. We waited, but the shuttle was not showing up. I figured it had to do with the traffic. At 10:55pm, a DoubleTree El Segundo Shuttle showed up. This hotel is across the street from our Sonesta Select parking. The driver approached us and said that they were picking up Sonesta Select passengers. We were dropped off at the hotel parking lot at 11:05pm, and we were home by 11:35pm. All in all it was okay-ish. I’ll continue experimenting with different parking options for future trips. I’m very tempted to try one of the cheaper lots near a Metro Station. Once the LAX People Mover starts working (if ever?), it should be a very short 20-minute travel on the APM->K/C Line. Without the People Mover, maybe like 45 minutes.

Costs

The trip cost us $2,600 and 427k credit card points. The points covered flights and hotel costs that would have cost $13,000.

  • $330 + 171k Avios for LAX-MAD-OPO in IB J
  • $100 + 16k Avios for OPO-MAD-BCN in IB Y
  • $100 + 115k Alaska miles for BCN-MIA-LAX in AA J
  • $120 BCN-MAD-LAX BA Cancellation Fee
  • $40 + 180k Hilton points for 5 nights in Porto at Boeira Garden Hotel
  • $90 + 240k Hilton points for 4 nights in Barcelona at Hilton Diagonal Mar Hotel
  • $900 Food
  • $260 Ground Transport
  • $400 Expenses
  • $300 Credit Card Fees

Leave a Reply

Your email address will not be published. Required fields are marked *