Alternativa a google finance api

Quería usar la API de Google Finance para obtener datos sobre la empresa, pero esta API está en desuso desde 2011/26/05.

¿Qué utilizas como API gratuita para obtener datos de stock en tiempo real?

Actualizando respuesta un poco

1. Pruebe Alpha Vantage API

Para los principiantes puede intentar obtener un resultado JSON de la consulta, como

https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo 

NO INTENTE la API de Yahoo Finance (está DEPRICADA o NO DISPONIBLE AHORA).

  • Aquí hay un enlace al debate anterior de API de Yahoo Finance en StackOverflow .
  • Aquí hay un enlace alternativo a Yahoo Finance API publicado en Google Code.

Para los principiantes, puedes generar un CSV con una simple llamada API:

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

(Esto generará y guardará un archivo CSV para AAPL, GOOG y MSFT)

Tenga en cuenta que debe anexar el formato a la cadena de consulta ( f=.. ). Para una descripción general de todos los formatos, vea esta página .

Para ver más ejemplos, visita esta página .

Para datos basados ​​en XML y JSON , puede hacer lo siguiente:

No use YQL (Lenguaje de consulta de Yahoo) **

Por ejemplo:

 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. Usa el servicio web

Por ejemplo, para obtener todas las cotizaciones en XML :

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

Para obtener todas las cotizaciones en JSON , simplemente agregue format=JSON al final de la URL:

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

Alternativas:

1. 1Forge Financial APIs

  • Las tasas en tiempo real para alrededor de 40 pares de divisas están disponibles aquí .

2. API de contenido financiero

  • La documentación para esta API es muy buena.

3. Abra los tipos de cambio

4. API Oanda

5. XE API

6. Xignite API

7. Crimelayer API

8. Otro API discutido en programmableWeb

Estoy muy tarde, pero echa un vistazo a Quandl . Tienen una API para precios de acciones y fundamentos .

Aquí hay una llamada de ejemplo, usando la descarga Quandl-api en csv

ejemplo:

 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 

Ellos son compatibles con estos idiomas . Sus fonts de datos provienen de Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE y más ( ver aquí ).

Sugeriría usar la API de desarrollador de TradeKing . Es muy bueno y de uso gratuito. Todo lo que se requiere es que tengas una cuenta con ellos y, que yo sepa, no tienes que llevar un saldo … solo para registrarte.

Si aún desea utilizar Google Finance para sus datos, puede verificarlo.

Recientemente necesité probar si los datos de SGX se pueden recuperar en google finance (y por supuesto me encontré con el mismo problema que tú)

Seguí la respuesta principal y comencé a buscar finanzas de yahoo. Se puede acceder a su API de diferentes maneras, pero encontré una buena referencia para obtener información de stock como CSV aquí: http://www.jarloo.com/

Usando eso, escribí este guión. No soy realmente un tipo rubio, pero esto podría ayudarte a hackear algo juntos. Todavía no he encontrado nombres variables para todos los campos que yahoo ofrece, así que puede completarlos si los necesita.

Aquí está el uso

 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 devuelve un hash, de modo que SpecificData [“GOOG”] [“name”] es “Google Inc.”

Finalmente, el código real para ejecutar eso …

 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