¿Cómo puedo obtener cotizaciones de acciones mediante la API de Google Finance?


119

Estoy buscando acceso a datos financieros de los servicios de Google.

Encontré esta URL que obtiene los datos de stock de Microsoft.

¿Cuáles son todos los parámetros posibles que Google permite para este tipo de solicitud HTTP? Me gustaría ver toda la información diferente que pudiera obtener.


36
¿Cómo encontraste esa URL?
timmyc

2
Puede obtener fácilmente datos de Google Finance a través de YQL, que es simple y está basado en REST. Puede encontrar un ejemplo aquí: jarloo.com/google-finance-and-yql
Kelly

Esta es una gran pregunta, ¿hay más respuestas actualizadas?
NickO

1
@ Timmyc- El client=igparámetro me lleva a creer que esto es / fue usado para un widget de iGoogle. Aunque solo una suposición.
dana

Respuestas:


40

Hay una API completa para administrar carteras. * Enlace eliminado. Google ya no proporciona una API de desarrollador para esto.

Obtener cotizaciones de acciones es un poco más difícil. Encontré un artículo donde alguien obtuvo cotizaciones de acciones usando Google Spreadsheets.

También puedes usar los gadgets, pero supongo que eso no es lo que buscas.

La API que mencionas es interesante, pero no parece estar documentada (por lo que he podido encontrar de todos modos).

Aquí hay algo de información sobre precios históricos , solo como referencia.


5
Hay una API indocumentada de Google que puede usar para obtener información de acciones mucho más fácilmente, ya que está basada en REST y no requiere autenticación. Aquí hay un ejemplo de C # jarloo.com/google-stock-api
Kelly

24
Nota: La API de Google Finance ha quedado oficialmente obsoleta a partir del 26 de mayo de 2011 y se cerrará el 20 de octubre de 2012.
Shawnwall

Esta respuesta es en su mayoría fuera de tema. La respuesta a continuación es la correcta.
Dan Dascalescu

74

1
¡Esto me llevó exactamente a lo que estaba buscando! Gracias.
Grizzly Peak Software

Pero no puedo intercambiar el volumen a través de esta URL. ¿Pueden ayudarme si también necesito los detalles del volumen
Sashi Kant

@DanDascalescu Gracias Dan. Parece que estaba caído cuando lo estaba revisando. Comentario borrado.
jpgeek

2
Gracias, sigue siendo relevante hoy en septiembre de 2016
CleanBold

5
Me entristece decir que, a partir de septiembre de 2017, esos enlaces son 404.
St. John Johnson

17

Encontré este sitio útil.

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

Se vincula a una API que yahoo parece ofrecer que es muy simple y útil.

Por ejemplo:

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

Detalles completos aquí:

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


En yahoo para conseguirlo usando curl curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv". En curl -Les necesario, de lo contrario no funcionará
arulraj.net

9

Editar: Google eliminó la llamada a la API. por lo que ya no funciona.

De acuerdo con la respuesta de Pareshkumar. Ahora hay un contenedor de python googlefinance para la llamada a la URL.

Instalar googlefinance

$pip install googlefinance

Es fácil obtener el precio actual de las acciones:

>>> 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"
  }
]

Google Finance es una fuente que proporciona datos de acciones en tiempo real. También hay otras API de yahoo, como yahoo-finance , pero se retrasan 15 minutos para las acciones de NYSE y NASDAQ.


buen tiempo real, lo que estaba buscando!
eusoubrasileiro


3

Sobre la base de los hombros de gigantes ... aquí hay un resumen que escribí para convertir todos los datos de acciones actuales de Google en variables de shell Bash locales:

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"

Entonces tendrás variables como $ GF_last $ GF_open $ GF_volume, etc. disponibles. Ejecute env o vea 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.

Entonces, para stock="FBM" /tmp/stockprice.tmp.log (y su entorno) contendrá:

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

¿Puedo usar la URL para una cotización de acciones en tiempo real?
Sashi Kant

Mayormente sí. Compare GF_trade_time_utccon la hora / fecha actual y usted será el juez.
Marcos

Gracias por su respuesta, pero aquí el volumen no viene en json, ¿hay alguna otra forma o URL para negociar el volumen?
Sashi Kant


3

El problema con los datos de Yahoo y Google es que violan los términos de servicio si los usa para uso comercial. Cuando su sitio / aplicación aún es pequeño, no es gran cosa, pero tan pronto como crece un poco, comienza a cesar y desiste de los intercambios. Un ejemplo de solución con licencia es FinancialContent: http://www.financialcontent.com/json.php o Xignite


2

A continuación, se muestra un ejemplo que puede utilizar. Aún no tengo Google Finance, pero aquí está el ejemplo de Yahoo. Necesitará el HTMLAgilityPack , que es increíble. Caza feliz del símbolo.

Llame al procedimiento usando YahooStockRequest(string Symbols);

Donde Símbolos = una cadena de símbolos delimitada por comas, o solo un 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

La forma más sencilla, como ha explicado, es este enlace para 'Dow Jones Industrial Average'

El enlace 2 es para 'NASDAQ-100'

y para todo lo relacionado con NASDAQ link 3

Creo que debería ser así, de lo contrario, quieres lo mismo en las notaciones JSON que en Microsoft

Por favor, consulte esta publicación anterior. Creo que esto ayudará.

Actualizar:

Para conocer los detalles del volumen y otros detalles, he creado un vbscript que usa el objeto IE para obtener detalles del enlace y alerta al contenido en la identificación particular (cree un archivo .vbs y ejecútelo ..

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

esto alertará a los valores de una 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

Estoy seguro de que esto ayudará ...


Muchas gracias por tu respuesta. Pero necesito los datos en tiempo real en json junto con el volumen negociado, ¿hay algún servicio de descanso?
Sashi Kant

1
Consulte esto para obtener detalles sobre tiempo real. Generalmente, estos vínculos proporcionan datos en tiempo real con alguna excepción .. google.com/googlefinance/disclaimer/#realtime
MarmiK

Gracias una vez más hermano, este fue realmente útil, pero aún así, ¿cómo puedo obtener la información del volumen?
Sashi Kant

1
Es si conoce VBA o VBS en la página ( google.com/… ) la identificación del elemento es 'market-data-div' que div contiene 2 divs más y el segundo div tiene la tabla que contiene un volumen <td class="val">759.30M</td>como este. Si desea más ayuda, publique algún código de su trabajo o el violín servirá.
MarmiK

No señor, no tengo idea de VBA o VBS, pero lo comprobaré definitivamente. ¿Puede proporcionarme la URL, que da como resultado la cotización de acciones en tiempo real junto con información de volumen?
Sashi Kant


1

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

Le devolverá todos los detalles disponibles sobre el stock mencionado.

por ejemplo, la salida se vería a continuación:

// [ {
"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"
}
]

Puede tener el símbolo de las acciones de su empresa al final de esta URL para obtener sus detalles:

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

0

Para encontrar datos de gráficos utilizando la API de datos financieros de Google, uno simplemente debe ir a Google como si estuviera buscando un término de búsqueda, escribir finanzas en el motor de búsqueda y aparecerá un enlace a las finanzas de Google. Una vez en el motor de búsqueda de finanzas de Google, escriba el nombre de la clave en el motor de API de datos financieros y se mostrará el resultado. Sin embargo, debe tenerse en cuenta que todos los gráficos financieros de Google tienen un retraso de 15 minutos y, como máximo, se pueden utilizar para comprender mejor el historial pasado del ticker, en lugar del precio actual.

Una solución a la información de gráficos retrasada es obtener una API de datos financieros en tiempo real. Un ejemplo de uno sería la interfaz de comando de gráfico de barras que tiene información de cotización en tiempo real, junto con otras características detalladas que facilitan la búsqueda del gráfico exacto que está buscando. Con funciones totalmente personalizables y herramientas de programación específicas para la información comercial precisa que necesita, las herramientas de barchartondemand superan a las finanzas de Google por un amplio margen.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.