Alternatif untuk google finance api [ditutup]


430

Saya ingin menggunakan Google Finance API untuk mendapatkan data stok tentang perusahaan tetapi API ini sudah tidak digunakan lagi sejak 2011/26/05.

Apa yang Anda gunakan sebagai API gratis untuk mendapatkan data stok secara real time?


1
Ada Google API lain yang bisa Anda gunakan. Saya telah mendokumentasikan di sini: jarloo.com/real-time-google-stock-api
Kelly

11
Sebagai pengembang perangkat lunak, saya akan merekomendasikan Alpha Vantage . Mereka menawarkan API JSON gratis untuk harga saham realtime dan historis. Berikut adalah data intraday realtime mereka untuk MSFT. Ini dokumentasi lengkap API mereka. Anda memang membutuhkan kunci API, yang dapat diperoleh secara gratis di situs web mereka .
Steve Carino

4
Mulai September 2017, silakan merujuk ke pertanyaan ini: stackoverflow.com/questions/46070126/…
augustomen

2
Vantage Alpha bagus. Saya baru saja menulis posting blog tentang hal itu the-data-wrangler.com/...
Ashley Davis

Jawaban:


427

Memperbarui sedikit jawabannya

1. Coba Alpha Vantage API

Untuk pemula, Anda dapat mencoba untuk mendapatkan output JSON dari kueri seperti

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

JANGAN Coba Yahoo Finance API (DISEBABKAN atau TIDAK TERSEDIA SEKARANG).

Untuk pemula, Anda dapat membuat CSV dengan panggilan API sederhana:

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

(Ini akan menghasilkan dan menyimpan CSV untuk AAPL, GOOG dan MSFT)

Perhatikan bahwa Anda harus menambahkan format ke string kueri ( f=..). Untuk ikhtisar semua format, lihat halaman ini .

Untuk lebih banyak contoh, kunjungi halaman ini .

Untuk XMLdan JSON-berdasarkan data, Anda dapat melakukan hal berikut:

Jangan gunakan YQL (Bahasa Permintaan Yahoo) **

Sebagai contoh:

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. Gunakan layanan web

Misalnya, untuk mendapatkan semua harga saham di XML:

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

Untuk memasukkan semua harga saham JSON, cukup tambahkan di format=JSONbagian akhir URL:

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

Alternatif:

1. API Mata Uang

  • 165+ nilai tukar mata uang waktu nyata, termasuk beberapa cryptos. Dokumen di sini .

2. 1 API Keuangan Forge

  • Tarif real-time untuk sekitar 40 pasangan mata uang tersedia di sini .

3. API Konten Keuangan

4. Buka Nilai Tukar

5. Oanda API

6. XE API

7. API Xignite

8. API lapisan mata uang

9. API lain - dibahas di programmableWeb


2
di sini adalah apa yang Anda minta untuk saat ini ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
AurA

7
Perlu dicatat apa yang Yahoo! katakan tentang menarik keluar harga saham: "Tampaknya beberapa telah merekayasa balik API yang mereka gunakan untuk menarik data Keuangan, tetapi mereka melanggar Ketentuan Layanan kami (tidak ada redistribusi data Keuangan) ... Redistribusi hanya diperbolehkan jika Anda menggunakan lencana yang dibuat oleh tim: finance.yahoo.com/badges . Jika tidak, Anda dapat menggunakan YQL atau metode apa pun untuk mendapatkan data UNTUK PENGGUNAAN PRIBADI " developer.yahoo.com/forum/General-Discussion-at-YDN/…
poshaughnessy

3
alih-alih menyimpan ke csv ... bisakah Anda mengambil data sebagai JSON?
bouncingHippo

3
Patut dicatat bahwa titik akhir Yahoo tidak real-time, mereka 15 menit tertunda (lihat bidang LastTradeWithTime di YQL misalnya)
artur

37
Jawabannya perlu diperbarui karena API Yahoo Finance sudah mati sekarang.
Vivek Vijayan

47

Aku terlambat, tapi periksa Quandl . Mereka memiliki API untuk harga saham dan fundamental .

Berikut ini contoh panggilan, menggunakan Quandl-api unduh di csv

contoh:

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

Mereka mendukung bahasa-bahasa ini . Sumber data mereka berasal dari Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE dan lainnya ( lihat di sini ).


Apakah Anda memiliki beberapa indikator teknis dengan API ini (seperti rsi)?
Kiva

Saya tidak punya ide. Saya sebenarnya tidak berafiliasi dengan Quandl, saya hanya tahu itu tempat untuk mendapatkan data.
user2023861

Ini sepertinya pilihan yang bagus, tetapi bisakah Anda mendapatkan data stok langsung di sini? Sepertinya kerangka waktu terpendek adalah data harian?
Trevor

8
Data stok langsung tidak tersedia melalui Quandl - Saya sudah mencobanya.
Brian Goodwin

2
Quandl juga memiliki banyak saham yang hilang dalam dataset WIKI-nya.
Jeremy Holovacs

16

Saya sarankan menggunakan API pengembang TradeKing . Ini sangat bagus dan gratis untuk digunakan. Semua yang diperlukan adalah bahwa Anda memiliki akun dengan mereka dan setahu saya Anda tidak harus membawa saldo ... hanya untuk didaftarkan.


2
Dan membuat akun itu sangat "lucu" sehingga saya membatalkan setelah 10 menit ...
inselberg

2
Jika saya boleh bertanya, apa yang "lucu" tentang itu? Apakah Anda merujuk pada fakta bahwa mereka meminta beberapa informasi pribadi yang sensitif? Pialang saham daring mana pun akan meminta informasi yang sama ... Bukan hal yang aneh.
latihlah

11
SIN, Tanggal lahir, status martir, Tanggungan, ...? serius? Saya hanya ingin memanggil API untuk menguji
Daniel B

Apis lain yang saya temukan adalah quotemedia dan sekutu.
Deepan Prabhu Babu

7

Saya mengikuti jawaban teratas dan mulai melihat keuangan yahoo. API mereka dapat diakses dengan berbagai cara, tetapi saya menemukan referensi yang bagus untuk mendapatkan info persediaan sebagai CSV di sini: http://www.jarloo.com/

Menggunakan itu saya menulis skrip ini. Saya bukan orang yang benar-benar batu delima tetapi ini mungkin membantu Anda meretas sesuatu bersama-sama. Saya belum membuat nama variabel untuk semua bidang yang ditawarkan yahoo, jadi Anda bisa mengisinya jika Anda membutuhkannya.

Ini penggunaannya

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 mengembalikan hash, sehingga SpecificData ["GOOG"] ["name"] adalah "Google Inc."

Akhirnya, kode aktual untuk menjalankan itu ...

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
ini sangat berguna, saya berharap saya bisa memberi Anda lebih banyak suara. Pertanyaan cepat - apakah Anda menganggap API ini dapat diandalkan, dan apakah kutipannya benar-benar realtime? Saya tahu beberapa informasi Yahoo tertunda, dan tampaknya tergantung pada API tertentu yang Anda akses.
Hundley

Saya melakukan ini untuk membantu seorang teman dan saya pikir itu berakhir dengan baik baginya. Info ini cukup cepat, saya pikir mereka memperbaruinya setiap 10/15 menit jika saya ingat dengan benar.
Jack Franzen

1
Versi C # dan tutorialnya ada di sini: jarloo.com/yahoo_finance
Kelly

ya, orang itu rupanya tahu cara mendapatkan info persediaan haha. Dia memiliki tutorial lain naik dari 2 bulan terakhir yang mengklaim Anda masih bisa mendapatkan data stok real time dari google
Jack Franzen

6

Jika Anda masih mencari untuk menggunakan Google Finance untuk data Anda, Anda dapat memeriksanya.

Baru-baru ini saya perlu menguji apakah data SGX memang dapat diperoleh melalui google finance (dan tentu saja saya bertemu dengan masalah yang sama seperti Anda)


Saya telah melihat 'JSON Quote API' sebelumnya. Alat itu sepertinya sangat menjanjikan. Saya juga akan merekomendasikan ini: investexcel.net/google-finance-stock-quotes-in-excel
ASH
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.