
I was looking for long time after a way to get some finance data from sources like: google, yahoo etc’ without the need to parse long html pages. Than, a friend point me to some simple pipe that fetch this information. From there it was a short step to gain access to this nice (hidden) API was inevitable.
In a nutshell, if you want to get data on some stocks you can use this request:
http://finance.yahoo.com/d/quotes.csv?s=GE+PTR+MSFT&f=snd1l1yr
where some special tags:
| a | Ask | a2 | Average Daily Volume | a5 | Ask Size |
| b | Bid | b2 | Ask (Real-time) | b3 | Bid (Real-time) |
| b4 | Book Value | b6 | Bid Size | c | Change & Percent Change |
| c1 | Change | c3 | Commission | c6 | Change (Real-time) |
| c8 | After Hours Change (Real-time) | d | Dividend/Share | d1 | Last Trade Date |
| d2 | Trade Date | e | Earnings/Share | e1 | Error Indication (returned for symbol changed / invalid) |
| e7 | EPS Estimate Current Year | e8 | EPS Estimate Next Year | e9 | EPS Estimate Next Quarter |
| f6 | Float Shares | g | Day’s Low | h | Day’s High |
| j | 52-week Low | k | 52-week High | g1 | Holdings Gain Percent |
| g3 | Annualized Gain | g4 | Holdings Gain | g5 | Holdings Gain Percent (Real-time) |
| g6 | Holdings Gain (Real-time) | i | More Info | i5 | Order Book (Real-time) |
| j1 | Market Capitalization | j3 | Market Cap (Real-time) | j4 | EBITDA |
| j5 | Change From 52-week Low | j6 | Percent Change From 52-week Low | k1 | Last Trade (Real-time) With Time |
| k2 | Change Percent (Real-time) | k3 | Last Trade Size | k4 | Change From 52-week High |
| k5 | Percebt Change From 52-week High | l | Last Trade (With Time) | l1 | Last Trade (Price Only) |
| l2 | High Limit | l3 | Low Limit | m | Day’s Range |
| m2 | Day’s Range (Real-time) | m3 | 50-day Moving Average | m4 | 200-day Moving Average |
| m5 | Change From 200-day Moving Average | m6 | Percent Change From 200-day Moving Average | m7 | Change From 50-day Moving Average |
| m8 | Percent Change From 50-day Moving Average | n | Name | n4 | Notes |
| o | Open | p | Previous Close | p1 | Price Paid |
| p2 | Change in Percent | p5 | Price/Sales | p6 | Price/Book |
| q | Ex-Dividend Date | r | P/E Ratio | r1 | Dividend Pay Date |
| r2 | P/E Ratio (Real-time) | r5 | PEG Ratio | r6 | Price/EPS Estimate Current Year |
| r7 | Price/EPS Estimate Next Year | s | Symbol | s1 | Shares Owned |
| s7 | Short Ratio | t1 | Last Trade Time | t6 | Trade Links |
| t7 | Ticker Trend | t8 | 1 yr Target Price | v | Volume |
| v1 | Holdings Value | v7 | Holdings Value (Real-time) | w | 52-week Range |
| w1 | Day’s Value Change | w4 | Day’s Value Change (Real-time) | x | Stock Exchange |
| y | Dividend Yield |
Simple, right?🙂
As for historical data you can use something like:
http://finance.yahoo.com/q/hp?s=WU&a=01&b=19&c=2010&d=01&e=19&f=2010&g=d
where the FROM date is: &a=01&b=10&c=2010
and the TO date is: &d=01&e=19&f=2010
You can also get it as CSV file with link like:
http://ichart.finance.yahoo.com/table.csv?s=WU&a=01&b=19&c=2010&d=01&e=19&f=2010&g=d&ignore=.csv
Now, if you want to play with the data you are getting from yahoo! you can run some fun SQL like:
Getting the Standard divination of a specific stock:
SELECT stock, STD(Close-Price) from `historic_prices` where stock = "NFLX" AND date > "2010-01-01" group by stock
This will give you the Standard divination on Netflix (hot hot stock these days) from the beginning of 2010 (and like the meaning of the universe… it’s 42!)
Here is another way to work with finance data from NodeJS.
Happy hacking!
Pingback: Yahoo Finance (hidden) API « Ido's Blog
Any idea if it’s possible to get this data historically?
Not from them… but there are some services that will be happy to sell you this data.
Do you know which tags to use for industry and sector information?
The tags that you can use to get info. on industry and sector (e.g. SPX or in a link: http://finance.yahoo.com/d/quotes.csv?s=SPX&f=snd1l1yr)
won’t return data. So my guess is that they are not supporting it.
If you find otherwise – please update us in the comments.
It’s working for me. You need %5E which acts as the caret character. Also, I guess SPX has now been renamed to GSPC. Here is an example:
http://finance.yahoo.com/d/quotes.csv?s=GOOG+%5EGSPC&f=spol1c1p2
any idea to get share outstanding value from key statistics
I actually found some information buried in a forum that this is a reverse-engineered way of pulling the data and violates the Yahoo TOS. Is this true?
Can you share the forum page?
Hey guys little off topic but i recently found a cool new free market data api thats pretty easy to use http://freemarketdataapi.barchartondemand.com
Reblogged this on Globalbrowse.
Yeah can we use this api for commercial purpose.
Spot on with this write-up, I really feel this web site
needs much more attention. I’ll probably be back again to see more, thanks for the info!
How do we know last trade is sell or buy?
It’s always both…
Hello, guys!
I didn’t catch how to distinguish one company from another if they have the same ticker, but in different countries.
For example:
iShares gold trust trades in US with ticker IAU.
Intrepid Mines trades in Canada with ticker IAU.
What will I get if I make try this:
http://ichart.finance.yahoo.com/table.csv?s=IAU&a=01&b=19&c=2010&d=01&e=19&f=2010&g=d&ignore=.csv
Thanks for finally writing about >Yahoo Finance (hidden) API
| Ido Green <Liked it!
Good to hear it!
Thanks!
Is there any way we can find the market cap for a particular exchange?
distinguish one company from another: for Canada, use .TO at the end of the company. TRP.TO
The issue I run into is getting historical bid ask prices. How do you combine a date with a ticker and a bid ask price quote over some time when the “f” parameter acts as both the year parameter and the tags parameter?
To get the history you need to use the following url
http://ichart.finance.yahoo.com/table.csv?s=IAU&a=01&b=19&c=2010&d=01&e=19&f=2010&g=d&ignore=.csv
The a= start month -1
b=day
c=year
d= end month-1
e=day
f=year
Is there a place where there is a complete list of available tickers and indexes that are supported by the Yahoo Finance API. I see some tickers like AAL.L where the .L indicates London. I assume that this could be used to identify a stock from a particular exchange but do not know if this applies to all stocks. I also see some are prefixed by ^GSPC (encoded as %5EGSPC), is there a list of these? Any advice as to where to find a complete list would be appreciated and I an sure it will be of help to others.
I found a more concise url for the csv of the historical prices:
‘http://chart.finance.yahoo.com/x?s=CCNI&t=3m’
hey, I found your article really helpful. Is it possible to get historical data for multiple stocks at once. As of now, using this method I am getting it for a single stock only.
Replace the ({0}) in the query below using string.format() with a string listing the stocks for which you want the data…..similarly, you can use the same technique to replace the hard coded dates with programmatic input …
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20in%20({0})%20and%20startDate%20=%20%222012-09-13%22%20and%20endDate%20=%20%222012-09-14%22&diagnostics=true&env=store://datatables.org/alltableswithkeys”;
Paste the following into your browser address field to generate the data on a browser page…
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20in%20(“YHOO”,”AAPL”,”GOOG”,”MSFT”)%20and%20startDate%20=%20″2012-09-13″%20and%20endDate%20=%20″2012-09-14″&diagnostics=true&env=store://datatables.org/alltableswithkeys
Hi Ido,
Thanks for your reply. I tried using the given below url but unfortunately it did not seem to work. Actually I need to download S&P 500 stock historical data every three months. The information that is given on the page helps me download it for a single stock at a time. Is there a way I can read it on a page or download it directly for multiple stocks at a time. Looking forward to hearing from you.
[cid:image001.jpg@01CCE4D5.40FEF740]
Thanks & Regards,
Shivam Garg
Business Analyst- GCP, Institutional Decision Science
American Express |Zone 6, DLF City V | RIM-CoE, Gurgaon
Hi, I need historical data for multiple stocks at a single time. Is it possible using any other hacks, as these support historical data for a single stock at a time.
Anyone have a query or a request that will get provide dividend history for a stock/mutual fund…?
Thanks for your reply. I tried using the given below url but unfortunately it did not seem to work. Actually I need to download S&P 500 stock historical data every three months. The information that is given on the page helps me download it for a single stock at a time. Is there a way I can read it on a page or download it directly for multiple stocks at a time. Looking forward to hearing from you.
Try this….same query, but replaced some characters with hex equivalents….
http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20in%20(%22YHOO%22,%22AAPL%22,%22GOOG%22,%22MSFT%22)%20and%20startDate%20=%20%222012-09-13%22%20and%20endDate%20=%20%222012-09-14%22&diagnostics=true&env=store://datatables.org/alltableswithkeys
Scroll down the resultant display and you’ll see the xml formatted data for the four stocks….
I am also struggling with stocks that have dots in it, showing location, such as PHM.MC. If you have any recommendation how to solve it, please let me know.
I have built some tool using this API, you can check it on GitHub https://github.com/nikolamilosevic86/FinAnalyzer
We have this issue reported, so if anyone knows how can be information about these stocks retrieved, please give me a hint so I can integrate it.
Thank you
Nikola
which tags used to get buy rate and sell rate of currency
Hi there,
I was wondering if you could point me to a place to find company overview information such as Full Time Employees, Address, Phone Number (for both public and private) companies via an API.
Hello, I need help finding a whole bunch of values on yahoo finance.
Capital Expenditures is on of them. Can you please point me in the right direction?
Hello Ido,
I use this system for some time, but I’m missing a tag in order to download the “adjusted close” on a daily basis. From this historical data download, you get the adjusted close automatically, but I can’t use the historical data download as I also need other values that are not available in the historical data-set.
Do you have a solution for my problem?
Thanks, Koen.
This is a nice article. Currently I am getting all currencies based on this end point.
http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json
But it the base currency is “USD” in the response. Is there anyway to change it to “INR” (Indian Rupees)?
Thanks
/usr/bin/curl -s ‘http://download.finance.yahoo.com/d/quotes.csv?s=fb&f=b2’
returns: N/A
I wonder if yahoo has disabled the real time data?