如何使用Google Finance API获得股票报价?


119

我正在寻找来自Google服务的财务数据。

我发现此URL获取Microsoft的库存数据。

Google允许这种HTTP请求的所有可能参数是什么?我想看看我可以获得的所有不同信息。


36
您是如何找到该URL的?
timmyc 2011年

2
您可以通过简单且基于REST的YQL轻松获取Google财经数据。可以在下面找到示例:jarloo.com/google-finance-and-yql
Kelly

这是一个很好的问题,还有更多最新答案吗?
NickO

1
@ Timmyc-该client=ig参数使我相信这已经/曾经用于iGoogle小部件。只是一个猜测而已。
dana

请注意,如果您的应用程序供公众使用,则使用Google财经API违反Google的服务条款。@timmyc:该&client参数不是必需的。finance.google.com/finance/info?q=NASDAQ%3aMSFT起作用。
Dan Dascalescu 2014年

Answers:


40

有一个用于管理投资组合的完整API。*链接已删除。Google不再为此提供开发人员API。

获取股票报价要困难一些。我发现一篇文章,有人使用Google Spreadsheets获得股票报价。

您也可以使用这些小工具,但我想那不是您想要的。

您提到的API很有趣,但似乎没有记录(据我所能找到)。

这里是一些历史价格信息,仅供参考。


5
Google提供了一个未公开的API,您可以使用它来轻松获取股票信息,因为它基于REST,并且不需要身份验证。这是一个C#示例jarloo.com/google-stock-api
Kelly

24
注意:Google财经API已于2011年5月26日正式弃用,并将于2012
。– shawnwall

这个答案大多是题外话。下面的答案是正确的。
Dan Dascalescu

74

1
这正是我所要寻找的!谢谢。
Grizzly Peak Software

但是我无法通过此URL进行交易,如果我也需要交易量的详细信息,您能帮我吗
Sashi Kant

@DanDascalescu感谢Dan。当我检查它时,它似乎刚刚落下。评论已删除。
jpgeek 2014年

2
谢谢,今天仍然有意义,2016
CleanBold

5
我很伤心地说,作为2017年9月的,这些链接404ing。
圣约翰·约翰逊,

17

我发现此站点很有帮助。

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

它链接到Yahoo似乎提供的API,该API非常简单实用。

例如:

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

详细信息在这里:

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


在Yahoo中,使用curl可以实现这一点 curl -L "http://finance.yahoo.com/d/quotes.csv?s=msft&f=sl1d1t1c1ohgv&e=.csv"-L需要卷曲,否则它将无法工作
arulraj.net 2015年

9

编辑:api调用已被谷歌删除。因此它不再起作用。

同意Pareshkumar的回答。现在有一个python包装器googlefinance用于url调用。

安装googlefinance

$pip install googlefinance

很容易获得当前股价:

>>> 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财务是提供实时股票数据的来源。雅虎还提供其他API,例如yahoo-finance,但对于纽约证券交易所和纳斯达克股票,它们会延迟15分钟。


很好的实时性,我在寻找什么!
eusoubrasileiro


3

在巨人的肩膀上立...

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"

然后,您将拥有像$ GF_last $ GF_open $ GF_volume等这样的变量。运行env或查看/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.

因此,对于stock="FBM" /tmp/stockprice.tmp.log (和您的环境)将包含:

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

我可以将URL用作实时股票报价吗?
Sashi Kant

通常是的。比较GF_trade_time_utc当前时间/日期,您将成为法官。
Marcos

感谢您的回答,但此处交易量不在json中,还有其他方法或URL来交易交易量吗?
Sashi Kant


3

Yahoo和Google数据的问题在于,如果您将其用于商业用途,则会违反服务条款。当您的网站/应用仍然很小时,这并不是什么大问题,但是,只要您一点点成长,就会开始停下来并停止交流。一个许可的解决方案示例是FinancialContent:http : //www.financialcontent.com/json.phpXignite


2

这是您可以使用的示例。Havent还获得了Google财经,但这是Yahoo示例。您将需要HTMLAgilityPack,这太棒了。快乐符号狩猎。

使用调用程序 YahooStockRequest(string Symbols);

其中,Symbols =以逗号分隔的符号字符串,或仅一个符号

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

正如您所解释的,最简单的方法是此链接用于“道琼斯工业平均指数”

链接2用于“ NASDAQ-100”

以及与纳斯达克相关的所有链接3

我认为应该是这样,否则您想要的JSON表示法与Microsoft相同

请参阅此旧帖子,我认为这会有所帮助,

更新:

要了解卷的详细信息和其他详细信息,我创建了一个vbscript,该脚本使用IE对象从链接中获取详细信息,并警告特定id中的内容(创建一个.vbs文件并运行它。

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

这将提醒这样的页面中的值

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

我相信这会有所帮助..


非常感谢您的回答。但是我需要json中的实时数据以及交易量,有没有其他服务?
Sashi Kant 2013年

1
请参考这个关于实时信息,一般这个链接提供了一些例外reatime数据.. google.com/googlefinance/disclaimer/#realtime
MarmiK

再次感谢您,兄弟,这确实很有帮助,但是仍然如何获取音量信息?
Sashi Kant

1
如果您知道网页(google.com/…)上的VBA或VBS,则该元素的ID为'market-data-div',其中div包含2个div,第二个div的表包含这样的体积<td class="val">759.30M</td>。如果需要更多帮助,请张贴一些您的工作代码,否则您将无所事事。
MarmiK 2013年

不,主席先生,对VBA或VBS没有任何了解,但是可以肯定地检查一下,您能否提供给我URL,这会导致实时股票报价以及数量信息?
Sashi Kant 2013年


1

尝试以下操作:http : //finance.google.com/finance/info?client=ig&q=NASDAQ : GOOGL

它将返回有关该库存的所有可用详细信息。

例如,输出将如下所示:

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

您可以在此URL的末尾添加公司股票代码以获取其详细信息:

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

0

为了使用Google的财务数据API查找图表数据,您必须简单地进入Google,就好像在寻找搜索词一样,在搜索引擎中输入Finance,然后会出现指向Google Finance的链接。进入Google财务搜索引擎后,在财务数据API引擎中输入股票代号名称,系统就会显示结果。但是,应该注意的是,所有Google财经图表都被延迟了15分钟,最多只能用来更好地了解股票行情的过去历史,而不是当前价格。

延迟图表信息的一种解决方案是获取实时财务数据API。一个例子就是具有实时报价信息的barchartondemand界面,以及使您可以更轻松地找到所需图表的其他详细功能。barchartondemand的功能具有完全可自定义的功能,以及用于您所需的精确交易信息的特定编程工具,其工具在很大程度上超过了Google财务。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.