Est-ce que Yahoo finance Web service a disparu? API a changé? Temporaire?

depuis un certain temps, j'utilise L'API REST suivante pour interroger Yahoo finance sur les prix courants. Elle est documentée dans plusieurs messages de débordement de pile, par exemple Yahoo finance webservice et ailleurs dans yahoo-finance .

http://finance.yahoo.com/webservice/v1/symbols/$SYMBOLS/quote?format=json

où $ SYMBOLS est une liste délimitée par une virgule de symboles d'actions ou d'index.

hier la requête a cessé de fonctionner, rendant seulement un "déplacé temporairement. Redirection vers ..." message.

ce service web est-il maintenant fermé? A-t-il été remplacé par YQL ou une autre API? Les requêtes pour un tableau des prix historiques à "ichart" fonctionnent toujours. Par exemple,

http://ichart.finance.yahoo.com/table.csv?d=2&e=3&f=2016&g=d&a=0&b=1&c=2011&ignore=.csv&s=$SYMBOL

Merci.

36
demandé sur Community 2016-07-13 17:51:37

9 réponses

je faisais face à une question similaire des 2-3 derniers jours. L'url fonctionne sur le smartphone, où sur le bureau, cela donne "Pas d'erreur" paramètre et Code HTTP 406.

cela peut être résolu en ajoutant user agent comme" Mozilla/5.0 (Linux; Android 6.0.1; MotoG3 Build/MPI24.107-55) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/51.0.2704.81 Safari Mobile/537.36" tout en invoquant la requête get.

Par exemple, si vous téléchargez à partir de curl en php utiliser comme suit:

curl_setopt($session,CURLOPT_USERAGENT,"Mozilla/5.0 (Linux; Android 6.0.1; MotoG3 Build/MPI24.107-55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36");

j'espère que cela va résoudre le problème.

27
répondu Hemant Prasad 2016-07-15 08:32:01

j'ai eu le même problème. Voici l'URL de L'API pour tirer le stock de YAHOO. Espérons que cette aide.

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=
6
répondu JetSet 2017-04-04 16:36:39

depuis que le service est en panne, j'utilise L'URL suivante pour interroger les données Yahoo (pour ACA.PA):

Lien

le résultat JSON est différent mais j'ai trouvé les informations qui m'intéressent.

pour plus d'information, visitez la page https://developer.yahoo.com/yql /

6
répondu Dimitri MASSA 2017-10-24 10:46:34

Oui, On dirait Yahoo! a abandonné L'API (privée, la plupart du temps-non documentée) Yahoo Finance sur laquelle beaucoup comptent depuis des années pour les données sur les devises. Nous avons reçu des notifications à ce sujet au cours des dernières 24 heures. (edit: Toutes les réponses semblent être de retour "Not a valid parameter" . Je suppose qu'il y a une chance qu'ils le rallument, mais ils ne supportent pas officiellement cette API n'importe où autant que je peux dire.)

j'ai créé Ouvrir les Taux de Change il y a environ cinq ans, et notre API de taux de change supporte maintenant une communauté de dizaines de milliers de développeurs - et leurs dizaines de millions d'utilisateurs - avec des informations précises et à jour.

n'hésitez pas à consulter notre service gratuit à https://openexchangerates.org .

notre API est dans un format JSON simple et original, qui a en fait pris comme une méthode standard pour afficher les taux parce que c'est tellement simple de travailler avec (contrairement à L'API Yahoo, qui vous a demandé d'analyser les objets obscurs imbriqués pour extraire les informations de base dont vous aviez besoin...)

si vous avez besoin d'aide pour le portage du Yahoo déprécié! API, nous serons heureux de vous aider par e-mail.

(je suis le fondateur de Open Exchange Rates.)

5
répondu William Joss Crowcroft 2016-07-13 17:17:02

je suis l'auteur de ValueViz sur github .

prix quotidiens

vous devez vous familiariser avec les services de repos.

https://quantprice.herokuapp.com/api/v1.1/scoop/day?tickers=MSFT&date=2017-06-09

prix historiques

vous devez fournir une plage de dates:

https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=MSFT&begin=2012-02-19&end=2012-02-20

si vous ne fournissez pas begin ou end, il utilisera la date la plus ancienne ou actuelle:

https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=MSFT&begin=2012-02-19

"151950920 Multiples" tickers

vous pouvez juste virgule séparate tickers:

https://quantprice.herokuapp.com/api/v1.1/scoop/period?tickers=IBM,MSFT&begin = 2012-02-19

Taux limite

toutes les demandes sont limitées à 10 demandes par heure. Si vous souhaitez vous inscrire pour une API d'accès complet, envoyez-moi DM sur twitter. Vous recevrez une clé API à ajouter à L'URL.

nous sommes en train de créer un compte paypal pour abonnement payant sans taux.

liste des titres disponibles

https://github.com/robomotic/valueviz/blob/master/scoop_tickers.csv

je travaille aussi à fournir des données fondamentales et des données d'entreprise à partir D'EDGAR. Acclamation.

4
répondu user2471214 2017-06-12 08:59:02

il redirige vers la même page, mais en ajoutant le paramètre" bypass=true", ce qui donne une erreur.

EDIT: La réponse donnée par https://stackoverflow.com/users/6593038/hemant-prasad travaille pour moi. Lorsque vous changez l'agent utilisateur en un appareil mobile, L'API fonctionne correctement et ne redirige pas jusqu'à présent.

C'est le code que J'utilise en Java (c'est pour la version XML, mais il peut aussi être utilisé pour 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 ());
3
répondu Carlos 2017-05-23 12:34:47

découvrez cet excellent emballage API, disponible sur NuGet: https://github.com/salmonthinlion/YahooFinanceApi

Obtenir des cotations boursières

var quotes = await Yahoo.Symbol("AAPL", "GOOG").Tag(Tag.LastTradePriceOnly, Tag,ChangeAndPercentChange, Tag.DaysLow, Tag.DaysHigh).GetAsync();
var aapl = quotes["AAPL"];
var price = aapl[Tag.LastTradePriceOnly];

obtenir des données historiques pour un stock

// You should be able to query data from various markets including US, HK, TW
var history = await Yahoo.GetHistoricalAsync("AAPL", new DateTime(2016, 1, 1), new DateTime(2016, 7, 1), Period.Daily);
foreach (var candle in history)
{
    Console.WriteLine($"DateTime: {candle.DateTime}, Open: {candle.Open}, High: {candle.High}, Low: {candle.Low}, Close: {candle.Close}, Volume: {candle.Volume}, AdjustedClose: {candle.AdjustedClose}");
}

obtenez l'historique des dividendes pour une action

// You should be able to query data from various markets including US, HK, TW
var dividendHistory = await Yahoo.GetHistoricalDividendsAsync("AAPL", new DateTime(2016, 1, 1), new DateTime(2016, 7, 1));
foreach (var candle in dividendHistory)
{
    Console.WriteLine($"DateTime: {candle.DateTime}, Dividend: {candle.Dividend}");
}
3
répondu Erwin Mayer 2017-05-02 15:31:27

j'ai trouvé un moyen d'utiliser l'API csv.

lien

où vous devez écrire le symbole, les paramètres et les colonnes.

utilisez ce site pour trouver les paramètres nécessaires: http://www.jarloo.com/yahoo_finance /

exemple:

si vous avez besoin de connaître le volume du symbole remplacer la chaîne sl1d1t1c1ohgv par v

et remplacer les colonnes symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Cvolume par volume

Le seul problème est que les données sont un peu aléatoires et ne sont pas en temps réel comme il était dans le webservice API

3
répondu João Nunes 2017-10-24 10:47:10

le Python Yahoo Finance API semble avoir un problème aussi. Si vous l'utilisez pour rechercher, par exemple, Amazon le prix des actions lui montre les deux mêmes valeurs.

from yahoo_finance import Share import time f = open('/tmp/amazon/amzn.csv', 'w') while True:
    amzn=Share("AMZN")
    s = amzn.get_price() + "," + amzn.get_trade_datetime() + '\n'
    print (s)
    f.write (s)
    f.flush()
    time.sleep(5)
    del amzn
0
répondu Walker Rowe 2017-06-22 11:02:10