Исчез ли финансовый веб-сервис 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
Другие вопросы по тегам