Why does Yahoo Finance and Google Finance not match historical prices?
The difference is that Yahoo is showing the unadjusted price that the security traded for on that date, while google is adjusting for price splits. This means that Google is showing how much you would have had to pay to get what is now one share. Since 1979, JNJ has split 3-for-1 once, and 2-for-1 four times. 3x2x2x2x2 = 48. If you bought 1 share at that time, you would now have 48 shares today. Yahoo is showing a price of $66 for what was then 1 share. $66/48 = 1.375, which Google rounds to 1.38. You can see this if you get the prices from May 14-21, 1981. The stock split 3-for-1, and the price dropped from 108 to 36.38. Yahoo's adjusted close column has not been accurate since they re-wrote the Finance website. It now just represents the closing price. The other relevant field on Yahoo is the Adj. Close. This adjusts for splits, but also adjusts for dividends. Hence why this doesn't match either the Google or Yahoo numbers. 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.   Conclusion 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.
Check the answers to this Stackoverflow question https://stackoverflow.com/questions/754593/source-of-historical-stock-data a number of potential sources are listed I assume you're after a price time series and not a list of S&P 500 constituents?  Yahoo Finance is always a reasonable starting point. Code you're after is ^GSPC: https://finance.yahoo.com/quote/%5EGSPC/history?p=^GSPC  There's a download data button on the right side. Yup. What I wanted to know was where they are pulling it up from. Have casually used Google finance for personal investments, but they suck at corp actions. Not sure if they provide free APIs, but that would probably suck too! :D This is from Google Finance right now. I had the same problem and was looking for a software that would give me easy access to historical financial statements of a company, preferably in a chart. So that I could easily compare earnings per share or other data between competitors. Have a look at Stockdance this might be what you are looking for.  Reuters Terminal is way out of my league (price and complexity) and Yahoo and Google Finance just don't offer the features I want, especially on financials. Stockdance offers a sort of stock selection check list on which you can define your own criterion’s. Hence it makes no investment suggestions but let's you implement your own investing strategy. A number of places.  First, fast and cheap, you can probably get this from EODData.com, as part of a historical index price download -- they have good customer service in my experience and will likely confirm it for you before you buy.  Any number of other providers can get it for you too.  Likely Capital IQ, Bloomberg, and other professional solutions. I checked a number of free sites, and Market Watch was the only that had a longer history than a few months. "Sure, Yahoo Finance makes mistakes from time to time.  That's the nature of free data. However, I think the issue here is that yahoo is aggregating several line items into one.  Like maybe reporting cash equivalents plus total investment securities minus loans as ""cash equivalents.""  This aggregation is done by a computer program somewhere and may or may not be appropriate for a particular purpose and firm. For this reason, if you are trying to do top quality research, it's always better to go to the original SEC filings, if you can.  Then you will know for sure which items you are looking at.  The only mistakes will be the ones made by the accountants at the firm in question. If there's a reason you prefer to use yahoo, like if it's easier for your code to scrape, then spend a little time comparing to the SEC filing to ensure you know where the numbers really come from before using it." "Google's RSI is using a 10 period on 2 minute bars - i.e. it is based upon the last 20 minutes of data. Yahoo's RSI is using a 14 period lookback on an undetermined timeframe (you could maybe mouse-over and see what incremental part of the chart is giving) and given the ""choppier"" price chart, probably 30 second or 1 minute bars.   Given the difference in both the period specified and the periodicity of the charts - you should expect different results." The biggest issue with Yahoo Finance is the recent change to the API in May. The data is good quality, includes both dividend/split adjusted and raw prices, but it's much more difficult to pull the data with packages like R quantmod than before.  Google is fine as well, but there are some missing data points and you can't unadjust the prices (or is it that they're all unadjusted and you can't get adjusted? I can't recall). I use Google at home, when I can't pull from Bloomberg directly and when I'm not too concerned with accuracy.  Quandl seems quite good but I haven't tried them. There's also a newer website called www.alphavantage.co, I haven't tried them yet either but their data seems to be pretty good quality from what I've heard. Previously, Google had a delayed update for their stock prices (15 minutes I believe). That change enabled users of Google Finance to see updates to stock prices in real-time. You can use Google Finance Stock Screener for screening US stocks. Apparently it doesn't have the specific criterion (Last Price % diff from 52 week low) you are (were!) looking for.  I believe using its api you can get it, although it won't exactly be a very direct solution. The yahoo finance API is no longer which broke the Finance:Quote perl module.  The Finance:Quote developers have been quick to fix things and have produced several new versions in the last week or two.  The short of it is that you need to update Finance:Quote, then obtain an AlphaVantage free key and tell Gnucash to use AlphaVantage as it's source for online quotes by editing your securities in the Price Editor. I found additional evidence on TDAmeritrade's website that helps confirm that the 3/17/11 prices Jason found are the ones to use since all three were traded on that day.  Although GM+A had prices and trading as early as 2/28/11, GM+B's price and trading shows up no earlier than 3/14/11, but there was no trading indicated for GM+A on 3/14 so 3/14 can't be used.  The two warrants were not traded every day after they came out. The next date that I found when all three, GM, GM+A and GM+B had trades was 4/11/11.  I found Google and Yahoo Finance unable to produce the historical prices for the warrants that far back.  Unfortunately, you need to be a TDA accountholder in order to access TDA's historical price information for stocks. "P/E is Price divided by Earnings Per Share (EPS). P/E TTM is Price divided by the actual EPS earned over the previous 12 months - hence ""Trailing Twelve Month"". In Forward P/E is the ""E"" is the average of analyst expectations for the next year in EPS. Now, as to what's being displayed. Yahoo shows EPS to be 1.34. 493.90/1.34 = P/E of 368.58 Google shows EPS to be 0.85. 493.40/0.85 = P/E of 580.47 (Prices as displayed, respectively) So, by the info that they are themselves displaying, it's Google, not Yahoo, that's displaying the wrong P/E. Note that the P/E it is showing is 5.80 -- a decimal misplacement from 580 Note that CNBC shows the Earnings as 0.85 as well, and correctly show the P/E as 580 http://data.cnbc.com/quotes/BP.L A quick use of a currency calculator reveals a possible reason why EPS is listed differently at yahoo. 0.85 pounds is 1.3318 dollars, currently. So, I think the Yahoo EPS listing is in dollars. A look at the last 4 quarters on CNBC makes that seem reasonable: http://data.cnbc.com/quotes/BP.L/tab/5 those add up to $1.40." "At the bottom of Yahoo! Finance's S & P 500 quote Quotes are real-time for NASDAQ, NYSE, and NYSE MKT. See also delay   times for other exchanges. All information provided ""as is"" for   informational purposes only, not intended for trading purposes or   advice. Neither Yahoo! nor any of independent providers is liable for   any informational errors, incompleteness, or delays, or for any   actions taken in reliance on information contained herein. By   accessing the Yahoo! site, you agree not to redistribute the   information found therein. Fundamental company data provided by Capital IQ. Historical chart data   and daily updates provided by Commodity Systems, Inc. (CSI).   International historical chart data, daily updates, fund summary, fund   performance, dividend data and Morningstar Index data provided by   Morningstar, Inc. Orderbook quotes are provided by BATS Exchange. US   Financials data provided by Edgar Online and all other Financials   provided by Capital IQ. International historical chart data, daily   updates, fundAnalyst estimates data provided by Thomson Financial   Network. All data povided by Thomson Financial Network is based solely   upon research information provided by third party analysts. Yahoo! has   not reviewed, and in no way endorses the validity of such data. Yahoo!   and ThomsonFN shall not be liable for any actions taken in reliance   thereon. Thus, yes there is a DB being accessed that there is likely an agreement between Yahoo! and the providers."