雅虎财务网络服务是否已经消失? API改变了吗?暂时下来?

时间:2016-07-13 14:51:37

标签: yahoo-api yahoo-finance

很长一段时间以来,我一直在使用以下REST API来查询雅虎财务的当前价格。它记录在几个Stack Overflow帖子中,例如: Yahoo finance webservice以及中的其他地方。

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

其中$ SYMBOLS是逗号分隔的股票或索引符号列表。

昨天查询停止工作,只返回"暂时移动。重定向到..."信息。

此网络服务现已关闭吗?是否已被YQL或其他API取代?查询历史价格表到" ichart"还在工作。如,

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

感谢。

9 个答案:

答案 0 :(得分:27)

过去2-3天我遇到了类似的问题。网址在智能手机上运行,​​在桌面上它提供了#34;不是有效参数"错误和HTTP代码406.

这可以通过将用户代理添加为" Mozilla / 5.0(Linux; Android 6.0.1; MotoG3 Build / MPI24.107-55)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 51.0.2704.81来解决。移动Safari / 537.36"在调用get请求时。

例如,如果您从php中使用curl下载,请使用如下:

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");

我希望这能解决问题。

答案 1 :(得分:6)

由于服务已关闭,我使用以下URL查询Yahoo数据(对于ACA.PA):

Link

JSON结果不同但我发现了我感兴趣的信息。

有关详细信息,请访问页面https://developer.yahoo.com/yql/

答案 2 :(得分:6)

我有同样的问题。这是从YAHOO提取股票的API URL。希望这会有所帮助。

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=

答案 3 :(得分:5)

是的,看起来好像是雅虎!已停止使用多年来一直依赖货币数据的(私人的,大多数未记录的)雅虎财务API。我们在过去24小时内收到了一些通知。 (编辑:所有回复似乎都在返回"Not a valid parameter"。我想他们有可能会重新开启它,但就我所知,他们并没有正式支持该API。)

我大约五年前创建了Open Exchange Rates,我们的汇率API现在支持由数万名开发人员及其数千万用户组成的社区,并提供准确,最新的信息。 / p>

欢迎您在https://openexchangerates.org查看我们的Forever免费服务。

我们的API采用简单的原始JSON格式,实际上已经成为显示速率的标准方法,因为它使用起来非常简单(与Yahoo API不同,后者要求您解析模糊不清的嵌套对象你需要的基本信息...)

如果您需要协助移植已弃用的Yahoo! API,我们很乐意通过电子邮件提供帮助。

(我是开放汇率的创始人。)

答案 4 :(得分:4)

我是github上的ValueViz的作者。

每日价格

您需要熟悉RESTFUL服务。

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

历史价格

您必须提供日期范围:

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

如果您不提供开始或结束,则会使用最早或当前日期:

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

多个代码

你可以用逗号分隔代码:

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

费率限制

所有请求的速率限制为每小时10个请求。如果你想注册一个完整的访问API,请在twitter上发送给我DM。您将收到一个API密钥以添加到URL。

我们正在为付费订阅设置一个paypal帐户,不含费率。

可用的代码列表

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

我也在努力提供EDGAR的基础数据和公司数据。欢呼声。

答案 5 :(得分:3)

它重定向到同一页面,但添加参数" bypass = true",这会产生错误。

编辑: https://stackoverflow.com/users/6593038/hemant-prasad给出的答案对我有用。 将用户代理更改为移动设备时,API工作正常,并且到目前为止还没有重定向。

这是我在Java中使用的代码(它是XML版本的代码,但它也可用于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 ());

答案 6 :(得分:3)

我找到了一种使用csv API的方法。

link

您需要编写符号,参数和列。

使用此网站查找所需参数:http://www.jarloo.com/yahoo_finance/

示例:

如果您需要知道符号的音量 将字符串sl1d1t1c1ohgv替换为v

并将symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Cvolume列替换为volume

唯一的问题是数据有点随机,而不是像在webservice API中那样实时

答案 7 :(得分:3)

查看NuGet上提供的优秀API包装器:https://github.com/salmonthinlion/YahooFinanceApi

获取股票报价

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];

获取股票的历史数据

// 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}");
}

获取股票的股息历史记录

// 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}");
}

答案 8 :(得分:-1)

Python Yahoo Finance API似乎也有问题。如果您使用它来查找,例如亚马逊股票价格,它只是一遍又一遍地显示相同的两个值。

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