Исчез ли финансовый веб-сервис Yahoo? API изменился? Временно вниз?
В течение некоторого времени я использовал следующий API REST для запроса финансов Yahoo по текущим ценам. Это задокументировано в нескольких сообщениях о переполнении стека, например, в веб-сервисе Yahoo Finance и других местах в Yahoo-Finance.
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
Благодарю.
10 ответов
Я сталкивался с подобной проблемой в последние 2-3 дня. URL работает на смартфоне, где на рабочем столе выдает ошибку "Недопустимый параметр" и код 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 Mobile Safari/537.36", в то время как вызывая запрос get.
Например, если вы загружаете из curl в php, используйте следующее:
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");
Я надеюсь, что это решит проблему.
Да, это похоже на Yahoo! прекратил (частный, в основном недокументированный) Yahoo Finance API, на который многие годами полагаются в отношении валютных данных. За последние 24 часа мы получили некоторые уведомления об этом. (изменить: все ответы возвращаются "Not a valid parameter"
, Я предполагаю, что есть шанс, что они могут снова включить его, но, насколько я могу судить, они официально не поддерживают этот API где-либо.)
Я создал Open Exchange Rates около пяти лет назад, и теперь наш API обменного курса поддерживает сообщество из десятков тысяч разработчиков - и их десятков миллионов пользователей - с точной, актуальной информацией.
Пожалуйста, не стесняйтесь проверить наш сервис навсегда бесплатно на https://openexchangerates.org/.
Наш API представлен в простом, оригинальном формате JSON, который фактически стал стандартным методом отображения тарифов, потому что с ним очень просто работать (в отличие от API Yahoo, который требовал, чтобы вы анализировали скрытые вложенные объекты, чтобы извлечь основные информация вам нужна...)
Если вам нужна помощь в портировании с устаревшего Yahoo! API, мы будем рады помочь по электронной почте.
(Я являюсь основателем Open Exchange Rates.)
Я была такая же проблема. Вот URL-адрес API для загрузки акций YAHOO. Надеюсь это поможет.
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=
Поскольку служба не работает, я использую следующий URL для запроса данных Yahoo (для ACA.PA):
Результат JSON другой, но я нашел интересующую меня информацию.
Для получения дополнительной информации посетите страницу https://developer.yahoo.com/yql/
Я автор ValueViz на GitHub.
Дневные цены
Вы должны быть знакомы с услугами 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 полного доступа, пришлите мне DM в твиттере. Вы получите ключ API для добавления в URL.
Мы создаем учетную запись PayPal для платной подписки без тарифов.
Список доступных тикеров
https://github.com/robomotic/valueviz/blob/master/scoop_tickers.csv
Я также работаю, чтобы предоставить фундаментальные данные и данные компании из EDGAR. Приветствия.
Проверьте этот превосходный API Wrapper, доступный на NuGet: 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}");
}
Он перенаправляет на ту же страницу, но добавляет параметр "bypass=true", который выдает ошибку.
РЕДАКТИРОВАТЬ: Ответ, данный 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 ());
Я нашел способ использовать API CSV.
где вам нужно написать символ, параметры и столбцы.
Используйте этот веб-сайт для поиска необходимых параметров: http://www.jarloo.com/yahoo_finance/
пример:
Если вам нужно узнать объем символа, замените строку sl1d1t1c1ohgv
с v
и заменить столбцы symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Cvolume
с volume
Единственная проблема заключается в том, что данные случайные, а не в реальном времени, как это было в API веб-сервиса.
Я думаю, это может помочь, я создал веб-сервис для всех тикеров Nasdaq/Nyse, вы можете протестировать этот REST API и проверить, соответствует ли он вашим потребностям. Также вы можете посетить этот веб-сайт ниже для примера использования.
Конечная точка Rest API: https://rapidapi.com/moneygoddess888/api/nasdaq-stocks-dividend-history-live
Пример использования: https://nasdaq-dividend-search-api.herokuapp.com
У Python Yahoo Finance API тоже есть проблемы. Если вы используете его, например, для поиска цен на акции Amazon, он просто показывает одни и те же два значения снова и снова.
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