Alternative zu Google Finance API [geschlossen]

429

Ich wollte die Google Finance-API verwenden, um Bestandsdaten über das Unternehmen abzurufen, aber diese API ist seit dem 26.01.2011 veraltet.

Was verwenden Sie als kostenlose API, um Bestandsdaten in Echtzeit abzurufen?

Kiva
quelle
1
Es gibt eine andere Google-API, die Sie verwenden können. Ich habe hier dokumentiert: jarloo.com/real-time-google-stock-api
Kelly
11
Als Softwareentwickler würde ich Alpha Vantage empfehlen . Sie bieten kostenlose JSON-APIs für Echtzeit- und historische Börsenkurse. Hier sind ihre Echtzeit-Intraday-Daten für MSFT. Hier ist die vollständige API-Dokumentation. Sie benötigen einen API-Schlüssel, den Sie kostenlos auf der Website erhalten .
Steve Carino
4
Ab September 2017 beziehen Sie sich bitte auf diese Frage: stackoverflow.com/questions/46070126/…
August
2
Alpha Vantage ist großartig. Ich habe gerade einen Blog-Beitrag darüber geschrieben the-data-wrangler.com/…
Ashley Davis
Sie können auch diese API versuchen: free.currencyconverterapi.com/api/v5/…
Toe Pyae Sone Oo

Antworten:

426

Antwort etwas aktualisieren

1. Probieren Sie die Alpha Vantage API aus

Für Anfänger können Sie versuchen, eine JSON-Ausgabe von Abfragen wie z

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

Probieren Sie die Yahoo Finance API NICHT aus (sie ist JETZT VERRINGERT oder NICHT VERFÜGBAR).

Für Anfänger können Sie mit einem einfachen API-Aufruf eine CSV generieren:

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

(Dadurch wird eine CSV für AAPL, toget und MSFT generiert und gespeichert.)

Beachten Sie, dass Sie das Format an die Abfragezeichenfolge ( f=..) anhängen müssen . Eine Übersicht aller Formate finden Sie auf dieser Seite .

Weitere Beispiele finden Sie auf dieser Seite .

Für XMLund JSON-basierte Daten können Sie Folgendes tun:

Verwenden Sie kein YQL (Yahoo Query Language) **

Zum Beispiel:

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. Verwenden Sie den Webservice

So erhalten Sie beispielsweise alle Börsenkurse in XML:

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

Um alle Börsenkurse zu erhalten JSON, fügen Sie einfach format=JSONam Ende der URL Folgendes hinzu:

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

Alternativen:

1. Währungs-API

  • Über 165 Echtzeit-Währungskurse, einschließlich weniger Kryptos. Docs hier .

2. 1Forge Financial APIs

  • Echtzeitkurse für ca. 40 Währungspaare finden Sie hier .

3. API für Finanzinhalte

4. Öffnen Sie die Wechselkurse

5. Oanda API

6. XE API

7. Xignite API

8. Currencylayer-API

9. Andere APIs - werden unter programmableWeb beschrieben

Aura
quelle
2
Hier ist, was Sie jetzt gefragt haben ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
AurA
7
Es ist erwähnenswert, was Yahoo! Sagen Sie über das Herausziehen von Aktienkursen: "Es scheint, dass einige eine API rückentwickelt haben, die sie zum Abrufen von Finanzdaten verwenden, aber sie verstoßen gegen unsere Nutzungsbedingungen (keine Weiterverteilung von Finanzdaten) ... Eine Weiterverteilung ist nur zulässig, wenn Sie sie verwenden Die vom Team erstellten Abzeichen: Finance.yahoo.com/Badges . Andernfalls können Sie YQL oder eine andere Methode verwenden, um Daten für den persönlichen Gebrauch zu erhalten. " developer.yahoo.com/forum/General-Discussion-at-YDN/…
poshaughnessy
3
anstatt in csv zu speichern ... können Sie stattdessen Daten als JSON abrufen?
BouncingHippo
3
Bemerkenswert ist, dass die Endpunkte von Yahoo nicht in Echtzeit sind, sondern 15 Minuten verzögert (siehe Feld LastTradeWithTime in YQL zum Beispiel)
Artur
37
Die Antwort muss aktualisiert werden, da die Yahoo Finance-API jetzt nicht mehr verfügbar ist.
Vivek Vijayan
47

Ich bin viel zu spät, aber schauen Sie sich Quandl an . Sie haben eine API für Aktienkurse und Fundamentaldaten .

Hier ist ein Beispielaufruf mit Quandl-API-Download in CSV

Beispiel:

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

Sie unterstützen diese Sprachen . Ihre Quelldaten stammen von Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE und anderen ( siehe hier ).

user2023861
quelle
Haben Sie einige technische Indikatoren mit dieser API (wie rsi)?
Kiva
Ich habe keine Ahnung. Ich bin eigentlich nicht mit Quandl verbunden, ich weiß nur, dass es ein Ort ist, an dem Daten abgerufen werden können.
user2023861
Dies scheint eine gute Option zu sein, aber können Sie hier Live-Bestandsdaten abrufen? Scheint, als ob der kürzeste Zeitrahmen tägliche Daten sind?
Trevor
8
Live-Bestandsdaten sind über Quandl nicht verfügbar - ich habe es versucht.
Brian Goodwin
2
Quandl hat auch viele Bestände in seinem WIKI-Datensatz.
Jeremy Holovacs
16

Ich würde vorschlagen, die Entwickler-API von TradeKing zu verwenden . Es ist sehr gut und kostenlos zu bedienen. Alles was erforderlich ist, ist, dass Sie ein Konto bei ihnen haben und meines Wissens müssen Sie kein Guthaben führen ... nur um registriert zu werden.

ra9r
quelle
2
Und das Erstellen dieses Kontos ist so "lustig", dass ich nach 10 Minuten abgesagt habe ...
Inselberg
2
Wenn ich fragen darf, was war daran so "lustig"? Beziehen Sie sich auf die Tatsache, dass sie nach sensiblen persönlichen Informationen fragen? Jeder Online-Börsenmakler wird nach denselben Informationen fragen ... Das ist nichts Ungewöhnliches.
Zug
11
SÜNDE, Geburtsdatum, Familienstand, Angehörige, ...? Ernsthaft? Ich möchte nur die API zum Testen aufrufen
Daniel B
Andere Apis, die ich finde, sind Quotemedien und Verbündete.
Deepan Prabhu Babu
7

Ich folgte der Top-Antwort und begann mich mit Yahoo Finance zu beschäftigen. Auf ihre API kann auf verschiedene Arten zugegriffen werden, aber ich habe hier eine gute Referenz gefunden, um Bestandsinformationen als CSV abzurufen: http://www.jarloo.com/

Damit habe ich dieses Skript geschrieben. Ich bin nicht wirklich ein Rubin, aber das könnte dir helfen, etwas zusammen zu hacken. Ich habe noch nicht für alle Felder, die Yahoo anbietet, Variablennamen gefunden, sodass Sie diese bei Bedarf ausfüllen können.

Hier ist die Verwendung

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 gibt einen Hash zurück, sodass SpecificData ["toget"] ["name"] "Google Inc." ist.

Endlich der eigentliche Code, um das auszuführen ...

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
Jack Franzen
quelle
1
Das ist wirklich nützlich. Ich wünschte, ich könnte Ihnen mehr Stimmen geben. Kurze Frage - Haben Sie festgestellt, dass diese API zuverlässig ist, und sind die Angebote wirklich in Echtzeit? Ich weiß, dass sich einige Informationen von Yahoo verzögert haben, und es scheint von der jeweiligen API abzuhängen, auf die Sie zugreifen.
Hundley
Ich habe das getan, um einem Freund zu helfen, und ich denke, es hat gut für ihn geklappt. Die Informationen sind ziemlich schnell, ich denke, sie werden alle 10/15 Minuten aktualisiert, wenn ich mich richtig erinnere.
Jack Franzen
1
C # Version und Tutorial ist hier: jarloo.com/yahoo_finance
Kelly
Ja, dieser Typ weiß anscheinend, wie man Aktieninformationen bekommt, haha. Er hat andere Tutorials aus den letzten 2 Monaten, die behaupten, dass Sie immer noch Echtzeit-Bestandsdaten von Google erhalten können
Jack Franzen
6

Wenn Sie weiterhin Google Finance für Ihre Daten verwenden möchten, können Sie dies überprüfen.

Ich musste kürzlich testen, ob SGX-Daten tatsächlich über Google Finance abrufbar sind (und natürlich hatte ich das gleiche Problem wie Sie).

KevinL
quelle
Ich habe 'JSON Quote API' schon einmal gesehen. Dieses Tool scheint sehr vielversprechend. Ich würde auch empfehlen: investexcel.net/google-finance-stock-quotes-in-excel
ASH