替代谷歌金融API

我想使用Google Finance API获取有关公司的股票数据,但自2011/26/05以来此API已被弃用。

你用什么免费API来实时获取股票数据?

试用Yahoo Finance API

  • 这里是一个链接到以前的雅虎财经API的StackOverflow讨论 。
  • 以下是Google代码上发布的Yahoo Finance API的备用链接 。

对于初学者,您可以使用简单的API调用来生成CSV:

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

(这将为AAPL,GOOG和MSFT生成并保存CSV)

请注意,您必须将格式附加到查询string( f=.. )。 有关所有格式的概述,请参阅此页面 。

有关更多示例,请访问此页面 。

对于基于XMLJSON的数据,您可以执行以下操作:

1.使用YQL(雅虎查询语言)

例如:

 http://developer.yahoo.com/yql/console/?q=select%20*%20from%20yahoo.finance .quotes%20where%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22%2C%22GOOG%22%2C%22 MSFT%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env 

2.使用web服务

例如,要获取XML所有股票报价:

 http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote 

要获取JSON所有股票报价,只需在url的末尾添加format=JSON即可:

 http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json 

备择scheme:

1.Forge财务API

  • 这里有大约40个货币对的实时汇率。

2. 财务内容API

  • 这个API的文档非常好。

3. 打开汇率

4. Oanda API

5. XE API

6. Xignite API

7. currencylayer API

8.在可编程网站上讨论的其他API

我迟到了,但看看Quandl 。 他们有股票价格和基本面的API 。

下面是一个示例调用, 在csv中使用Quandl-api下载

例:

 https://www.quandl.com/api/v1/datasets/WIKI/AAPL.csv?column=4&sort_order=asc&collapse=quarterly&trim_start=2012-01-01&trim_end=2013-12-31 

他们支持这些语言 。 他们的数据来源于雅虎财经,Google Finance,NSE,BSE,FSE,HKEX,LSE,SSE,TSE等等。

我build议使用TradeKing的开发者API 。 这是非常好的,免费使用。 所有需要的是,你有一个帐户,据我所知,你不必携带一个余额…只需要注册。

我跟着最高的答案,开始看雅虎金融。 他们的API可以通过多种不同的方式访问,但是我发现了一个很好的参考资料,可以在这里获取CSV格式的股票信息: http : //www.jarloo.com/

用我写的这个脚本。 我不是一个真正的ruby的家伙,但这可能会帮助你一起破解一些东西。 我还没有提供雅虎提供的所有字段的variables名称,所以如果你需要的话,你可以填写。

这是用法

 TICKERS_SP500 = "GICS,CIK,MMM,ABT,ABBV,ACN,ACE,ACT,ADBE,ADT,AES,AET,AFL,AMG,A,GAS,APD,ARG,AKAM,AA,ALXN,ATI,ALLE,ADS,ALL,ALTR,MO,AMZN,AEE,AAL,AEP,AXP,AIG,AMT,AMP,ABC,AME,AMGN,APH,APC,ADI,AON,APA,AIV,AAPL,AMAT,ADM,AIZ,T,ADSK,ADP,AN,AZO,AVGO,AVB,AVY,BHI,BLL,BAC,BK,BCR,BAX,BBT,BDX,BBBY,BBY,BIIB,BLK,HRB,BA,BWA,BXP,BSX,BMY,BRCM,BFB,CHRW,CA,CVC,COG,CAM,CPB,COF,CAH,HSIC,KMX,CCL,CAT,CBG,CBS,CELG,CNP,CTL,CERN,CF,SCHW,CHK,CVX,CMG,CB,CI,XEC,CINF,CTAS,CSCO,C,CTXS,CLX,CME,CMS,COH,KO,CCE,CTSH,CL,CMA,CSC,CAG,COP,CNX,ED,STZ,GLW,COST,CCI,CSX,CMI,CVS,DHI,DHR,DRI,DVA,DE,DLPH,DAL,XRAY,DVN,DO,DTV,DFS,DG,DLTR,D,DOV,DOW,DPS,DTE,DD,DUK,DNB,ETFC,EMN,ETN,EBAY,ECL,EIX,EW,EA,EMC,EMR,ENDP,ESV,ETR,EOG,EQT,EFX,EQIX,EQR,ESS,EL,ES,EXC,EXPE,EXPD,ESRX,XOM,FFIV,FB,FDO,FAST,FDX,FIS,FITB,FSLR,FE,FISV,FLIR,FLS,FLR,FMC,FTI,F,FOSL,BEN,FCX,FTR,GME,GCI,GPS,GRMN,GD,GE,GGP,GIS,GM,GPC,GNW,GILD,GS,GT,GOOG,GWW,HAL,HBI,HOG,HAR,HRS,HIG,HAS,HCA,HCP,HCN,HP,HES,HPQ,HD,HON,HRL,HSP,HST,HCBK,HUM,HBAN,ITW,IR,TEG,INTC,ICE,IBM,IP,IPG,IFF,INTU,ISRG,IVZ,IRM,JEC,JNJ,JCI,JOY,JPM,JNPR,KSU,K,KEY,GMCR,KMB,KIM,KMI,KLAC,KSS,KRFT,KR,LB,LLL,LH,LRCX,LM,LEG,LEN,LVLT,LUK,LLY,LNC,LLTC,LMT,L,LO,LOW,LYB,MTB,MAC,M,MNK,MRO,MPC,MAR,MMC,MLM,MAS,MA,MAT,MKC,MCD,MHFI,MCK,MJN,MWV,MDT,MRK,MET,KORS,MCHP,MU,MSFT,MHK,TAP,MDLZ,MON,MNST,MCO,MS,MOS,MSI,MUR,MYL,NDAQ,NOV,NAVI,NTAP,NFLX,NWL,NFX,NEM,NWSA,NEE,NLSN,NKE,NI,NE,NBL,JWN,NSC,NTRS,NOC,NRG,NUE,NVDA,ORLY,OXY,OMC,OKE,ORCL,OI,PCAR,PLL,PH,PDCO,PAYX,PNR,PBCT,POM,PEP,PKI,PRGO,PFE,PCG,PM,PSX,PNW,PXD,PBI,PCL,PNC,RL,PPG,PPL,PX,PCP,PCLN,PFG,PG,PGR,PLD,PRU,PEG,PSA,PHM,PVH,QEP,PWR,QCOM,DGX,RRC,RTN,RHT,REGN,RF,RSG,RAI,RHI,ROK,COL,ROP,ROST,RCL,R,CRM,SNDK,SCG,SLB,SNI,STX,SEE,SRE,SHW,SIAL,SPG,SWKS,SLG,SJM,SNA,SO,LUV,SWN,SE,STJ,SWK,SPLS,SBUX,HOT,STT,SRCL,SYK,STI,SYMC,SYY,TROW,TGT,TEL,TE,THC,TDC,TSO,TXN,TXT,HSY,TRV,TMO,TIF,TWX,TWC,TJX,TMK,TSS,TSCO,RIG,TRIP,FOXA,TSN,TYC,USB,UA,UNP,UNH,UPS,URI,UTX,UHS,UNM,URBN,VFC,VLO,VAR,VTR,VRSN,VZ,VRTX,VIAB,V,VNO,VMC,WMT,WBA,DIS,WM,WAT,ANTM,WFC,WDC,WU,WY,WHR,WFM,WMB,WIN,WEC,WYN,WYNN,XEL,XRX,XLNX,XL,XYL,YHOO,YUM,ZMH,ZION,ZTS,SAIC,AP" AllData = loadStockInfo(TICKERS_SP500, allParameters()) SpecificData = loadStockInfo("GOOG,CIK", "ask,dps") 

loadStockInfo返回一个散列,这样SpecificData [“GOOG”] [“name”]就是“Google Inc.”

最后,运行的实际代码…

 require 'net/http' # Jack Franzen & Garin Bedian # Based on http://www.jarloo.com/yahoo_finance/ $parametersData = Hash[[ ["symbol", ["s", "Symbol"]], ["ask", ["a", "Ask"]], ["divYield", ["y", "Dividend Yield"]], ["bid", ["b", "Bid"]], ["dps", ["d", "Dividend per Share"]], #["noname", ["b2", "Ask (Realtime)"]], #["noname", ["r1", "Dividend Pay Date"]], #["noname", ["b3", "Bid (Realtime)"]], #["noname", ["q", "Ex-Dividend Date"]], #["noname", ["p", "Previous Close"]], #["noname", ["o", "Open"]], #["noname", ["c1", "Change"]], #["noname", ["d1", "Last Trade Date"]], #["noname", ["c", "Change & Percent Change"]], #["noname", ["d2", "Trade Date"]], #["noname", ["c6", "Change (Realtime)"]], #["noname", ["t1", "Last Trade Time"]], #["noname", ["k2", "Change Percent (Realtime)"]], #["noname", ["p2", "Change in Percent"]], #["noname", ["c8", "After Hours Change (Realtime)"]], #["noname", ["m5", "Change From 200 Day Moving Average"]], #["noname", ["c3", "Commission"]], #["noname", ["m6", "Percent Change From 200 Day Moving Average"]], #["noname", ["g", "Day's Low"]], #["noname", ["m7", "Change From 50 Day Moving Average"]], #["noname", ["h", "Day's High"]], #["noname", ["m8", "Percent Change From 50 Day Moving Average"]], #["noname", ["k1", "Last Trade (Realtime) With Time"]], #["noname", ["m3", "50 Day Moving Average"]], #["noname", ["l", "Last Trade (With Time)"]], #["noname", ["m4", "200 Day Moving Average"]], #["noname", ["l1", "Last Trade (Price Only)"]], #["noname", ["t8", "1 yr Target Price"]], #["noname", ["w1", "Day's Value Change"]], #["noname", ["g1", "Holdings Gain Percent"]], #["noname", ["w4", "Day's Value Change (Realtime)"]], #["noname", ["g3", "Annualized Gain"]], #["noname", ["p1", "Price Paid"]], #["noname", ["g4", "Holdings Gain"]], #["noname", ["m", "Day's Range"]], #["noname", ["g5", "Holdings Gain Percent (Realtime)"]], #["noname", ["m2", "Day's Range (Realtime)"]], #["noname", ["g6", "Holdings Gain (Realtime)"]], #["noname", ["k", "52 Week High"]], #["noname", ["v", "More Info"]], #["noname", ["j", "52 week Low"]], #["noname", ["j1", "Market Capitalization"]], #["noname", ["j5", "Change From 52 Week Low"]], #["noname", ["j3", "Market Cap (Realtime)"]], #["noname", ["k4", "Change From 52 week High"]], #["noname", ["f6", "Float Shares"]], #["noname", ["j6", "Percent Change From 52 week Low"]], ["name", ["n", "Company Name"]], #["noname", ["k5", "Percent Change From 52 week High"]], #["noname", ["n4", "Notes"]], #["noname", ["w", "52 week Range"]], #["noname", ["s1", "Shares Owned"]], #["noname", ["x", "Stock Exchange"]], #["noname", ["j2", "Shares Outstanding"]], #["noname", ["v", "Volume"]], #["noname", ["a5", "Ask Size"]], #["noname", ["b6", "Bid Size"]], #["noname", ["k3", "Last Trade Size"]], #["noname", ["t7", "Ticker Trend"]], #["noname", ["a2", "Average Daily Volume"]], #["noname", ["t6", "Trade Links"]], #["noname", ["i5", "Order Book (Realtime)"]], #["noname", ["l2", "High Limit"]], #["noname", ["e", "Earnings per Share"]], #["noname", ["l3", "Low Limit"]], #["noname", ["e7", "EPS Estimate Current Year"]], #["noname", ["v1", "Holdings Value"]], #["noname", ["e8", "EPS Estimate Next Year"]], #["noname", ["v7", "Holdings Value (Realtime)"]], #["noname", ["e9", "EPS Estimate Next Quarter"]], #["noname", ["s6", "evenue"]], #["noname", ["b4", "Book Value"]], #["noname", ["j4", "EBITDA"]], #["noname", ["p5", "Price / Sales"]], #["noname", ["p6", "Price / Book"]], #["noname", ["r", "P/E Ratio"]], #["noname", ["r2", "P/E Ratio (Realtime)"]], #["noname", ["r5", "PEG Ratio"]], #["noname", ["r6", "Price / EPS Estimate Current Year"]], #["noname", ["r7", "Price / EPS Estimate Next Year"]], #["noname", ["s7", "Short Ratio"] ]] def replaceCommas(data) s = "" inQuote = false data.split("").each do |a| if a=='"' inQuote = !inQuote s += '"' elsif !inQuote && a == "," s += "#" else s += a end end return s end def allParameters() s = "" $parametersData.keys.each do |i| s = s + i + "," end return s end def prepareParameters(parametersText) pt = parametersText.split(",") if !pt.include? 'symbol'; pt.push("symbol"); end; if !pt.include? 'name'; pt.push("name"); end; p = [] pt.each do |i| p.push([i, $parametersData[i][0]]) end return p end def prepareURL(tickers, parameters) urlParameters = "" parameters.each do |i| urlParameters += i[1] end s = "http://download.finance.yahoo.com/d/quotes.csv?" s = s + "s=" + tickers + "&" s = s + "f=" + urlParameters return URI(s) end def loadStockInfo(tickers, parametersRaw) parameters = prepareParameters(parametersRaw) url = prepareURL(tickers, parameters) data = Net::HTTP.get(url) data = replaceCommas(data) h = CSVtoObject(data, parameters) logStockObjects(h, true) end #parse csv def printCodes(substring, length) a = data.index(substring) b = data.byteslice(a, 10) puts "printing codes of string: " puts b puts b.split('').map(&:ord).to_s end def CSVtoObject(data, parameters) rawData = [] lineBreaks = data.split(10.chr) lineBreaks.each_index do |i| rawData.push(lineBreaks[i].split("#")) end #puts "Found " + rawData.length.to_s + " Stocks" #puts " w/ " + rawData[0].length.to_s + " Fields" h = Hash.new("MainHash") rawData.each_index do |i| o = Hash.new("StockObject"+i.to_s) #puts "parsing object" + rawData[i][0] rawData[i].each_index do |n| #puts "parsing parameter" + n.to_s + " " +parameters[n][0] o[ parameters[n][0] ] = rawData[i][n].gsub!(/^\"|\"?$/, '') end h[o["symbol"]] = o; end return h end def logStockObjects(h, concise) h.keys.each do |i| if concise puts "(" + h[i]["symbol"] + ")\t\t" + h[i]["name"] else puts "" puts h[i]["name"] h[i].keys.each do |p| puts " " + $parametersData[p][1] + " : " + h[i][p].to_s end end end end 

如果您仍然希望将Google财经用于您的数据,则可以查看此信息。

我最近需要testing新交所数据是否确实可以通过谷歌金融检索(当然,我遇到了同样的问题)