International trip cheap

This to add

With a 13-year-old in the group you are carrying a discount engine most visitors never switch on. :admission_tickets:

Transport, 2026 prices

  • :metro: Never buy a single. Contactless caps at Β£8.90 a day in Zones 1–2, then the day is free to keep riding
  • :bus: Buses Β£1.75, unlimited changes within an hour, Β£5.25 a day cap
  • :child: 11–15 Zip Oyster for the 13-year-old β€” 50%+ off every journey; apply before you fly, the photo card arrives by post
  • :baby: Under-11s ride free with a 5–10 Zip card

Free, and it feels expensive
:classical_building: British Museum Β· Natural History (the blue whale) Β· Science Museum Β· V&A Β· Tate Modern β€” all free Β· :herb: Sky Garden, free with an online booking Β· :christmas_tree: Winter Wonderland, free entry Β· :guard: Changing the Guard

The 2-for-1 trick β€” keep a paper rail ticket or Travelcard and National Rail 2FOR1 turns two entries into one paid ticket at the big attractions. :ticket:

Sleep and eat β€” :bed: short lets on OpenRent skip agency fees, Premier Inn family rooms beat the booking sites Β· :bento_box: supermarket meal deals, Too Good To Go in the evening, Wetherspoons for a cheap sit-down dinner

Two habits β€” always pay in GBP when a terminal offers the choice, and tap a Revolut or Wise card instead of your bank’s. :credit_card:

Flights: DAL over DFW, with alerts on Secret Flying and Fly4Free β€” Dec 3–7 lands just before the Christmas surge. :airplane:

Everything above is the what. This is the build β€” five pieces you can put together in an evening, all free to start. :hammer_and_wrench:

:airplane_departure: Your own flight-price watch (20 lines of Python)
fast-flights β˜…2.1k Β· MIT reads Google Flights directly, and the Amadeus Self-Service API gives you a free developer tier for real fare data. Run it nightly for DALβ†’LHR on Dec 3–7, log the price, and book the day it drops β€” that beats refreshing tabs for a week.

from fast_flights import FlightData, Passengers, get_flights
r = get_flights(
    flight_data=[FlightData(date="2026-12-03", from_airport="DAL", to_airport="LHR")],
    trip="one-way", seat="economy", passengers=Passengers(adults=2, children=1),
    fetch_mode="fallback")
print(r.current_price)

:admission_tickets: Split My Fare β€” UK trains sold as one ticket cost more than the same trains sold in pieces. Split My Fare does the slicing automatically; on a family trip it routinely halves the fare. Cheap, fast, and it works from Dallas before you fly.

:house: Free stays that are genuinely free β€” BeWelcome and Trustroots are hospitality networks with no fee and no subscription, unlike the ones that charge to look.

:droplet: A water-and-toilets map you build yourself β€” Overpass Turbo runs one query against OpenStreetMap:

node["amenity"="drinking_water"](51.47,-0.20,51.55,0.00); out;

Add amenity=toilets and leisure=playground to the same query and you have a personalised family map of London β€” free water, free loos, and a playground whenever the 13-year-old needs a break. The Refill app does the water half if you would rather not build it.

:bento_box: Wasted-food dinners β€” Too Good To Go sells end-of-day restaurant boxes for a few pounds, and central London is dense with them. Three dinners, one tenth of the price. :takeout_box: