web-dev-qa-db-fra.com

Le service Web Yahoo Finance a-t-il disparu? L'API a changé? En panne temporairement?

Depuis un certain temps, j'utilise l'API REST suivante pour interroger Yahoo Finance sur les prix actuels. Il est documenté dans plusieurs messages de dépassement 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 de symboles boursiers ou index séparés par des virgules.

Hier, la requête a cessé de fonctionner et n'a renvoyé qu'un message "Déplacé temporairement. Redirection vers ...".

Ce service Web est-il maintenant fermé? At-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.

38
K Markey

Je faisais face à un problème similaire des 2-3 derniers jours. L'URL fonctionne sur le smartphone, où sur le bureau, l'erreur "Paramètre non valide" et le code HTTP 406 sont générés.

Cela peut être résolu en ajoutant l'agent utilisateur en tant que "Mozilla/5.0 (Linux; Android 6.0.1; MotoG3 Build/MPI24.107-55) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36 "lors de l'appel de la demande d'obtention.

Par exemple, si vous téléchargez à partir de curl en php, utilisez 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 résoudra le problème.

28
Hemant Prasad

J'ai eu le même problème. Voici l'URL de l'API pour extraire des actions de YAHOO. J'espère que cela t'aides.

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
JetSet

Le service étant 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'informations, visitez la page https://developer.yahoo.com/yql/

6
Dimitri MASSA

Oui, il semble que Yahoo! a abandonné l'API Yahoo Finance (privée, généralement non documentée) sur laquelle beaucoup s'appuient depuis des années pour les données de devise. Nous avons reçu des notifications à ce sujet au cours des dernières 24 heures. (edit: toutes les réponses semblent retourner "Not a valid parameter". Je suppose qu'il est possible qu'ils le rallument, mais ils ne supportent pas officiellement cette API où que ce soit à ma connaissance.)

J'ai créé Open Exchange Rates il y a environ cinq ans et notre API de taux de change prend désormais en charge 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 Forever Free à l'adresse https://openexchangerates.org .

Notre API se présente sous un format JSON simple et original, qui est devenu une méthode standard d’affichage des taux car il est très simple de travailler avec ce dernier (contrairement à l’API de Yahoo, qui nécessitait l’analyse des objets imbriqués obscurs pour extraire le informations dont vous aviez besoin ...)

Si vous avez besoin d'assistance pour effectuer le portage à partir de Yahoo! API, nous nous ferons un plaisir de vous aider par courrier électronique.

(Je suis le fondateur de Open Exchange Rates.)

5

Je suis l'auteur de ValueViz sur github .

Prix journaliers

Vous devez connaître les services RESTFUL.

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

Si vous ne fournissez pas début ou fin, il utilisera la date la plus ancienne ou la plus récente:

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

Plusieurs tickers

Vous pouvez simplement utiliser des tickers séparés par des virgules:

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

Limite de débit

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

Nous mettons en place un compte Paypal pour un abonnement payant sans tarif.

Liste des tickers disponibles

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

Je travaille également à fournir des données fondamentales et des données d’entreprise à partir d’EDGAR. À votre santé.

4
user2471214

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, remplacez la chaîne sl1d1t1c1ohgv par v

et remplacez 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 pas en temps réel comme dans l'API Webservice

3
João Nunes

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 fonctionne pour moi. Lorsque vous remplacez l'agent utilisateur par un périphérique mobile, l'API fonctionne correctement et ne redirige pas jusqu'à présent.

C'est le code que j'utilise dans 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
Carlos

Découvrez cet excellent API Wrapper, 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 les données historiques d'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}");
}

Obtenir 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
Erwin Mayer