Guide

Flight fare caching strategies for metasearch and OTAs

Live flight pricing is expensive, slow and rationed by suppliers, so every serious metasearch engine and OTA caches fares. The craft is in what you cache, for how long, and how you refresh it: too aggressive and users see prices that no longer exist; too cautious and your infrastructure bill and supplier relationships suffer. This guide walks through the cache layers, the staleness trade-off and the rules that constrain it all.

Short answer: flight fare caching means storing recent search results and derived data so that repeat and adjacent queries are answered from your own store instead of a fresh supplier call. Production systems cache in layers - search results briefly, calendar and route price estimates longer, schedules and static content longest - and always reprice against the live supplier before payment. Cache windows and refresh strategy are shaped as much by supplier agreements and look to book limits as by engineering preference.

Advertisement

Why everyone caches flight fares

A single flight search fans out into many supplier requests, each of which costs the supplier real compute: airlines and GDSs price itineraries on demand from filed fares, rules and availability. Suppliers therefore meter shopping traffic, contractually and technically, and watch each partner's ratio of searches to bookings - the look to book ratio. Metasearch makes the pressure worse by design, since every user query triggers comparisons across many sources, and most users never book on any given visit.

Caching is the standard answer on both sides of the market. AltexSoft's overview of OTA caching strategies describes it as the core technique for returning results quickly at acceptable cost, and Amadeus has responded to rising automated shopping traffic by promoting precomputed fare products for exactly this reason. A cached response costs you microseconds and nothing at the supplier; a live shop costs seconds and burns quota. The business case is not subtle.

The cache layers

Mature systems do not have one cache; they have several, each with its own accuracy contract:

Cache layers in a flight search stack
LayerWhat is storedTypical freshness expectation
Search resultsFull priced itineraries for a specific route, date and passenger mix, keyed by the search parameters.Short - minutes at most; served to repeat and concurrent searches for the same query.
Calendar / price graphsCheapest-known fare per route and date, built from past search traffic and background polling.Longer - hours to a day or so; always labelled as estimates, confirmed on click-through.
Route-level estimates"Fares from" figures for landing pages and route pages.Longest of the price layers; explicitly indicative, dated, never sold as bookable.
Schedules and static contentTimetables, airline and airport data, aircraft, baggage policy content.Days; changes are published in advance and rarely.

The layers trade precision for durability: the closer the data sits to a purchase decision, the shorter its shelf life. Calendar views are the classic win - they answer the expensive "when is it cheap to fly" browsing pattern almost entirely from cache, reserving live shopping for the moment a user commits to a date.

Advertisement

The staleness vs cost trade-off

Every cached price is a small bet that the fare has not changed since you stored it. Fares genuinely move - availability buckets close, filed fares update through ATPCO's distribution cycle multiple times daily, and last seats sell - so the longer your windows, the more often users click a price that no longer exists. That failure has a name in metasearch: the price on the results page does not match the price at the airline or OTA, and it is the single biggest trust-killer in the category.

The trade-off is managed, not eliminated. Short windows on the results layer keep the error rate tolerable; longer windows on calendars are acceptable because users understand them as estimates; and a mandatory live repricing step before payment converts any residual staleness from a mis-sale into a "fare has changed" message. Where you set each dial depends on route volatility, your traffic mix and what your supplier contracts allow - which is why we treat cache tuning as an ongoing operational task in every meta flight website we build, not a launch-day constant.

Invalidation and refresh strategies

  • Time-based expiry (TTL) is the baseline: every entry carries a shelf life appropriate to its layer.
  • Serve-stale-then-refresh returns a slightly old result instantly while a background job refreshes the entry, so the next visitor gets fresh data without anyone waiting. AltexSoft notes this works well for stable content and gets riskier the more volatile the inventory.
  • Popularity-based prewarming spends your search quota deliberately: background polling concentrates on high-traffic routes and near-term dates, so the cache is warm where users actually look.
  • Event-driven invalidation flushes affected entries when something known changes - a fare-load update, a schedule change, or a booking failure that reveals a dead price.
  • Negative caching remembers that a route or date returned nothing, briefly, so users repeating a hopeless query do not burn live searches.

What supplier rules say about caching

Caching does not happen in a legal vacuum. In general terms - the specifics are in each contract and change over time:

  • GDS and airline API agreements typically set fair-use expectations on shopping volumes and look to book ratios, and may restrict how long responses can be stored or displayed. Some offer dedicated cached-shopping products precisely so partners do not hammer live pricing; Amadeus and Sabre both market precomputed or cache-powered shopping options.
  • Metasearch distribution channels enforce price accuracy from the other direction: partners whose displayed prices repeatedly diverge from the final booking price face penalties or removal, which effectively caps how stale your advertised fares can be.
  • Content sources such as schedule data providers license their data with their own storage and redistribution terms.

Read the actual agreements before fixing your architecture; a design that assumes ninety-second result reuse is very different from one allowed to serve a fare for an hour. This is a standard part of the discovery we run in flight API integration projects.

A practical architecture for a metasearch site

The pattern below is the shape we implement for flight aggregator websites and metasearch builds. Requests fall through progressively more expensive layers, and only the last one touches supplier quota.

Diagram of a flight search request flowing through cache layers: results cache first, then calendar estimates, then live supplier shopping, with a repricing step before booking User searchroute + dates Results cachefresh hit? serve it Calendar / estimatesbrowsing answered here Live supplier shopquota spent here only Reprice + bookalways live miss fallsthrough
Each layer absorbs traffic the next one never sees; the booking step is never served from cache.

Alongside the layers sit the disciplines that keep them honest: metrics on cache hit rate and price-mismatch rate per route, bot filtering in front of everything, and per-supplier budgets so one feed's limits are never breached by another's traffic. For how the surrounding product works commercially, see how flight metasearch engines work.

This article is general information about travel technology and online marketing. It is not legal, tax or financial advice, and advertising platform policies change often. Check the current policy documents and take professional advice for your own situation.

Advertisement

Frequently asked questions

How long can I cache flight fares?

There is no universal number. The practical window depends on your supplier agreements, route volatility and how much price mismatch your product can tolerate. Result-level caches run short, calendar estimates run longer, and anything shown at booking time must be repriced live. Treat the windows as tunable dials, not constants.

Why do metasearch sites show prices that turn out to be wrong?

Because the displayed price came from a cache or a partner feed and the fare moved before the user clicked through. Well-run sites keep the mismatch rate low with short result windows and background refresh, and distribution channels penalise partners whose advertised prices repeatedly miss.

Does caching violate supplier terms?

Caching itself is normal and often explicitly supported; some suppliers sell precomputed shopping products built on it. What agreements restrict is how long you store responses, how you display them and how much live traffic you generate. The answer is always in the specific contract, so read it before designing the cache.

What is the difference between cached fares and live fares?

A live fare is priced by the supplier at the moment you ask and is bookable at that instant. A cached fare is a recent observation that is fast and cheap to serve but may have moved. Search and browsing run mostly on cached data; ticketing always runs on live data.

Do I need fare caching for a small flight website?

Sooner than you might think. Even modest traffic multiplied across suppliers hits fair-use limits quickly, and calendar-style browsing is unusable without precomputed estimates. Most small sites start with a simple results cache plus a repricing step and grow the layers with traffic.

WhatsApp us