Dataset
Transatlantic City Grid
cheapest US to Europe round trips by city pair
1,037 round-trip economy fares, 26 US gateway metros to 41 European cities, collected on August 30, 2026.
Every fare figure on Europe Flight Club is computed from two grids Jon collected himself. Both are downloadable here, with the method, the observation dates, and a license that asks only for credit.
Dataset
cheapest US to Europe round trips by city pair
1,037 round-trip economy fares, 26 US gateway metros to 41 European cities, collected on August 30, 2026.
Dataset
airline price and product aggregates for one fixed travel week
46 airlines, 10,054 accepted historical fares for one travel week.
The city grid is the cheapest one-week economy round trip from each of 26 US gateway metros to each of 41 European cities, for departures in the August 30, 2026 – February 28, 2027 window, searched on on Google Flights. Each gateway cohort was collected on one Eastern day, every cell twice, keeping the lower reading only after settings and evidence checks. The grid’s actual collection interval is disclosed; fares from gateways observed on different days are context rather than simultaneous quotes.
The carrier grid records returned carrier fares for the same travel week, November 8–14, 2026. Fare differences are within observed airport pairs and cabins; connections and ticket conditions can differ. The route list was fixed before collection as the full cross-product of the same 26 gateways and 51 European airports, and it is collected route by route with every carrier on a route captured in one session. Of 1,326 planned routes, 977 returned an economy fare and 962 a business fare. A pair whose search completed and returned no single-carrier fare for that week is declared unpriced rather than left out, so a collection failure can never read as an empty market — and because that declaration is about one week and one cabin, it is not a claim that nobody flies the route. A further 0 route-cabins have not been searched and 37 did not resolve. Both are recorded separately, included in planned coverage accounting, and excluded from fare rankings and comparisons, because a route nobody searched is not a route with nothing to sell.
Rankings on this site use the median, never the minimum. A minimum is a fact about one airport over the disclosed collection interval; a median is a fact about the city or the airline. That is why published cheapest-city lists disagree with each other and why ours does not move when one gateway gets lucky. The full method, and the second-source check we run against it, is on How we review.
The pages and the files are generated from the same source in the same build. A city page’s median, a carrier page’s rank, and the row in the file that produced them are the same number by construction, not by proofreading. If you ever find them apart, tell us: it is a defect, and it goes on the corrections page with the check that should have caught it.
Two files are open. Three things are deliberately not, and it is better to say which than to let anyone assume the download is everything.
The files were first published on . The city grid is re-collected monthly as a complete replacement with a disclosed collection interval or not at all, and each refresh replaces the file at the same URL; the filename and every row carry the observation date, so a file downloaded in one month can never be mistaken for the next. The carrier grid is re-aggregated whenever its fares are re-collected. One snapshot is held in the archive today.
Every collection, refresh and correction that changed a published figure, newest first. The archive itself is not distributed; this is the record that it exists and is kept.
carrier grid
Carrier fares refreshed with explicit incomplete coverage
10,054 accepted fare observations for November 8–14, collected October 12–17. Of 2,652 planned route/cabin cells, 1,939 returned accepted fares, 676 had corroborated no-result evidence and 37 remain unresolved. Unresolved cells contribute no fares or absence claims to rankings or comparisons. The prior snapshot is preserved; the city and arrival-airport datasets retain their own historical dates. This is a partial carrier refresh, not completion of the full fare refresh.
files
City grid file gained destination_place, because the code is not always the place searched
destination_code described itself as the IATA code searched. Belfast files under BFS and cannot have been collected there, since BFS returns no fare from any US gateway, so the grid searches the Belfast metro. The new column states the place on every row, destination_code no longer claims to be it, and src/data/city-places.ts declares the unit for all 41 cities.
files
City grid and carrier aggregates published as CSV and JSON under CC BY 4.0
The current snapshot in full; the carrier grid as one row per airline. The archive and the per-route carrier fares are held back, and the page says why.
cabin grid
First economy cabin rows: JetBlue and Delta, scored against economy
Economy Seat comes from row width and the pitch the carrier publishes, and is withheld where none is published; JetBlue's is. Delta's three airframes are recorded separately because the row width differs.
carrier grid
Carrier grid completed: all 26 gateways, 47 airports, both cabins
6,690 fares for one fixed travel week, collected origin by origin with every carrier on a route captured in one session. Rankings dropped the 'origins collected so far' qualifier.
cabin grid
Sixteen business cabins verified, every ranked carrier now has a product row
Wifi recorded as paid unless free was independently established. Two carriers checked and deliberately not recorded, flagged instead.
city grid
City grid collected: 1,037 round trips, 26 gateways, 41 cities, one day
Every cell priced twice the same day and the lower reading kept. Archived as the first snapshot; a second is due at the end of September.
city grid
Boston to Milan corrected from $846 to $591
A bad capture caught by cross-checking the map's per-city labels against the grid. Exact agreement is the norm on that check, so a double-digit gap is a bad row, not price movement.
One email a week on the Europe fares worth acting on. The week a grid is re-collected, it says so, with what moved.

Data collected by
Jon Miksis
Jon Miksis has run travel businesses since 2017 and spends 3–6 months a year traveling, two to three of them in Europe. He has taken 250+ flights and booked every one himself, and regularly flies Boston to Europe for under $300 round trip. Every “Flown” review is from his own seat.