Come posso ottenere quotazioni di borsa utilizzando l'API di Google Finance?


119

Sto cercando di accedere a dati finanziari dai servizi Google.

Ho trovato questo URL che ottiene i dati di borsa per Microsoft.

Quali sono tutti i possibili parametri che Google consente per questo tipo di richiesta HTTP? Mi piacerebbe vedere tutte le diverse informazioni che ho potuto ottenere.


36
Come hai trovato quell'URL?
timmyc

2
Puoi ottenere facilmente i dati di Google Finance tramite YQL, che è semplice e basato su REST. Un esempio può essere trovato qui: jarloo.com/google-finance-and-yql
Kelly

Questa è un'ottima domanda, ci sono più risposte aggiornate?
NickO

1
@ Timmyc- Il client=igparametet mi porta a credere che sia / sia stato utilizzato per un widget iGoogle. Solo un'ipotesi però.
dana

Tieni presente che se la tua applicazione è destinata al pubblico, l'utilizzo dell'API di Google Finance va contro i termini di servizio di Google . @timmyc: il &clientparametro non è necessario. finance.google.com/finance/info?q=NASDAQ%3aMSFT funziona.
Dan Dascalescu

Risposte:


40

C'è un'intera API per la gestione dei portafogli. * Collegamento rimosso. Google non fornisce più un'API per sviluppatori per questo.

Ottenere quotazioni di borsa è un po 'più difficile. Ho trovato un articolo in cui qualcuno ha ottenuto quotazioni di borsa utilizzando Google Spreadsheets.

Puoi anche usare i gadget, ma immagino che non sia quello che stai cercando.

L'API che hai menzionato è interessante ma non sembra essere documentata (per quanto sono riuscito a trovare comunque).

Ecco alcune informazioni sui prezzi storici , solo per riferimento.


5
Esiste un'API non documentata di Google che puoi utilizzare per ottenere informazioni sulle scorte molto più facilmente poiché è basata su REST e non richiede autenticazione. Ecco un esempio in C # jarloo.com/google-stock-api
Kelly

24
Nota: l'API di Google Finance è stata ufficialmente ritirata dal 26 maggio 2011 e verrà chiusa il 20 ottobre 2012.
shawnwall

Questa risposta è per lo più fuori tema. La risposta sotto è quella corretta.
Dan Dascalescu

74

1
Questo mi ha portato esattamente a quello che stavo cercando! Grazie.
Grizzly Peak Software

Ma non riesco a scambiare il volume tramite questo URL, puoi aiutarmi, se ho bisogno anche dei dettagli del volume
Sashi Kant

@DanDascalescu Grazie Dan. Sembra che fosse appena giù quando l'ho controllato. Commento eliminato.
jpgeek

2
Grazie, ancora rilevante oggi a settembre 2016
CleanBold

5
Mi dispiace dire che a partire da settembre 2017, quei collegamenti sono 404.
St. John Johnson

17

Ho trovato utile questo sito.

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

Si collega a un'API che yahoo sembra offrire che è molto semplice e utile.

Per esempio:

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

Dettagli completi qui:

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


In yahoo per ottenerlo usando curl curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv". In curl -Lè necessario altrimenti non funzionerà
arulraj.net

9

Modifica: la chiamata api è stata rimossa da Google. quindi non funziona più.

D'accordo con la risposta di Pareshkumar. Ora c'è un googlefinance wrapper Python per la chiamata all'URL .

Installa googlefinance

$pip install googlefinance

È facile ottenere il prezzo corrente delle azioni:

>>> 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 è una fonte che fornisce dati di borsa in tempo reale. Ci sono anche altre API di yahoo, come yahoo-finance , ma sono ritardate di 15 minuti per le azioni NYSE e NASDAQ.


bel tempo reale, quello che stavo cercando!
eusoubrasileiro


3

Basandosi sulle spalle dei giganti ... ecco una frase che ho scritto per eseguire lo zapping di tutti i dati di borsa correnti di Google in variabili di shell Bash locali:

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"

Quindi avrai variabili come $ GF_last $ GF_open $ GF_volume ecc. Prontamente disponibili. Esegui env o guarda all'interno /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.

Quindi per stock="FBM" /tmp/stockprice.tmp.log (e il tuo ambiente) conterrà:

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 utilizzare l'URL per una quotazione di borsa in tempo reale?
Sashi Kant

Per lo più sì. Confronta GF_trade_time_utcl'ora / la data corrente e sarai il giudice.
Marcos

Grazie per la tua risposta, ma qui il volume non arriva nel json, c'è qualche altro modo o URL per ottenere il volume scambiato?
Sashi Kant


3

Il problema con i dati di Yahoo e Google è che violano i termini di servizio se li utilizzi per uso commerciale. Quando il tuo sito / app è ancora piccolo non è un problema, ma non appena cresci un po 'inizi a smettere e desisti dagli scambi. Un esempio di soluzione con licenza è FinancialContent: http://www.financialcontent.com/json.php o Xignite


2

Ecco un esempio che puoi usare. Non ho ancora Google Finance, ma ecco l'esempio di Yahoo. Avrai bisogno di HTMLAgilityPack , che è fantastico. Happy Symbol Hunting.

Chiamare la procedura utilizzando YahooStockRequest(string Symbols);

Dove Simboli = una stringa di simboli delimitata da virgole o solo un simbolo

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

Il modo più semplice come hai spiegato è questo collegamento per "Dow Jones Industrial Average"

Il collegamento 2 è per "NASDAQ-100"

e per tutti quelli relativi al collegamento NASDAQ 3

Penso che dovrebbe essere così, altrimenti vuoi lo stesso nelle notazioni JSON lo stesso di Microsoft

Si prega di fare riferimento a questo vecchio post, penso che questo aiuterà,

Aggiornare:

Per conoscere i dettagli del volume e altri dettagli, ho creato un vbscript che utilizza l'oggetto IE per recuperare i dettagli dal collegamento e avvisa il contenuto nell'id particolare (crea un file .vbs ed eseguilo ..

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

questo avviserà i valori di una pagina come questa

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

Sono sicuro che questo aiuterà ..


Grazie mille per la tua risposta. Ma ho bisogno dei dati in tempo reale in json insieme al volume scambiato, ci sono servizi di riposo?
Sashi Kant

1
Si prega di fare riferimento a questo per i dettagli in tempo reale, generalmente questi link forniscono dati sul tempo reale con qualche eccezione .. google.com/googlefinance/disclaimer/#realtime
MarmiK

Grazie ancora una volta fratello, questo è stato davvero utile, ma comunque come posso ottenere le informazioni sul volume?
Sashi Kant

1
È se sei a conoscenza di VBA o VBS sulla pagina ( google.com/… ) l'ID dell'elemento è "market-data-div" che div contiene altri 2 div e il secondo div ha la tabella che contiene il volume <td class="val">759.30M</td>come questo. Se vuoi ulteriore aiuto, per favore pubblica del codice del tuo lavoro o il violino lo farà.
MarmiK

No signore, non ho idea di VBA o VBS, ma lo controllerò sicuramente. Potete fornirmi l'URL, che si traduce nella quotazione delle azioni in tempo reale insieme alle informazioni sul volume?
Sashi Kant


1

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

Ti restituirà tutti i dettagli disponibili sullo stock menzionato.

ad es. out put sarebbe simile a quello seguente:

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

Puoi avere il simbolo di borsa della tua azienda alla fine di questo URL per ottenere i suoi dettagli:

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

0

Per trovare i dati del grafico utilizzando l'API dei dati finanziari di Google, è sufficiente andare su Google come se si stesse cercando un termine di ricerca, digitare finance nel motore di ricerca e verrà visualizzato un collegamento a Google Finance. Una volta nel motore di ricerca di Google Finance, digita il nome del ticker nel motore API dei dati finanziari e il risultato verrà visualizzato. Tuttavia, va notato che tutti i grafici finanziari di Google hanno un ritardo di 15 minuti e al massimo possono essere utilizzati per una migliore comprensione della cronologia passata del ticker, piuttosto che del prezzo corrente.

Una soluzione alle informazioni ritardate del grafico è ottenere un'API di dati finanziari in tempo reale. Un esempio potrebbe essere l'interfaccia barchartondemand che contiene informazioni sulle quotazioni in tempo reale, insieme ad altre funzionalità dettagliate che rendono più semplice trovare il grafico esatto che stai cercando. Con funzionalità completamente personalizzabili e strumenti di programmazione specifici per le informazioni di trading precise di cui hai bisogno, gli strumenti di barchartondemand superano la finanza di Google con un ampio margine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.