Google Finance API 대신 사용 [닫힘]


430

Google Finance API를 사용하여 회사에 대한 주식 데이터를 가져오고 싶었지만이 API는 2011/26/05부터 더 이상 사용되지 않습니다.

주식 데이터를 실시간으로 얻기 위해 무료 API로 무엇을 사용합니까?


1
사용할 수있는 다른 Google API가 있습니다. 여기에 문서화했습니다. jarloo.com/real-time-google-stock-api
— 켈리

11
소프트웨어 개발자로서 Alpha Vantage를 추천 합니다. 실시간 및 과거 주식 시세를위한 무료 JSON API를 제공합니다. 다음 은 MSFT에 대한 실시간 일일 데이터입니다. 다음 은 전체 API 설명서입니다. 웹 사이트 에서 무료로 얻을 수있는 API 키가 필요합니다 .
— Steve Carino

4
2017 년 9 월 현재,이 질문을 참조하십시오 : stackoverflow.com/questions/46070126/…
— augustomen

2
Alpha 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

DONT Yahoo Finance API를 사용해보십시오 (지금은 DEPRICATED 또는 UNAVAILABLE입니다).

초보자는 간단한 API 호출로 CSV를 생성 할 수 있습니다.

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

(이것은 AAPL, GOOG 및 MSFT에 대한 CSV를 생성하고 저장합니다)

쿼리 문자열 ( 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

의 모든 주식 시세를 얻으려면 URL 끝에 다음을 JSON추가하십시오 format=JSON.

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

대안 :

1. 통화 API

  • 소수의 암호화를 포함한 165 개 이상의 실시간 통화 요금. 여기에 문서가 있습니다 .

2. 1Forge 금융 API

3. 재무 컨텐츠 API

  • 문서 이 API에 대한 아주 좋은 것입니다.

4. 공개 환율

5. Oanda API

6. XE API

7. Xignite API

8. 통화 계층 API

9. 다른 API- 프로그래밍 가능한 웹 에서 논의


2
여기에 지금 요청한 것이 있습니다 ... gregnozik.blogspot.in/2011/09/yahoo-finance-api_23.html
— AurA

7
야후! "가격 데이터를 가져 오는 데 사용하는 API를 리버스 엔지니어링 한 것으로 보이지만 서비스 약관을 위반하는 것으로 보입니다 (재무 데이터의 재분배 없음) ... 재분배는 사용중인 경우에만 허용됩니다. 팀이 만든 배지 : finance.yahoo.com/badges . 그렇지 않으면 YQL 또는 다른 방법으로 개인 용도의 데이터를 얻을 수 있습니다 " developer.yahoo.com/forum/General-Discussion-at-YDN/…
— poshaughnessy

3
CSV로 저장하는 대신 데이터를 JSON으로 가져올 수 있습니까?
— 수신 거부 Hippo

3
야후의 엔드 포인트가 실시간 이 아니라는 점은 주목할 만하다. 15 분 지연된다 (예를 들어 YQL의 LastTradeWithTime 필드 참조)
— artur

37
Yahoo Finance API가 현재 종료되었으므로 답변을 업데이트해야합니다.
— Vivek Vijayan

47

늦었지만 Quandl을 확인하십시오 . 그들은 주가와 기초에 대한 API를 가지고 있습니다 .

다음 은 CSV에서 Quandl-api 다운로드를 사용 하는 호출 예입니다.

예:

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와 같은 기술 지표가 있습니까?
— 키바

나도 몰라 나는 실제로 Quandl과 제휴하지 않고 데이터를 얻을 수있는 곳이라는 것을 알고 있습니다.
— user2023861

이것은 좋은 옵션처럼 보이지만 여기서 실시간 재고 데이터를 얻을 수 있습니까? 최단 시간 프레임이 일일 데이터 인 것 같습니다.
— Trevor

8
Quandl을 통해 실시간 재고 데이터를 사용할 수 없습니다. 시도했습니다.
— Brian Goodwin

2
Quandl은 또한 WIKI 데이터 세트에 많은 주식이 없습니다.
— Jeremy Holovacs 2012 년

16

TradeKing의 개발자 API 사용을 제안 합니다 . 매우 좋고 무료입니다. 필요한 것은 당신이 그들과 함께 계정을 가지고 있고 내 지식으로 당신은 잔액을 가질 필요가 없다는 것입니다 ... 등록하기 위해서만.


2
그리고 그 계정을 만드는 것은 너무 재미있어서 10 분 후에 취소되었습니다 ...
— inselberg

2
내가 물을 수 있다면, "재미있는"것은 무엇입니까? 그들이 민감한 개인 정보를 요구한다는 사실을 언급하고 있습니까? 모든 온라인 주식 중개인은 동일한 정보를 요구할 것입니다.
— 훈련

11
SIN, 생년월일, 무술 상태, 부양 가족, ...? 진심으로? 테스트를 위해 API를 호출하고 싶습니다
— Daniel B

내가 찾고있는 다른 API는 quotemedia와 ally입니다.
— Deepan Prabhu Babu

7

나는 최고 답변을 따라 야후 금융을보고 시작했다. 그들의 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는 특정 데이터 [ "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

그래, 그 사람은 재고 정보를 얻는 방법을 알고있다. 그는 여전히 구글에서 실시간 주식 데이터를 얻을 수 있습니다 주장하는 지난 3 개월까지 다른 자습서를 가지고
— 잭 프란 젠에게

6

데이터에 Google Finance를 계속 사용하려는 경우 이를 확인할 수 있습니다 .

최근 SGX 데이터가 Google 금융을 통해 실제로 검색 가능한지 테스트해야했습니다 (물론 귀하와 동일한 문제가 발생했습니다)


전에 'JSON Quote API'를 보았습니다. 그 도구는 매우 유망한 것 같습니다. 또한 다음과 같이
— ASH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.