Alternative à Google Finance API [fermé]


430

Je souhaitais utiliser l'API Google Finance pour obtenir des données boursières sur l'entreprise, mais cette API est obsolète depuis le 26/06/2011.

Qu'est-ce que vous utilisez comme API gratuite pour obtenir des données boursières en temps réel?


1
Il existe une autre API Google que vous pouvez utiliser. J'ai documenté ici: jarloo.com/real-time-google-stock-api
Kelly

11
En tant que développeur de logiciels, je recommanderais Alpha Vantage . Ils offrent des API JSON gratuites pour les cotations boursières en temps réel et historiques. Voici leurs données intrajournalières en temps réel pour MSFT. Voici leur documentation API complète. Vous avez besoin d'une clé API, qui peut être obtenue gratuitement sur leur site Web .
Steve Carino

4
Depuis septembre 2017, veuillez vous référer à cette question: stackoverflow.com/questions/46070126/…
augustomen

2
Alpha Vantage est génial. Je viens d'écrire un blog à ce sujet the-data-wrangler.com/…
Ashley Davis

Vous pouvez également essayer cette API: free.currencyconverterapi.com/api/v5/…
Toe Pyae Sone Oo

Réponses:


427

Mettre à jour un peu la réponse

1. Essayez l' API Alpha Vantage

Pour les débutants, vous pouvez essayer d'obtenir une sortie JSON à partir d'une requête telle que

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

N'ESSAYEZ PAS l' API Yahoo Finance (elle est obsolète ou INDISPONIBLE MAINTENANT).

Pour les débutants, vous pouvez générer un CSV avec un simple appel d'API:

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

(Cela va générer et enregistrer un CSV pour AAPL, GOOG et MSFT)

Notez que vous devez ajouter le format à la chaîne de requête ( f=..). Pour un aperçu de tous les formats, consultez cette page .

Pour plus d'exemples, visitez cette page .

Pour XMLet des JSONdonnées à base, vous pouvez effectuer les opérations suivantes:

N'utilisez pas YQL (Yahoo Query Language) **

Par exemple:

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. Utilisez le webservice

Par exemple, pour obtenir toutes les cotations boursières dans XML:

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

Pour obtenir toutes les cotations boursières JSON, ajoutez simplement format=JSONà la fin de l'URL:

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

Alternatives:

1. API de devise

  • 165+ taux de change en temps réel, dont quelques cryptos. Documents ici .

2. 1Forge Financial APIs

  • Des taux en temps réel pour environ 40 paires de devises sont disponibles ici .

3. API de contenu financier

4. Taux de change ouverts

5. API Oanda

6. API XE

7. API Xignite

8. API currencylayer

9. Autres API - discutées sur programmableWeb


2
voici ce que vous avez demandé maintenant ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
AurA

7
Il convient de noter ce que Yahoo! dire à propos du retrait des cours des actions: "Il semble que certains ont procédé à une ingénierie inverse d'une API qu'ils utilisent pour extraire les données financières, mais ils enfreignent nos conditions d'utilisation (pas de redistribution des données financières) ... La redistribution n'est autorisée que si vous utilisez les badges créés par l'équipe: finance.yahoo.com/badges . Sinon, vous pouvez utiliser YQL ou toute autre méthode pour obtenir des données POUR UN USAGE PERSONNEL " developer.yahoo.com/forum/General-Discussion-at-YDN/…
poshaughnessy

3
au lieu d'enregistrer en csv ... pouvez-vous récupérer des données au format JSON à la place?
bouncingHippo

3
A noter que les points de terminaison de Yahoo ne sont pas en temps réel, ils sont retardés de 15 min (voir le champ LastTradeWithTime en YQL par exemple)
artur

37
La réponse doit être mise à jour car l'API Yahoo Finance est maintenant morte.
Vivek Vijayan

47

Je suis en retard, mais allez voir Quandl . Ils ont une API pour les cours des actions et les fondamentaux .

Voici un exemple d'appel, en utilisant le téléchargement Quandl-api en csv

exemple:

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

Ils prennent en charge ces langues . Leurs données sources proviennent de Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE et plus ( voir ici ).


Avez-vous des indicateurs techniques avec cette API (comme rsi)?
Kiva

Je n'ai aucune idée. Je ne suis en fait pas affilié à Quandl, je sais juste que c'est un endroit pour obtenir des données.
user2023861

Cela semble être une bonne option, mais pouvez-vous obtenir des données sur les stocks en direct ici? Il semble que le délai le plus court soit celui des données quotidiennes?
Trevor

8
Les données de stock en direct ne sont pas disponibles via Quandl - je l'ai essayé.
Brian Goodwin

2
Quandl a également beaucoup de stocks manquants dans son jeu de données WIKI.
Jeremy Holovacs

16

Je suggère d'utiliser l'API de développeur de TradeKing . Il est très bon et gratuit à utiliser. Tout ce qui est requis, c'est que vous ayez un compte avec eux et à ma connaissance vous n'avez pas à porter un solde ... seulement pour être enregistré.


2
Et créer ce compte est si "drôle" que j'ai annulé après 10 minutes ...
inselberg

2
Si je peux me permettre, qu'est-ce qui était si "drôle" à ce sujet? Faites-vous référence au fait qu'ils demandent des informations personnelles sensibles? Tout courtier en valeurs mobilières en ligne vous demandera les mêmes informations ... Ce n'est pas inhabituel.
train

11
NAS, date de naissance, état civil, personnes à charge, ...? sérieusement? Je veux juste appeler l'API pour tester
Daniel B

D'autres API que je trouve sont des citations et des alliés.
Deepan Prabhu Babu

7

J'ai suivi la première réponse et j'ai commencé à regarder Yahoo Finance. Leur API peut être consultée de différentes manières, mais j'ai trouvé une bonne référence pour obtenir des informations boursières en tant que CSV ici: http://www.jarloo.com/

En utilisant cela, j'ai écrit ce script. Je ne suis pas vraiment un mec rubis mais cela pourrait vous aider à pirater quelque chose ensemble. Je n'ai pas encore trouvé de noms de variables pour tous les champs proposés par yahoo, vous pouvez donc les remplir si vous en avez besoin.

Voici l'utilisation

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 renvoie un hachage, tel que SpecificData ["GOOG"] ["nom"] est "Google Inc."

Enfin, le code réel pour exécuter cela ...

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

1
c'est vraiment utile, j'aimerais pouvoir vous donner plus de votes. Question rapide - avez-vous trouvé cette API fiable et les devis sont-ils vraiment en temps réel? Je sais que certaines des informations de Yahoo sont retardées, et cela semble dépendre de l'API particulière à laquelle vous accédez.
Hundley

J'ai fait cela pour aider un ami et je pense que cela a bien fonctionné pour lui. L'info est assez rapide, je pense qu'ils l'ont mise à jour toutes les 10/15 minutes si je me souviens bien.
Jack Franzen du

1
La version C # et le tutoriel sont ici: jarloo.com/yahoo_finance
Kelly

oui, ce mec sait apparemment comment obtenir des informations sur les actions haha. Il a d'autres tutoriels depuis les 2 derniers mois qui prétendent que vous pouvez toujours obtenir des données sur les stocks en temps réel de Google
Jack Franzen

6

Si vous cherchez toujours à utiliser Google Finance pour vos données, vous pouvez le vérifier.

J'ai récemment eu besoin de tester si les données SGX sont effectivement récupérables via google finance (et bien sûr j'ai rencontré le même problème que vous)


J'ai déjà vu 'JSON Quote API'. Cet outil semble très prometteur. Je recommanderais également ceci: investexcel.net/google-finance-stock-quotes-in-excel
ASH
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.