I run a flight search website (Beat That Flight) in Australia that aggregates sites like this. It's one of the biggest problems.
Say you're flying from Chicago to Los Angeles. There are literally thousands of possible routes (you might decide to fly via Albuquerque for some reason) and each route has multiple airlines, and times. All these flights often have different classes (Economy, business) and even within Economy, multiple pricing buckets.
All these are changing regularly, as people buy tickets, airlines price a lot based on demand, deals etc.
All this data needs to flow into various GDSs, across networks and have all the travel agency etc discounts added and updated. Constantly.
There's a white paper here that explains in more detail.
From the whitepaper:
Just for San Francisco to Boston, arriving the same day, there are
close to 30,000 flight combinations, more flying from east to west
(because of the longer day) or if one considers neighboring airports.
Most of these paths are of length 2 or 3 (the ten or so 6-hour
non-stops don't visually register on the chart to the right). For a
traveler willing to arrive the next day the number of possibilities
more than squares, to more than 1 billion one-way paths. And that’s
for two airports that are relatively close. Considering international
airport pairs where the shortest route may be 5 or 6 flights there may
be more than 1015 options within a small factor of the optimal
Short version - basically updating in real time is nearly impossible. Sites like expedia often cache prices, and update when there's a search for a particular date/time, because there's so many combinations there's little value in say, updating El Calafate, Argentina to Dushanbe, Tajikistan in real time when you could be putting more resources into updating New York to Los Angeles - a more commonly searched route.
As a result, it's not uncommon that the price you see has changed in the background. One of the tickets in a particular bucket may have just been snapped up elsewhere.
You can try, and indeed sometimes it's a routing update that fluctuates and it may come back. But three days out, that's less likely.
Hope that made sense.