I work on a buy-side firm, so I know how these small data issues can drive us crazy. Hope my answer below can help you:
Reason for price difference:
1. Vendor and data source
Basically, data providers such as Google and Yahoo redistribute EOD data by aggregating data from their vendors. Although the raw data is taken from the same exchanges, different vendors tend to collect them through different trading platforms. For example, Yahoo, is getting stock data from Hemscott (which was acquired by Morningstar), which is not the most accurate source of EOD stocks. Google gets data from Deutsche Börse.
To make the process more complicated, each vendor can choose to get EOD data from another EOD data provider or the exchange itself, or they can produce their own open, high, low, close and volume from the actual trade tick-data, and these data may come from any exchanges.
2. Price Adjustment
For equities data, the re-distributor usually adjusts the raw data by applying certain customized procedures. This includes adjustment for corporate actions, such as dividends and splits. For futures data, rolling is required, and back-ward and for-warding rolling can be chosen. Different adjustment methods can lead to different price display.
3. Extended trading hours
Along with the growth of electronic trading, many market tends to trade during extended hours, such as pre-open and post-close trading periods. Futures and FX markets even trade around the clock. This leads to another freedom in price reporting: whether to include the price movement during the extended trading hours.
To cross-verify the true price, we should always check the price from the Exchange where the asset is actually traded. Given the convenience of getting EOD data nowadays, this task should be easy to achieve.
In fact, for professional traders and investors alike, they will never reply price on free providers such as Yahoo and Google, they will most likely choose Bloomberg, Reuters, etc. However, for personal use, Yahoo and Google should both be good choices, and the difference is small enough to ignore.