It is not easy to give a complete answer to this problem.
First, I see in your example that you are using the sales city of MAD. I presume you are aware that means you must buy the ticket at a travel agent in Madrid for the result to be valid. If you buy on a website such as Expedia, quite often the point of sale is that of the itinerary origin, not that of the website's stated location. Or alternatively it might be somewhere else in Europe. If it's an aggregator, then who knows. (btw, ITA certainly doesn't care about your IP and I don't think any major travel agent does either.)
No one is lying to ITA because ITA pulls the information out of the same system that everyone else uses.
However, ITA relies on heavy availability caching throughout its network of servers. The problem is that no airline in the world has the IT capacity to support the sheer number of availability queries that are asked every day. So in order not to crash every airline server in the world ITA realized early in its evolution it was going to have to do a lot of caching. The same thing applies to other online travel agents, who must implement their own caching system.
But availability is a highly dynamic quantity; on any given flight the availability is a function of—
- The flight (of course)
- The exact time right now (the load might change in the next three seconds)
- Origin and destination of the fare component. This is very difficult because it means a flight might look full until you say that actually it's only a small part of a larger and much more profitable journey. Then the airline decides the flight is actually nearly empty and there is loads of space for you.
So I believe a lot of folks will cache LON-DOH and DOH-BKK (for instance). When someone asks for LON-DOH-BKK they assume they can take the minimum availability of those two, separate flights and present it as the through-availability of LON-DOH-BKK. But that isn't true at all.
This is called "married segment logic", and some airlines do this a lot (QR) and some almost never (BA). So that's why some airlines are "worse" to predict than others.
The true availability is often only known when the travel agent creates the PNR (passenger name record) and requests confirmed reservations in the appropriate booking codes on the desired flights, and the airline replies with the surprise status "UC" (unable to confirm/waitlist) instead of "HK" (hold confirmed).
The next problem is that the ITA QPX pricing engine is a lot more intelligent than anyone else's. So ITA can often find very clever and highly non-obvious ways to price even simple round-trip journeys, methods that will simply never occur to anyone else (including the airline). So when taking your itinerary to a brick-and-mortal travel agent, make sure you include the fare quote line from the print out, stating how the fare is constructed.
In my experience ITA is right 95% of the time.
When dealing with a complex itinerary, you could try firing off an email to these guys with your ITA result: http://www.flightcentre.com [Don't use the online flight finder but actually email them with your ITA result.] I have heard good things about them. I am sure they charge a fee though.