I have been downloading data from Yahoo Finance for a while and, like others, am not happy it is broken. However, Yahoo was never obliged to provide me with free historical data. It's fine to use free data, but one lesson I am learning is that if you are using the data for your trading, it is good to have a backup plan, since the provider can break things at any time, and you have no recourse.
http://download.finance.yahoo.com/d/quotes.csv?s=^GSPC&f=ld1 That link still works. That would be all I need if I could get it to display the last 20 trading dates. Anyone know how to do that?
Caution: The data for most splits is adjusted backwards and done on only the closing value, not the adjusted close. To make it even more confusing, some of the split adjustments are correct. Yahoo HR people need to make sure the new employees know the difference between division and multiplication. I'm amazed problems like this still appear in major corporations in 2017.
I noticed that too...to be honest, I was kinda surprised that Yahoo allowed free pulling of data for as long as they have. I was pulling about 480-900 tickers every night and they received no compensation for that bandwidth. I was kind and only pulled the last day or two in an effort to conserve bandwidth as much as possible, but I suspect most people did not do that and just pulled the entire history for whatever stocks they were tracking. There might be a way to pull the same data with Google Finance, but I ended up modifying my puller to pull from IB a few weeks back as I was pretty sure this would happen eventually. I have basically everything that I need now except for next earnings date. I haven't figured out an automated way to pull that.
You could scrape it from a web page. https://www.bloomberg.com/markets/earnings-calendar/us or pay for api http://www.xignite.com/product/earnings-calendar-data/api/ https://www.quandl.com/publishers/zacks