Search code examples
javayahoo-finance

how to solve moved temporarily error for yahoo finance api


I am working on Yahoo stock data. Yesterday I got the stock data by using finance web service api. But today when I am trying to get the data from api I am getting the below error:

{
   "p": {
      "a": {
         "href": "https://finance.yahoo.com/webservice/v1/symbols/msft,goog,appl,orcl,yhoo,tcs,amzn,INFY.NS/quote?bypass=true&format=json&view=detail",
         "content": "https://finance.yahoo.com/webservice/v1/symbols/msft,goog,appl,orcl,yhoo,tcs,amzn,INFY.NS/quote?bypass=true&format=json&view=detail"
      },
      "content": "Moved Temporarily. Redirecting to"
   }
}

Saying that it was moved temporarily.
Why am I getting this error? Did I reach the API limit for today?

NOTE:
Yesterday I kept it running to test the API request limit. But when I am trying to run today it showing the above error.

If the API limit for IP is reached then when do I get access to the data again?
This is the API which I am using:

http://finance.yahoo.com/webservice/v1/symbols/msft,goog,appl,orcl,yhoo,tcs,amzn,INFY.NS/quote?format=json&view=detail

Solution

  • As it was commented here: https://stackoverflow.com/a/38390559/6586718, you have to change the user-agent to a mobile device.

    On Java, I do the following, and it's working (this is for XML, but the same can be applied to JSON):

    URL url = new URL ("https://finance.yahoo.com/webservice/v1/symbols/" + stocks + "/quote");
    HttpURLConnection urlc = (HttpURLConnection) url.openConnection ();
    urlc.setRequestProperty ("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; MotoE2(4G-LTE) Build/MPI24.65-39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36");
    Document xml = DocumentBuilderFactory.newInstance ().newDocumentBuilder ().parse (urlc.getInputStream ());