ทางเลือกของ Google Finance API [ปิด]


430

ฉันต้องการใช้ Google Finance API เพื่อรับข้อมูลหุ้นเกี่ยวกับ บริษัท แต่ API นี้เลิกใช้แล้วตั้งแต่ 2011/26/05

คุณใช้อะไรเป็น API ฟรีเพื่อรับข้อมูลหุ้นแบบเรียลไทม์


1
มี Google API อื่นที่คุณสามารถใช้ได้ ฉันได้ทำเอกสารไว้ที่นี่: jarloo.com/real-time-google-stock-api
Kelly

11
ในฐานะที่เป็นนักพัฒนาซอฟต์แวร์ที่ผมจะแนะนำให้อัลฟา Vantage พวกเขาให้บริการฟรี JSON APIs สำหรับเรียลไทม์และราคาหุ้นในอดีต นี่คือข้อมูลระหว่างวันเรียลไทม์สำหรับ MSFT นี่คือเอกสาร API แบบเต็มของพวกเขา คุณไม่จำเป็นต้องมีคีย์ API ซึ่งสามารถรับได้ฟรีที่พวกเขาเว็บไซต์
Steve Carino

4
ณ วันที่ ก.ย. 2017 โปรดอ่านคำถามนี้: stackoverflow.com/questions/46070126/ …
สิงหาคม

2
อัลฟ่า Vantage นั้นยอดเยี่ยม ฉันเพิ่งเขียนโพสต์บล็อกเกี่ยวกับมันthe-data-wrangler.com/ ...
Ashley Davis

คุณสามารถลองใช้ api นี้: free.currencyconverterapi.com/api/v5/…
Toe Pyae Sone Oo

คำตอบ:


427

กำลังอัปเดตคำตอบเล็กน้อย

1.ลองใช้Alpha Vantage API

สำหรับผู้เริ่มต้นคุณสามารถลองรับเอาต์พุต JSON จากเคียวรีเช่น

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

อย่าลองใช้Yahoo Finance API (เลิกใช้แล้วหรือไม่พร้อมใช้งานตอนนี้)

สำหรับผู้เริ่มต้นคุณสามารถสร้าง CSV ด้วยการเรียก API อย่างง่าย:

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

(สิ่งนี้จะสร้างและบันทึก CSV สำหรับ AAPL, GOOG และ MSFT)

โปรดทราบว่าคุณต้องผนวกรูปแบบเข้ากับสตริงแบบสอบถาม ( f=..) สำหรับภาพรวมของทุกรูปแบบดูหน้านี้

สำหรับตัวอย่างเพิ่มเติมให้ไปที่หน้านี้

สำหรับXMLและJSONตามข้อมูลคุณสามารถทำสิ่งต่อไปนี้:

อย่าใช้ YQL (Yahoo Query Language) **

ตัวอย่างเช่น:

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. ใช้เว็บเซอร์

ตัวอย่างเช่นเพื่อรับราคาหุ้นทั้งหมดในXML:

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

หากต้องการรับราคาหุ้นทั้งหมดJSONเพียงเพิ่มformat=JSONไปที่ท้าย URL:

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

ทางเลือก:

1. Currency API

  • อัตราสกุลเงินเรียลไทม์มากกว่า 165+ แห่งรวมถึง cryptos จำนวนน้อย เอกสารที่นี่

2. 1 API ทางการเงินของหน้าจอ

  • อัตราค่าบริการแบบ Real-time สำหรับประมาณ 40 คู่สกุลเงินที่มีอยู่ที่นี่

3. API เนื้อหาทางการเงิน

  • เอกสารสำหรับ API นี้เป็นสิ่งที่ดีมาก

4. เปิดอัตราแลกเปลี่ยน

5. Oanda API

6. XE API

7. Xignite API

8. currencylayer API

9. API อื่น ๆ - อธิบายที่programmableWeb


2
นี่คือสิ่งที่คุณถามตอนนี้ ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
Aura

7
มันคุ้มค่าที่จะทราบว่า Yahoo! พูดเกี่ยวกับการดึงราคาหุ้น: "ดูเหมือนว่าบางคนมีวิศวกรรมย้อนกลับ API ที่พวกเขาใช้ในการดึงข้อมูลทางการเงิน แต่พวกเขากำลังทำลายข้อกำหนดในการให้บริการของเรา (ไม่มีการแจกจ่ายข้อมูลทางการเงิน) ... อนุญาตการแจกจ่ายซ้ำเท่านั้น ตราสัญลักษณ์ที่ทีมสร้างขึ้น: finance.yahoo.com/badgesมิฉะนั้นคุณสามารถใช้ YQL หรือวิธีการอื่นในการรับข้อมูลสำหรับการใช้งานส่วนบุคคล " developer.yahoo.com/forum/General-Discussion-at-YDN/
......

3
แทนที่จะบันทึกเป็น csv ... คุณสามารถดึงข้อมูลเป็น JSON แทนได้หรือไม่
bouncingHippo

3
ที่น่าสังเกตว่าจุดสิ้นสุดของ Yahoo มีไม่เวลาจริงที่พวกเขากำลัง 15 นาทีภายหลัง (ดูข้อมูล LastTradeWithTime ใน YQL ตัวอย่าง)
Artur

37
คำตอบต้องได้รับการอัปเดตเนื่องจาก Yahoo Finance API นั้นตายแล้ว
Vivek Vijayan

47

ฉันทางปลาย แต่ตรวจสอบQuandl พวกเขามีAPI สำหรับราคาหุ้นและพื้นฐาน

นี่คือตัวอย่างการโทรโดยใช้การดาวน์โหลด Quandl-api ใน csv

ตัวอย่าง:

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

พวกเขาสนับสนุนภาษาเหล่านี้ แหล่งข้อมูลของพวกเขามาจาก Yahoo Finance, Google Finance, NSE, BSE, FSE, HKEX, LSE, SSE, TSE และอื่น ๆ ( ดูที่นี่ )


คุณมีตัวชี้วัดทางเทคนิคด้วย API นี้ (เช่น rsi) หรือไม่?
Kiva

ฉันไม่รู้. จริง ๆ แล้วฉันไม่ได้มีส่วนเกี่ยวข้องกับ Quandl ฉันเพิ่งรู้ว่าเป็นที่สำหรับรับข้อมูล
user2023861

นี่เป็นตัวเลือกที่ดี แต่คุณสามารถรับข้อมูลสต็อคสดได้ที่นี่หรือไม่? ดูเหมือนว่ากรอบเวลาที่สั้นที่สุดคือข้อมูลรายวัน?
เทรเวอร์

8
ข้อมูลสต็อคสดไม่สามารถใช้ได้ผ่าน Quandl - ฉันได้ลองแล้ว
ไบรอันกูดวิน

2
Quandl ยังมีหุ้นจำนวนมากที่ขาดหายไปในชุดข้อมูลของ WIKI
Jeremy Holovacs

16

ผมขอแนะนำให้ใช้นักพัฒนา API มันดีมากและใช้งานฟรี สิ่งที่จำเป็นต้องมีก็คือคุณมีบัญชีกับพวกเขาและสำหรับความรู้ของฉันคุณไม่จำเป็นต้องมียอดเงินคงเหลือ ... เท่านั้นที่จะลงทะเบียน


2
และการสร้างบัญชีนั้นช่างแสนตลกจนฉันยกเลิกไปหลังจากผ่านไป 10 นาที ...
inselberg

2
ถ้าฉันจะถามอะไร "ตลก" เกี่ยวกับมัน? คุณหมายถึงความจริงที่ว่าพวกเขาขอข้อมูลส่วนบุคคลที่ละเอียดอ่อนหรือไม่? นายหน้าซื้อขายหุ้นออนไลน์ใด ๆ ที่จะขอข้อมูลเดียวกัน ... มันไม่มีอะไรผิดปกติ
ฝึกอบรม

11
SIN, วันเดือนปีเกิด, สถานภาพ, ผู้อยู่ในความอุปการะ, ... ? อย่างจริงจัง? ฉันต้องการโทรหา API เพื่อทดสอบ
Daniel B

apis อื่น ๆ ที่ฉันค้นหาคือ quotemedia และพันธมิตร
Deepan Prabhu Babu

7

ฉันปฏิบัติตามคำตอบที่ดีที่สุดและเริ่มมองหาการเงิน yahoo API ของพวกเขาสามารถเข้าถึงได้หลายวิธี แต่ฉันพบการอ้างอิงที่ดีสำหรับการรับข้อมูลหุ้นเป็น CSV ที่นี่: http://www.jarloo.com/

ใช้ที่ฉันเขียนสคริปต์นี้ ฉันไม่ใช่คนทับทิม แต่นี่อาจช่วยให้คุณแฮ็คบางสิ่งร่วมกัน ฉันยังไม่ได้คิดชื่อตัวแปรสำหรับทุกข้อเสนอ yahoo ดังนั้นคุณสามารถเติมได้ถ้าคุณต้องการ

นี่คือการใช้งาน

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

1
มันมีประโยชน์จริง ๆ ฉันหวังว่าฉันจะให้คะแนนมากกว่านี้ คำถามด่วน - คุณพบว่า API นี้มีความน่าเชื่อถือและราคาเป็นเรียลไทม์? ฉันรู้ว่าข้อมูลของ Yahoo ล่าช้าและดูเหมือนว่าขึ้นอยู่กับ API เฉพาะที่คุณเข้าถึง
Hundley

ฉันทำสิ่งนี้เพื่อช่วยเพื่อนและฉันคิดว่ามันทำงานได้ดีสำหรับเขา ข้อมูลค่อนข้างเร็วฉันคิดว่าพวกเขาอัพเดททุก 10/15 นาทีถ้าฉันจำได้ถูกต้อง
Jack Franzen

1
รุ่น C # และแบบฝึกหัดอยู่ที่นี่: jarloo.com/yahoo_finance
Kelly

ใช่ผู้ชายคนนั้นรู้วิธีรับข้อมูลหุ้นฮ่าฮ่า เขามีบทเรียนอื่น ๆ ในช่วง 2 เดือนที่ผ่านมาที่อ้างว่าคุณยังสามารถรับข้อมูลหุ้นแบบเรียลไทม์จาก Google ได้
Jack Franzen

6

หากคุณยังคงต้องการใช้ Google Finance สำหรับข้อมูลของคุณคุณสามารถลองดูได้

เมื่อเร็ว ๆ นี้ฉันต้องการทดสอบว่าข้อมูล SGX สามารถเรียกคืนได้จริงผ่านทางการเงินของ google (และแน่นอนฉันพบกับปัญหาเดียวกันกับคุณ)


ฉันเคยเห็น 'JSON Quote API' มาก่อน เครื่องมือนั้นดูมีแนวโน้มมาก ฉันจะแนะนำสิ่งนี้เช่น: Investexcel.net/google-finance-stock-quotes-in-excel
ASH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.