Como posso obter cotações de ações usando a API do Google Finance?


119

Estou procurando acesso a dados financeiros de serviços do Google.

Encontrei este URL que obtém os dados de ações da Microsoft.

Quais são todos os parâmetros possíveis que o Google permite para esse tipo de solicitação HTTP? Gostaria de ver todas as diferentes informações que posso obter.


36
Como você encontrou esse URL?
timmyc de

2
Você pode obter facilmente dados do Google Finance via YQL, que é simples e baseado em REST. Um exemplo pode ser encontrado aqui: jarloo.com/google-finance-and-yql
Kelly

Esta é uma ótima pergunta, há mais respostas atualizadas?
NickO

1
@ Timmyc- O client=igparâmetro me leva a acreditar que este é / foi usado para um widget do iGoogle. Só um palpite.
dana

Respostas:


40

Existe toda uma API para gerenciamento de portfólios. * Link removido. O Google não fornece mais uma API de desenvolvedor para isso.

Obter cotações de ações é um pouco mais difícil. Encontrei um artigo em que alguém obteve cotações de ações usando o Google Spreadsheets.

Você também pode usar os gadgets mas acho que não é isso que você procura.

A API que você mencionou é interessante, mas não parece estar documentada (pelo que pude encontrar de qualquer maneira).

Aqui estão algumas informações sobre os preços históricos , apenas para referência.


5
Existe uma API não documentada do google que você pode usar para obter informações de estoque com muito mais facilidade, pois é baseada em REST e não requer autenticação. Aqui está um exemplo de C # jarloo.com/google-stock-api
Kelly,

24
Observação: a API do Google Finance foi oficialmente suspensa em 26 de maio de 2011 e será encerrada em 20 de outubro de 2012.
shawnwall

Esta resposta está quase totalmente fora do tópico. A resposta abaixo é a correta.
Dan Dascalescu,

74

1
Isso me levou exatamente ao que eu estava procurando! Obrigado.
Grizzly Peak Software

Mas não consigo fazer com que o volume negociado através deste URL, você pode me ajudar, se eu também precisar dos detalhes do volume
Sashi Kant

@DanDascalescu Obrigado Dan. Parece que acabou de cair quando eu o estava verificando. Comentário deletado.
jpgeek de

2
Obrigado, ainda relevante hoje em setembro de 2016
CleanBold

5
Estou triste em dizer que, em setembro de 2017, esses links estavam 404ing.
St. John Johnson

17

Eu achei este site útil.

http://benjisimon.blogspot.com/2009/01/truly-simple-stock-api.html

Ele se vincula a uma API que o yahoo parece oferecer, que é muito simples e útil.

Por exemplo:

http://finance.yahoo.com/d/quotes.csv?s=GOOG+AAPL&f=snl1

Detalhes completos aqui:

http://www.gummy-stuff.org/Yahoo-data.htm


No Yahoo para obter isso usando curl curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv". No curl -Lé necessário, caso contrário não funcionará
arulraj.net

9

Editar: a chamada da API foi removida pelo google. então ele não está mais funcionando.

Concordo com a resposta de Pareshkumar. Agora, há um wrapper Python googlefinance para a chamada de url.

Instale o googlefinance

$pip install googlefinance

É fácil obter o preço atual das ações:

>>> from googlefinance import getQuotes
>>> import json
>>> print json.dumps(getQuotes('AAPL'), indent=2)
[
  {
    "Index": "NASDAQ", 
    "LastTradeWithCurrency": "129.09", 
    "LastTradeDateTime": "2015-03-02T16:04:29Z", 
    "LastTradePrice": "129.09", 
    "Yield": "1.46", 
    "LastTradeTime": "4:04PM EST", 
    "LastTradeDateTimeLong": "Mar 2, 4:04PM EST", 
    "Dividend": "0.47", 
    "StockSymbol": "AAPL", 
    "ID": "22144"
  }
]

As finanças do Google são uma fonte que fornece dados de estoque em tempo real. Existem também outras APIs do yahoo, como yahoo-finance , mas estão atrasadas em 15 minutos para ações da NYSE e NASDAQ.


bom tempo real, o que eu estava procurando!
eusoubrasileiro


3

Construindo sobre ombros de gigantes ... aqui está um one-liner que escrevi para converter todos os dados de estoque atuais do Google em variáveis ​​locais do shell Bash:

stock=$1 

# Fetch from Google Finance API, put into local variables
eval $(curl -s "http://www.google.com/ig/api?stock=$stock"|sed 's/</\n</g' |sed '/data=/!d; s/ data=/=/g; s/\/>/; /g; s/</GF_/g' |tee /tmp/stockprice.tmp.log)

echo "$stock,$(date +%Y-%m-%d),$GF_open,$GF_high,$GF_low,$GF_last,$GF_volume"

Então você terá variáveis ​​como $ GF_last $ GF_open $ GF_volume etc. prontamente disponíveis. Execute env ou veja dentro de /tmp/stockprice.tmp.log

http://www.google.com/ig/api?stock=TVIX&output=csv by itself returns:

<?xml version="1.0"?>
<xml_api_reply version="1">
<finance module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
<symbol data="TVIX"/>
<pretty_symbol data="TVIX"/>
<symbol_lookup_url data="/finance?client=ig&amp;q=TVIX"/>
<company data="VelocityShares Daily 2x VIX Short Term ETN"/>
<exchange data="AMEX"/>
<exchange_timezone data="ET"/>
<exchange_utc_offset data="+05:00"/>
<exchange_closing data="960"/>
<divisor data="2"/>
<currency data="USD"/>
<last data="57.45"/>
<high data="59.70"/>
<low data="56.85"/>

etc.

Portanto, para stock="FBM" /tmp/stockprice.tmp.log (e seu ambiente) conterá:

GF_symbol="FBM"; 
GF_pretty_symbol="FBM"; 
GF_symbol_lookup_url="/finance?client=ig&amp;q=FBM"; 
GF_company="Focus Morningstar Basic Materials Index ETF"; 
GF_exchange="NYSEARCA"; 
GF_exchange_timezone=""; 
GF_exchange_utc_offset=""; 
GF_exchange_closing=""; 
GF_divisor="2"; 
GF_currency="USD"; 
GF_last="22.82"; 
GF_high="22.82"; 
GF_low="22.82"; 
GF_volume="100"; 
GF_avg_volume=""; 
GF_market_cap="4.56"; 
GF_open="22.82"; 
GF_y_close="22.80"; 
GF_change="+0.02"; 
GF_perc_change="0.09"; 
GF_delay="0"; 
GF_trade_timestamp="8 hours ago"; 
GF_trade_date_utc="20120228"; 
GF_trade_time_utc="184541"; 
GF_current_date_utc="20120229"; 
GF_current_time_utc="033534"; 
GF_symbol_url="/finance?client=ig&amp;q=FBM"; 
GF_chart_url="/finance/chart?q=NYSEARCA:FBM&amp;tlf=12"; 
GF_disclaimer_url="/help/stock_disclaimer.html"; 
GF_ecn_url=""; 
GF_isld_last=""; 
GF_isld_trade_date_utc=""; 
GF_isld_trade_time_utc=""; 
GF_brut_last=""; 
GF_brut_trade_date_utc=""; 
GF_brut_trade_time_utc=""; 
GF_daylight_savings="false"; 

Posso usar o URL para uma cotação de ações em tempo real?
Sashi Kant de

Principalmente sim. Compare GF_trade_time_utccom a hora / data atual e você será o juiz.
Marcos

Obrigado pela sua resposta, mas aqui o volume não está chegando no json, existe alguma outra forma ou URL de obter o volume negociado?
Sashi Kant


3

O problema com os dados do Yahoo e do Google é que eles violam os termos de serviço se forem usados ​​para uso comercial. Quando seu site / aplicativo ainda é pequeno não é nada demais, mas assim que você cresce um pouco você começa a parar e desistir das trocas. Um exemplo de solução licenciada é FinancialContent: http://www.financialcontent.com/json.php ou Xignite


2

Aqui está um exemplo que você pode usar. Ainda não tenho o Google Finance, mas aqui está o exemplo do Yahoo. Você precisará do HTMLAgilityPack , que é incrível. Caça De Símbolo Feliz.

Chame o procedimento usando YahooStockRequest(string Symbols);

Onde Símbolos = uma sequência de símbolos delimitada por vírgulas ou apenas um símbolo

public string YahooStockRequest(string Symbols,bool UseYahoo=true)
        {
            {
                string StockQuoteUrl = string.Empty;

                try
                {
                    // Use Yahoo finance service to download stock data from Yahoo
                    if (UseYahoo)
                    {
                        string YahooSymbolString = Symbols.Replace(",","+");
                        StockQuoteUrl = @"http://finance.yahoo.com/q?s=" + YahooSymbolString + "&ql=1";
                    }
                    else
                    {
                        //Going to Put Google Finance here when I Figure it out.
                    }

                    // Initialize a new WebRequest.
                    HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(StockQuoteUrl);
                    // Get the response from the Internet resource.
                    HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();
                    // Read the body of the response from the server.

                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                    string pageSource;
                    using (StreamReader sr = new StreamReader(webresp.GetResponseStream()))
                    {
                        pageSource = sr.ReadToEnd();
                    }
                    doc.LoadHtml(pageSource.ToString());
                    if (UseYahoo)
                    {
                        string Results=string.Empty;
                        //loop through each Symbol that you provided with a "," delimiter
                        foreach (string SplitSymbol in Symbols.Split(new char[] { ',' }))
                        {
                            Results+=SplitSymbol + " : " + doc.GetElementbyId("yfs_l10_" + SplitSymbol).InnerText + Environment.NewLine;
                        }
                        return (Results);
                    }
                    else
                    {
                        return (doc.GetElementbyId("ref_14135_l").InnerText);
                    }

                }
                catch (WebException Webex)
                {
                    return("SYSTEM ERROR DOWNLOADING SYMBOL: " + Webex.ToString());

                }

            }
        }

2

A maneira mais simples como você explicou é este link para 'Média Industrial Dow Jones'

Link 2 é para 'NASDAQ-100'

e para tudo relacionado ao NASDAQ link 3

Acho que deveria ser assim, caso contrário, você deseja o mesmo em notações JSON da mesma forma que a Microsoft

Por favor, consulte esta postagem antiga , acho que isso vai ajudar,

Atualizar:

Para saber os detalhes de volume e outros detalhes, criei um vbscript que está usando o objeto do IE para buscar detalhes do link e alerta o conteúdo no id específico (crie um arquivo .vbs e execute-o ..

Set IE = CreateObject("InternetExplorer.Application")
while IE.readyState = 4: WScript.Sleep 10: wend
IE.Navigate "https://www.google.com/finance?q=INDEXNASDAQ%3ANDX&sq=NASDAQ&sp=2&ei=B3UoUsiIH5DIlgPEsQE"
IE.visible = true
while IE.readyState = 4: WScript.Sleep 10: wend
dim ht
ht= IE.document.getElementById("market-data-div").innerText
msgBox ht
IE.quit

isso alertará os valores de uma página como esta

3,124.54 0.00 (0.00%)
Sep 4 - Close
INDEXNASDAQ real-time data - Disclaimer
Range       -
52 week 2,494.38 - 3,149.24
Open        -
Vol.    0.00

Tenho certeza que isso vai ajudar ..


Muito obrigado pela sua resposta. Mas eu preciso dos dados em tempo real em json junto com o volume negociado, há algum serviço de descanso?
Sashi Kant

1
Consulte isso para obter detalhes em tempo real; geralmente, esses links fornecem dados de tempo real, com algumas exceções. Google.com/googlefinance/disclaimer/#realtime
MarmiK

Obrigado mais uma vez mano, Este foi realmente útil, mas ainda assim como posso obter as informações de volume?
Sashi Kant,

1
Se você estiver ciente do VBA ou VBS na página ( google.com/… ), o id do elemento é 'market-data-div' que div contém mais 2 divs e o segundo div tem a tabela que contém o volume <td class="val">759.30M</td>como este. Se quiser mais ajuda, poste algum código de seu trabalho ou violino servirá.
Marmik

Não senhor, não tenho nenhuma ideia de VBA ou VBS, mas vou verificar isso definitivamente. Você pode me fornecer a URL, que resulta na cotação de ações em tempo real, juntamente com informações de volume?
Sashi Kant,


1

Experimente: http://finance.google.com/finance/info?client=ig&q=NASDAQ:GOOGL

Ele retornará a você todos os detalhes disponíveis sobre o estoque mencionado.

por exemplo, a saída ficaria assim abaixo:

// [ {
"id": "694653"
,"t" : "GOOGL"
,"e" : "NASDAQ"
,"l" : "528.08"
,"l_fix" : "528.08"
,"l_cur" : "528.08"
,"s": "0"
,"ltt":"4:00PM EST"
,"lt" : "Dec 5, 4:00PM EST"
,"lt_dts" : "2014-12-05T16:00:14Z"
,"c" : "-14.50"
,"c_fix" : "-14.50"
,"cp" : "-2.67"
,"cp_fix" : "-2.67"
,"ccol" : "chr"
,"pcls_fix" : "542.58"
}
]

Você pode colocar o símbolo das ações de sua empresa no final deste URL para obter seus detalhes:

http://finance.google.com/finance/info?client=ig&q=<YOUR COMPANY STOCK SYMBOL>

0

Para encontrar dados gráficos usando a API de dados financeiros do Google, basta ir ao Google como se procurasse um termo de busca, digitar finanças no mecanismo de busca e um link para finanças do Google aparecerá. Uma vez no mecanismo de pesquisa de finanças do Google, digite o nome do ticker no mecanismo de API de dados financeiros e o resultado será exibido. No entanto, deve-se observar que todos os gráficos financeiros do Google têm um atraso de 15 minutos e, no máximo, podem ser usados ​​para uma melhor compreensão do histórico do ticker, em vez do preço atual.

Uma solução para as informações de gráfico atrasadas é obter uma API de dados financeiros em tempo real. Um exemplo seria a interface barchartondemand, que possui informações de cotação em tempo real, junto com outros recursos detalhados que tornam mais simples encontrar o gráfico exato que você está procurando. Com recursos totalmente personalizáveis ​​e ferramentas de programação específicas para as informações comerciais precisas de que você precisa, as ferramentas do barchartondemand superam as finanças do Google por uma ampla margem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.