“Book your flight from another country and it will be cheaper” is one of the most repeated pieces of travel advice on the internet. It is also rarely tested properly, because a fair test is harder than it looks. Prices move by the minute, currencies change with the country, and a site may show one thing on a search page and another at checkout.
So we ran one. On 24 September 2026 we loaded the same airline fares and the same hotel listings from six countries, through residential IP addresses, changing nothing but the country of the exit. This piece reports exactly what we saw, what the published research says, and, just as important, the parts of the price we could not reach.
Key takeaways
- Airline fares did not change with our exit country. Across 72 requests to Ryanair’s public fare data and six loads of its real booking page, every country saw the same prices for the same flights.
- Currency followed the departure airport, not us. A Dublin departure priced in euros and a London departure in pounds from every country.
- Booking.com’s public “from” prices did not change either. Ten Paris hotels showed identical prices in all six countries, in both rounds. The display currency followed the browser’s language, not the IP.
- The hotel prices most likely to vary were out of reach. Booking.com lets hotels offer Country Rates visible only to visitors from a chosen country. Our automated browser could not get to dated search results, where those rates would appear.
- This matches most published research. Studies of airline sites have mostly found no systematic location-based pricing, while studies of hotel booking platforms have found real but limited differences.
How we tested
The principle was simple: hold everything constant except the country the request appears to come from.
| Setting | Value |
|---|---|
| Date of test | 24 September 2026, main runs between 11:29 and 12:03 UTC |
| Exit countries | United States, United Kingdom, Germany, France, India, Brazil |
| Network | Shifter residential gateway, country selected per session |
| Exit check | In every main run, the session’s location was confirmed before loading travel pages; all matched the requested country |
| Airline | Ryanair: public fare data for three routes on 10 November 2026, plus the real flight selection page for Dublin to London Stansted |
| Hotels | Booking.com: the public Paris city page in British English, reading the “Price from” figure for each listed hotel |
| Repeats | Two rounds, countries in shuffled order, requests spaced by several seconds |
| Behaviour | Logged out, public pages only, no bookings, a small number of requests at a slow pace |
The exits were ordinary home connections. In the United States, for example, sessions landed on Comcast and Charter; in the United Kingdom on BT; in Germany on Deutsche Telekom. Within each country, a sticky session kept the page and everything it loaded on a single IP address, so a site saw one consistent visitor rather than a rotating crowd.
The comparison itself is just the same request, sent from different countries:
import json
import urllib.request
URL = ("https://www.ryanair.com/api/farfnd/v4/oneWayFares?departureAirportIataCode=DUB"
"&arrivalAirportIataCode=STN&outboundDepartureDateFrom=2026-11-10"
"&outboundDepartureDateTo=2026-11-10¤cy=EUR")
def price_from(country, username, password):
proxy = f"http://{username}-country-{country}:{password}@p.shifter.io:443"
opener = urllib.request.build_opener(urllib.request.ProxyHandler({"https": proxy}))
with opener.open(URL, timeout=45) as r:
fare = json.loads(r.read())["fares"][0]["outbound"]["price"]
return fare["value"], fare["currencyCode"]
for country in ["us", "gb", "de", "fr", "in", "br"]:
print(country, price_from(country, "customer-USERNAME", "PASSWORD"))
What we found: airlines
Ryanair publishes its lowest fares through a public data endpoint, so it allows a clean comparison. We requested three routes for 10 November 2026 from each country, once with the currency fixed to euros and once without, in two rounds.
| Route | Price seen from all six countries | Currency |
|---|---|---|
| Dublin to London Stansted | €19.99 | EUR |
| Dublin to Barcelona | €40.99 | EUR |
| Milan Bergamo to London Stansted | €14.99 | EUR |
| London Stansted to Dublin, currency not specified | £17.99 | GBP |
All 72 requests succeeded, and there was no variation by country at all. When we left the currency out, it followed the departure airport: euros from Dublin and Bergamo, pounds from London, whichever country we appeared to be in.
A data endpoint is not the whole story, so we also loaded Ryanair’s real flight selection page in a full browser from each country. The fare strip for the days around 10 November, and the fares for each flight on the day, were identical in all six. One UK load failed with a connection reset during a pilot run and loaded normally on retry; we saw no other errors.
Ryanair’s booking endpoint behind the next step of the flow refused our direct requests from every country alike, so we did not measure checkout. Fees added at payment, such as those for particular payment methods, are outside this test.
What we found: hotels
Booking.com is where we expected to see differences, for a reason Booking.com itself documents. Its partner pages explain that hotels can offer Country Rates, discounts that “are only visible to guests using our platform from an IP address that matches the country you’re targeting.” In other words, location-based hotel pricing exists by design.
We could not reach it. From every country, our automated browser was redirected from a dated search to Booking.com’s general Paris page, where the search box’s date picker did not respond. Dated results, the only place a Country Rate would show, stayed out of reach. That kind of quiet degradation is common with automated visits to heavily protected sites, and it is a good example of the silent failure rate: the page loaded successfully, and it was not the page a person would have seen.
What the Paris page did show was a “Price from” figure for each of ten featured hotels. Across six countries and two rounds, twelve loads in all, the list was identical: the same hotels, in the same order, at the same prices, from £192.72 for the least expensive to £468.82 for the most.
The currency told its own story. Every load showed pounds, because the browser was set to British English. Switching the browser’s language to US English on the same page showed US dollars. Display currency followed language settings, not the IP address, which is worth knowing before attributing a price difference to location. A different currency is not a different price.
What the published research says
Our result is one day, six countries and two sites. The wider research is broader, if older, and it points the same way.
| Study | What it measured | Finding |
|---|---|---|
| Vissers et al., HotPETs 2014 | 25 airline websites over three weeks, from New York and Leuven | No systematic price discrimination: “Nearly all airlines show similar prices for both locations.” One site’s higher prices were explained by a national tax |
| Steer Davies Gleave for the European Commission, 2012 | 100 airline and travel agent websites | 74% did not vary prices by place of residence; where they did, usually through service or payment fees, “typically €5-15” |
| European Commission review, 2020 | Mystery shopping in 2019 | 31.9% of airline websites showed different prices to cross-border shoppers, 11.6 points lower than in 2015 |
| Hupperich et al., CODASPY 2018 | Hotel booking platforms, requests from several countries | Location-based price adjustment confirmed on some platforms, “though prices seem to vary within a limited range only”; one platform treated all countries the same |
| Which?, January 2023 | Consumer test of flights booked from different countries | ”flight prices don’t change very much when booking in different countries” |
The pattern is consistent. Airline fares rarely move with the visitor’s location; where cross-border differences appear, they tend to come from fees, payment methods, taxes and currency. Hotel platforms are different, because hotels themselves can target discounts by country, and that shows up as real but modest variation.
What this means
For travellers, the popular advice is weaker than it sounds. On the airline side, a different country is unlikely to change the fare, and a different currency or payment method can cost more than it saves. On hotels, a Country Rate may exist for your own country as much as for any other. Which? also cautions that booking through another country can be a legal grey area.
For travel and e-commerce teams, the lesson is about measurement design. If you compare prices across markets, control for currency, language, taxes and fees before concluding anything about location, and check that each load returned the page a real visitor would see. The collection side of that work, from country and city targeting to sticky sessions, is covered in scraping flight and hotel prices and residential proxies for travel-fare data.
For press, the honest headline is narrower than “prices depend on where you are.” Location-based pricing exists in travel, most visibly as hotel discounts targeted by country. Across the airline and hotel prices we could reach, we saw none.
The limits of this test
A single test should state what it did not cover:
- One airline and one hotel platform, on one day, in six countries.
- No dated hotel search results, so no Country Rates, which are the most likely source of location-based hotel prices.
- No checkout totals, so no payment fees, taxes applied at booking, or member-only prices.
- No mobile app prices, which some platforms set separately.
Each of those would be worth a follow-up. What we can say is that, holding everything else constant, the price data we could reach did not change with the country we appeared to be in.
Sources and references
- Booking.com for partners, Country Rates.
- Vissers, Nikiforakis, Bielova and Joosen, Crying Wolf? On the Price Discrimination of Online Airline Tickets, HotPETs 2014.
- Steer Davies Gleave for the European Commission, Price transparency provisions in Regulation 1008/2008, January 2012.
- European Commission, Short-term review of the Geo-blocking Regulation, staff working document, 30 November 2020.
- Hupperich, Tatang, Wilkop and Holz, An Empirical Study on Price Differentiation Based on System Fingerprints, ACM CODASPY 2018.
- Which?, Can a VPN get you cheaper flights, hotels and holidays?, 9 January 2023.
- Shifter, Residential Proxies geo-targeting and sessions documentation.