interesting bridge
Business, webdev

Yahoo Finance (hidden) API

London vis a vis Finance
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!

Standard

41 thoughts on “Yahoo Finance (hidden) API

  1. Pingback: Yahoo Finance (hidden) API « Ido's Blog

  2. 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?

  3. 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?

  4. 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.

  5. 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.

    • Bob Kaye says:

      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

      • Shivam Garg says:

        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

  6. 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.

  7. 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

  8. Deepak Mani says:

    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.

  9. Daahrmmie Boiyelove says:

    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?

  10. Koen says:

    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.

  11. Sean says:

    /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?

  12. Sturle says:

    What is the time zone for t1 etc? It seems to be UTC+1. Is this related to some time zone, e.g. Europe/London? (CET is now UTC+2 due to DST.)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s