본문 바로가기

투자

한국거래소 정보데이터시스템의 OPEN API 서비스와 파이썬

한국거래소 정보데이터시스템의 OPEN API 서비스

한국거래소 정보데이터시스템의 OPEN API 서비스는 한국거래소가 정보데이터시스템를 통해 제공하는 다양한 통계정보를 웹 또는 모바일앱 개발에 활용할 수 있도록 인터페이스를 제공하는 서비스입니다.

이용약관

이용약관 일부 내용 발췌합니다.

제2장 이용 방법, 조건 및 절차

제8조(제공중단)

③ API 서비스의 이용기간은 제공기관이 인증키를 제공한 날부터 1년으로 하며, 이용기간 만료 전에 이용자의 연장요청이 있는 경우 1년 단위로 연장할 수 있다.

 

제6조(서비스 이용 시 주의사항)

② API 이용자는 API 서비스를 비상업적인 목적으로만 이용할 수 있으며, API 서비스를 이용한 결과에 대한 대가를 제3자에게 청구해서는 아니된다.

 

제7조(금지사항)

⑤ API 인증키의 양도, 증여 및 담보 목적물 사용

 

제8조(제공중단)

④ 하나의 키당 1일(매일 0시~24시) 10,000회 이하의 요청으로 제한하며, 이를 초과할 경우 서비스가 중지될 수 있다.

서비스 이용방법

출처 : KRX 정보데이터시스템 OPEN API

서비스 목록

제공되는 서비스는 지수, 주식, 증권상품, 채권, 파생상품, 일반상품 등으로 구분되며, 각 항목 별 세부사항은 웹사이트를 통해 확인하시면 됩니다.

 

출처 : KRX 정보데이터시스템 OPEN API

파이썬으로 데이터 받아오기

OPEN API 서비스로 제공되는 데이터를 받아오기 위해서는 사전 인증키를 신청해 받은 후 원하는 서비스 별로 이용 신청하여 승인이 완료되어야 합니다.

주식 / 유가증권 종목기본정보 받기

본 글에서는 주식, 6 "유가증권 종목기본정보" 서비스로 제공되는 샘플 데이터를 가져오는 코드를 소개합니다.

 

출처 : KRX 정보데이터시스템 OPEN API

 

파이썬 코드 실행 환경은 다음과 같습니다.

  • 파이썬 3.11.x
  • PyCharm 2023.x
  • 파이썬 라이브러리 "requests" 2.29.0 (추가 설치 필요)
  • 파이썬 표준 라이브러리 "json"
  • 접속 URL은 OPEN API 사이트에서 제공하는 샘플용 URL
  • 사용 인증키는 OPEN API 사이트에서 제공하는 샘플용 키
import requests
import json

url = 'http://data-dbg.krx.co.kr/svc/sample/apis/sto/stk_isu_base_info'  # URL
      + '?basDd='  # request inBlock
      + '20230707'  # yyyymmdd
headers = {
    'AUTH_KEY': '74D1B99DFBF345BBA3FB4476510A4BED4C78D13A'  # sample auth key
}
res = requests.get(url=url, headers=headers)
print('200 is ok :', res.status_code)
print(res.text)

 

위 코드를 실행하게 되면 아래와 같이 str 타입의 데이터가 출력되는데, 이 데이터의 내부 구조는 json 포맷을 기준으로 합니다.

 

 

따라서 파이썬 표준 라이브러리 json을 사용하면 데이터를 분석함에 있어 좀더 용이할 수 있습니다.

 

다음의 코드는 받아온 데이터를 json 라이브러리에서 사용 가능하도록 로드한 후 반환된 데이터의 타입을 표시하는 코드로 출력되는 데이터 타입은 dict 입니다.

 

res = json.loads(res.text)
print(type(res))

 

샘플 키로는 총 9개 종목의 데이터가 제공되며, 실제 인증키로는 유가증권(코스피, KOSPI)의 총 종목 정보가 제공됩니다.

 

제공되는 json 데이터 구조는 아래와 같이 하나의 키 "OutBlock_1"에 list 타입의 값이 있고, 이 list 타입의 값 내에는 각 종목 정보가 dict 타입으로  제공됩니다. 각각의 종목은 12개 항목으로 정보가 세분화되어 있습니다. 12개 항목에 대한 의미는 OPEN API 사이트에 작성되어 있고 아래 코드 내 주석으로 추가합니다.

 

{
    "OutBlock_1":
        [
            {
                "ISU_CD":"KR7432320000",  # 표준코드
                "ISU_SRT_CD":"432320",  # 단축코드
                "ISU_NM":"KB스타리츠보통주",  # 한글종목명
                "ISU_ABBRV":"KB스타리츠",  # 한글종목약명
                "ISU_ENG_NM":"KB STAR REIT",  # 영문종목명
                "LIST_DD":"20221006",  # 상장일
                "MKT_TP_NM":"KOSPI",  # 시장구분
                "SECUGRP_NM":"부동산투자회사",  # 증권구분
                "SECT_TP_NM":"-",  # 소속부
                "KIND_STKCERT_TP_NM":"보통주",  # 주식종류
                "PARVAL":"500",  # 액면가
                "LIST_SHRS":"101414285"  # 상장주식수
            },
            ...
        ]
}