Travel fares · Airport retail prices
Airport duty-free and retail price monitoring
Airport retail price monitoring tracks what duty-free shops, airport stores and restaurants charge per airport and terminal, and how pre-order prices online depend on the flight's destination. It is the price side of the airport's largest commercial revenue line.
Pay per GB · No subscription · Prices in EUR, excl. VAT
- €2.00
- per GB on ARC Fast, excl. VAT
- −44%
- at 1 TB (€1.12 / GB)
- 185+
- countries, city targeting
- Never
- expires — no subscription
Written for
- Airport commercial and retail teams
- Travel-retail brand managers
- Duty-free and F&B concession operators
- Consumer and travel journalists
The short answer
- The price depends on where the passenger flies to. Pre-order sites ask for a destination or flight because tax status changes the price; make the destination part of every observation.
- Retail concessions are the largest single source of airport non-aeronautical revenue in most regions: ACI World put them at 23.1% of non-aeronautical income in 2024, food and beverage at 6.3%.
- Compare like for like: the same product code and size, at the same airport, terminal and tax status, against its domestic retail price.
- Most of this data is light catalogue data. The rotating ISP pool covers it; residential exits are for the few sites that vary by visitor country.
The problem
What goes wrong without the right IPs
One product, several prices at one airport
A bottle can carry a duty-free price for travellers leaving the customs area, a duty-paid price for others, an online pre-order price and a member price. Store each with its condition, never as a single product price.
Destination gates the catalogue
Pre-order shops usually ask for the departure airport and the destination or flight number before showing prices. Script that choice explicitly per observation and record it.
Product identity across airports
The same item appears with different names, pack sizes and bundle offers per operator. Match on brand, product line and volume or a retailer code, and keep 'travel exclusive' sizes separate from domestic sizes.
Menus that are images
Food and beverage prices are often published as PDF or image menus per outlet. Plan for document parsing and keep the source file, so a price can be checked against it later.
What to collect
What you can collect
- Airport, terminal and outlet
- Prices and ranges differ by terminal and operator.
- Destination or tax status
- Duty-free, duty-paid or tax-free changes the price of the same item.
- Product, brand, size and retailer code
- Matching key across airports and against domestic retail.
- Shelf price and pre-order price
- Reserve-and-collect discounts are part of the pricing strategy.
- Promotion and multi-buy
- 'Two for' and spend thresholds change the effective unit price.
- Domestic reference price
- The comparison passengers and journalists actually make.
- F&B item price per outlet
- Menu price levels by terminal and against city-centre benchmarks.
- Currency and observation time
- Airports often price in local currency only; keep the raw amount.
How it runs
How a collection run works
- 01
Map the shops per airport
List the pre-order site, the store locator and the F&B outlet pages per airport and terminal. Many airports use one operator's shop platform, which means one parser covers several airports.
- 02
Fix the destination per run
For each airport, run the catalogue once per tax status you report: for example an EU destination and a non-EU destination where that changes the price. Store the choice with every row.
One catalogue sweep per airport and destination type13 linesimport httpxPROXY = "http://USERNAME_pool-arcfast_country-de:PASSWORD@proxy.arcproxies.io:8000" # rotating: a new exit per requestDESTINATIONS = {"eu": "CDG", "non_eu": "JFK"} # example destination per tax statusdef sweep(shop, airport: str) -> list[dict]: rows = [] with httpx.Client(proxy=PROXY, timeout=30) as client: for status, dest in DESTINATIONS.items(): for page in shop.category_pages(client, airport=airport, destination=dest): for item in shop.parse(page): rows.append({**item, "airport": airport, "tax_status": status}) return rows - 03
Match products
Normalise brand, line and volume, then match to your reference list and to domestic retail prices. Deduplicating listings covers fuzzy matching for names that differ per retailer.
- 04
Collect F&B menus less often
Menus change seasonally, not daily. Fetch them monthly per outlet, keep the source document and parse item prices from it.
- 05
Report by airport and category
Index prices by category against the domestic reference and against peer airports. Commercial teams use the peer index, brands use the per-product view.
Setup
Recommended setup
Airport shop catalogues are public, light and usually the same from every country. Start on the cheapest pool.
| Plan | Role | Session | Targeting | Price |
|---|---|---|---|---|
ARC Basic Rotating ISP | Default for shop catalogues and menus Category pages and product JSON, many small requests. The rotating ISP pool is the lowest price per GB. | Rotating | Country of the airport | €0.75 / GB €0.59 at 1 TB (−21%) |
ARC Fast Rotating residential | Shops that vary by visitor country For pre-order sites that set currency or range by visitor country, or that hold the chosen flight in a session. Residential exits in the passenger's home market. | Sticky, about 10 minutes per catalogue session | Country, plus city where the airport's metro is listed | €2.00 / GB €1.12 at 1 TB (−44%) |
Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.
Connect
One connection string per market
The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000Swap _country-de for any market you quote. The full grammar is on the residential proxies page.
Illustration
What a 40-airport travel-retail panel costs
An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.
Assumptions
- Airports
- 40
- Products tracked per airport
- 600
- Destination types
- 2
- Cadence
- weekly (4.3 a month)
- Weight per product observation
- 30 KB (category page share)
- Bandwidth per month
- ≈ 7 GB
On ARC Basic
€5.25per month, excl. VAT
7 GB bought in one purchase at €0.75 / GB (list price).
The same 7 GB on ARC Fast: €14.00 at €2.00 / GB. Route only the jobs that need it through the pricier pool.
Category pages list many products per request, so the effective weight per product is small. Image downloads switched off.
Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.
In depth
Airport retail prices, in depth
Why airports and brands track travel-retail prices
Shops and restaurants are a core part of airport income. ACI World reported that non-aeronautical revenues made up 36.7% of airports' total income globally in 2024, that retail concessions were the largest non-aeronautical source in every region except North America, and that retail and food and beverage accounted for 23.1% and 6.3% of non-aeronautical income respectively.
Airport commercial teams use price data to judge concession performance and pricing against peer airports. Brands use it to see how their products are priced across operators and against the high street. The parking and transfer side of airport revenue has its own page: airport parking and transfers.
How the destination changes a duty-free price
Whether a passenger can buy free of duty or VAT depends on where they fly. Two examples with primary sources:
- EU arrivals from outside the EU. Directive 2007/74/EC exempts travellers' goods from VAT and excise up to a value of EUR 430 per person for air and sea travellers (EUR 300 for others), with separate quantity limits for tobacco and alcohol.
- Great Britain. From January 2021, passengers travelling from Great Britain to EU countries could buy alcohol and tobacco duty-free, and tax-free airport sales of goods such as electronics and clothing ended, according to HM Treasury.
For data, this means the same shelf can carry different prices for different passengers. Record the destination or tax status with every price, and compare duty-free against duty-free. This describes the rules; it is not tax advice.
Pre-order, shelf and domestic prices
| Price | Where to collect it | Use |
|---|---|---|
| Online pre-order (reserve and collect) | Airport or operator shop site, per destination | Main automated series; often discounted against shelf |
| Shelf price in store | Operator price lists where published, or manual store checks | Reference for what walk-in passengers pay |
| Domestic retail price | Supermarkets and retailers in the airport's country | The comparison passengers make |
| F&B menu prices | Outlet pages and menus | Price level per terminal against the city |
For the domestic side, see grocery price monitoring and the methods in comparing prices across markets.
Works with anything that takes a proxy URL
- Python requests / httpx
- Scrapy
Playwright
- changedetection.io
- Docker
FAQ
Questions
Something not covered? Write to contact@arcproxies.io.
Is duty-free actually cheaper than the high street?
Not always. The price depends on the product, the operator, the destination's tax status and current promotions. That is why commercial teams and journalists track the same product codes at the airport and in domestic retail rather than relying on a general rule.
Why do airport pre-order sites ask for my flight?
Because the destination changes whether goods can be sold free of duty or tax, and sometimes which products may be sold at all. A price collected without a destination is ambiguous, so scripts should set it explicitly and store it.
What is the EU travellers' allowance for air passengers?
Under Directive 2007/74/EC, goods brought in by air and sea travellers from outside the EU are exempt from VAT and excise up to EUR 430 per person, with lower thresholds allowed for travellers under 15 and separate limits for tobacco and alcohol.
Do I need residential proxies for duty-free shop data?
Usually not. Most airport shop catalogues are public and look the same from every country, so the rotating ISP pool is enough and cheapest. Use residential exits only for shops that change currency or range by visitor country.
How do I track airport restaurant prices?
Collect the outlet pages and menus per terminal monthly, keep the original menu file, and parse item prices from it. Compare a fixed basket of items across airports and against city-centre outlets of the same brand.
Sources & review
Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.
- [1]ACI World: State of the Airport Non-Aeronautical Business: From Traffic Recovery to Value Reinvention (17 March 2026)
- [2]EUR-Lex (Official Journal of the European Union): Council Directive 2007/74/EC on the exemption from VAT and excise duty of goods imported by persons travelling from third countries
- [3]HM Treasury (GOV.UK): Duty-free extended to the EU from January 2021 (11 September 2020)
Travel fares
More on travel fares
Get started
Buy a gigabyte and try it on your own targets.
No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.