Skip to main content

한국어 | English

kiwoom-rest-api — 키움증권 REST API Python 라이브러리

PyPI version Downloads CI License: MIT Python LinkedIn

키움증권 OpenAPI를 대체하는 Python REST API 래퍼. COM/OCX 없이 Windows · macOS · Linux 어디서나 국내주식 자동매매 · 시세조회 · 실시간 WebSocket을 사용할 수 있습니다. 토큰 자동 갱신으로 봇이 만료에 죽지 않고, sync / async 양쪽을 지원합니다. 186개 엔드포인트 · 19종 실시간 데이터 · 모의투자/실전투자 지원.

키움증권 REST API를 Python으로 쉽게 사용할 수 있는 래퍼 라이브러리입니다. 기존 키움 **OpenAPI+(OCX/COM)**나 pykiwoom과 달리, 32bit·Windows 제약 없이 64bit Python과 서버(헤드리스) 환경에서 그대로 동작합니다.

국내주식 186개 엔드포인트(REST 182 + 조건검색 4)와 19종 실시간 WebSocket 데이터를 지원합니다.

검색 키워드: 키움 OpenAPI 파이썬, 키움증권 자동매매 파이썬, 키움 REST API, pykiwoom 대안, 키움 모의투자 파이썬, KOSPI/KOSDAQ 시세 조회, 키움 asyncio, 키움 토큰 갱신

목차

왜 이 라이브러리인가?

  • 크로스 플랫폼: REST API 기반이라 Windows, macOS, Linux 어디서나 동작합니다. COM/OCX 방식과 달리 서버 환경에서도 사용 가능합니다.
  • 자동 토큰 관리: 토큰을 알아서 발급하고, 만료 전에 갱신하고, 401이 나면 재발급 후 재시도합니다. 장시간 도는 봇이 토큰 만료로 죽지 않습니다.
  • sync / async 양쪽 지원: KiwoomAPIAsyncKiwoomAPI가 같은 API를 제공합니다.
  • 자동 페이지네이션: request_all()로 연속조회를 한 줄에 처리합니다.
  • 내장 Rate Limiter: TR(api_id)별 토큰 버킷으로 호출 제한을 자동 관리합니다.
  • 바로 쓰는 응답: to_dataframe()"+70000" 같은 문자열을 숫자로 바꿔 DataFrame으로 넘겨줍니다.
  • 완전한 커버리지: 국내주식 182개 REST 엔드포인트 + 조건검색 4종 + 19종 실시간 WebSocket 데이터를 지원합니다.

기존 키움 OpenAPI / pykiwoom 과 무엇이 다른가?

기존 키움 **OpenAPI+(OCX/COM)**나 이를 감싼 pykiwoom은 32bit Windows에 묶여 있어 서버 배포·자동화가 어렵습니다. 이 라이브러리는 키움의 신규 REST API를 사용하므로 그 제약이 없습니다.

항목 키움 OpenAPI+ (OCX) pykiwoom kiwoom-rest-api
연동 방식 COM/OCX OCX 래퍼 REST + WebSocket
운영체제 Windows 전용 Windows 전용 Windows · macOS · Linux
Python 비트수 32bit 전용 32bit 전용 64bit 지원
서버/헤드리스 배포 어려움 (GUI 필요) 어려움 가능
실시간 데이터 이벤트 콜백 이벤트 콜백 async WebSocket
설치 별도 모듈 설치 OCX + 모듈 pip install 한 줄

이미 OCX 기반 코드를 쓰고 있다면, REST 방식으로 전환할 때 GUI 의존성과 32bit 제약을 한 번에 제거할 수 있습니다.

설치

pip install kiwoom-client

pandas 변환(to_dataframe())까지 함께 쓰려면:

pip install 'kiwoom-client[pandas]'

또는 uv 사용:

uv add kiwoom-client

소스에서 설치:

git clone https://github.com/younghwan91/kiwoom-rest-api.git
cd kiwoom-rest-api
pip install -e .
# 또는
uv pip install -e .

사전 준비

  1. 키움 REST API 포털에 가입합니다.
  2. API 사용신청을 통해 앱키(appkey)시크릿키(secretkey)를 발급받습니다.
  3. 환경변수 설정은 .env.example을 참고하세요.
  4. 처음에는 모의투자(is_mock=True)로 테스트한 뒤, 실전투자로 전환하세요.

빠른 시작

1단계: 연결

from kiwoom_rest_api import KiwoomAPI

# 모의투자 서버로 연결
api = KiwoomAPI(
    app_key="발급받은_앱키",
    app_secret="발급받은_시크릿키",
    is_mock=True,  # True=모의투자, False=실전투자
)

접근토큰은 첫 호출에서 자동 발급되고 만료 전에 갱신되므로 따로 할 일이 없습니다. 키가 올바른지 즉시 확인하고 싶다면 api.login()을 호출하세요 (선택).

2단계: 종목 조회

# 삼성전자(005930) 기본 정보 조회
info = api.stock_info.basic_stock_info(stk_cd="005930")
print(info)

# 삼성전자 일봉 차트 조회
chart = api.chart.stock_daily_chart(stk_cd="005930", base_dt="20260326")

# 당일 거래량 상위 종목 조회
ranking = api.ranking.top_volume_today()

3단계: 계좌 조회

# 내 계좌 평가 현황
evaluation = api.account.account_evaluation()

# 예수금 상세 조회
deposit = api.account.deposit_detail()

# 체결 잔고 조회
position = api.account.filled_position()

# 미체결 주문 조회
unfilled = api.account.unfilled_orders()

4단계: 주문

# 삼성전자 10주 지정가 매수
result = api.order.buy_order(
    dmst_stex_tp="01",   # 거래소 구분 (01: KRX)
    stk_cd="005930",     # 종목코드
    ord_qty=10,          # 주문 수량
    trde_tp="00",        # 주문 유형 (00: 지정가)
    ord_uv=70000,        # 주문 단가
)

# 매도 주문
api.order.sell_order(
    dmst_stex_tp="01",
    stk_cd="005930",
    ord_qty=10,
    trde_tp="00",
    ord_uv=75000,
)

# 주문 정정
api.order.modify_order(org_ord_no="원래주문번호", ord_qty=5, ord_uv=71000)

# 주문 취소
api.order.cancel_order(org_ord_no="원래주문번호", ord_qty=5)

5단계: 정리

api.logout()  # 토큰 폐기 (선택)
api.close()   # 연결 종료

# with 문을 쓰면 close()는 자동입니다
with KiwoomAPI(app_key="앱키", app_secret="시크릿키", is_mock=True) as api:
    info = api.stock_info.basic_stock_info(stk_cd="005930")

asyncio 사용법

AsyncKiwoomAPIKiwoomAPI와 같은 엔드포인트를 제공하며, 호출 앞에 await만 붙이면 됩니다.

import asyncio
from kiwoom_rest_api import AsyncKiwoomAPI

async def main():
    async with AsyncKiwoomAPI(app_key="앱키", app_secret="시크릿키", is_mock=True) as api:
        # 서로 다른 TR은 동시에 나간다 — 직렬로 돌리면 3배 걸린다
        info, chart, ranking = await asyncio.gather(
            api.stock_info.basic_stock_info(stk_cd="005930"),
            api.chart.stock_daily_chart(stk_cd="005930", base_dt="20260326"),
            api.ranking.top_volume_today(
                mrkt_tp="0", stk_cnd="0", trde_qty_tp="0",
                prc_tp="0", trde_amt_tp="0", updn_tp="0",
            ),
        )
        print(info["stk_nm"])

asyncio.run(main())

Rate Limiter는 TR(api_id)별로 걸립니다. 서로 다른 TR은 서로를 막지 않고 동시에 나가며, 같은 TR을 반복 호출할 때만 초당 1건으로 조여집니다. 전체 예제는 examples/async_usage.py를 참고하세요.

응답을 숫자·DataFrame으로 받기

키움은 모든 값을 문자열로 돌려줍니다. 가격은 "+70000", 등락률은 "-1.23", 거래량은 "1,234,567" 같은 식이라 그대로는 계산에 쓸 수 없습니다.

from kiwoom_rest_api import to_dataframe, to_number, normalize

result = api.ranking.top_volume_today(...)

# 페이로드 키를 자동으로 찾아 DataFrame으로 변환 (문자열 → 숫자 포함)
df = to_dataframe(result)
print(df["cur_prc"].mean())   # 바로 계산 가능

# dict 그대로 쓰고 싶다면
data = normalize(result)
price = to_number("+70000")   # 70000

종목코드("005930")처럼 앞자리 0이 의미를 갖는 값과, base_dt 같은 날짜·식별자 필드는 숫자로 바꾸지 않고 문자열로 남깁니다.

to_dataframe()에는 pandas가 필요합니다:

pip install 'kiwoom-client[pandas]'

실시간 WebSocket 데이터

실시간 체결가, 호가, 잔고 변동 등을 WebSocket으로 수신할 수 있습니다.

import asyncio
from kiwoom_rest_api import KiwoomAPI

api = KiwoomAPI(app_key="앱키", app_secret="시크릿키")
ws = api.create_websocket()

async def main():
    # connect()가 LOGIN 핸드셰이크까지 끝냅니다. 실패하면 KiwoomWebSocketError
    await ws.connect()

    # 콜백은 REAL 프레임의 항목 하나를 받습니다:
    # {"type": "0B", "item": "005930", "values": {"10": "+70000", ...}}
    ws.on("0B", lambda d: print(f"체결 {d['item']}: {d['values'].get('10')}"))
    ws.on("0D", lambda d: print(f"호가 {d['item']}: {d['values'].get('41')}"))

    # async 콜백도 그대로 등록할 수 있습니다
    async def save(d): ...
    ws.on("0B", save)

    # 삼성전자 실시간 체결+호가 구독
    await ws.subscribe("0B", "005930")
    await ws.subscribe(["0B", "0D"], ["005930", "000660", "035420"])

    # PING 응답과 재연결(재로그인·구독 복원)은 listen()이 알아서 처리합니다
    await ws.listen()

asyncio.run(main())

values의 키는 키움 FID 번호입니다(10=현재가, 13=누적거래량, 41=매도최우선호가).

조건검색

조건검색도 같은 WebSocket을 씁니다. api.condition_search가 요청 페이로드를 만들고, ws.send()로 보낸 뒤 ws.on_trnm()으로 응답을 받습니다.

await ws.connect()
ws.on_trnm("CNSRLST", lambda d: print("조건식 목록:", d["data"]))
ws.on_trnm("CNSRREQ", lambda d: print("검색 결과:", d.get("data")))

# 조건식 목록을 먼저 조회해야 seq를 알 수 있습니다
await ws.send(api.condition_search.condition_list())

# seq로 검색 (search_type="1"이면 실시간 편입/이탈까지 수신)
await ws.send(api.condition_search.condition_search_realtime(seq="1"))
await ws.listen()

검증 상태: 실서버(api.kiwoom.com) 대상으로 LOGIN 핸드셰이크 · PING 프레임 · REG 등록 응답까지 확인했습니다. 다만 REAL 프레임의 항목 필드명(item/values)은 장 마감 중이라 아직 미확정입니다. 장중 이상 동작을 만나면 이슈로 알려주세요. 직접 확인하려면 python tests/integration_ws_smoke.py --prod 를 돌리면 됩니다.

연속 조회 (페이지네이션)

데이터가 많은 API는 한 번에 모든 데이터를 반환하지 않습니다. 응답 헤더의 cont_yn"Y"이면 다음 페이지가 있다는 뜻입니다.

# 방법 1: 수동 연속 조회
result = api.account.filled_orders()
# result에 cont_yn="Y"와 next_key가 있으면 다음 페이지 조회
next_result = api.account.filled_orders(cont_yn="Y", next_key=result["next_key"])

# 방법 2: 자동 전체 조회 (모든 페이지를 한번에)
from kiwoom_rest_api.base import BaseClient
all_data = api._client.request_all(
    "/api/dostk/acnt", "ka10076",
    data_key="filled_list",  # 응답에서 리스트 데이터의 키 이름
)

에러 처리

from kiwoom_rest_api.base import KiwoomAPIError

try:
    result = api.order.buy_order(stk_cd="005930", ord_qty=10, ord_uv=70000)
except KiwoomAPIError as e:
    print(f"에러 코드: {e.code}")
    print(f"에러 메시지: {e.message}")
    print(f"전체 응답: {e.response}")

요청 제한 (Rate Limit)

키움 REST API는 TR(api_id)별로 독립적인 호출 제한을 둡니다. 실측 결과는 다음과 같습니다.

항목 측정값
지속(sustained) 안전 속도 TR당 약 1 req/s (이 속도에선 거부 0)
순간 버스트(burst) 허용량 TR당 약 2건
초과 시 응답 HTTP 429 + {"return_code": 5, "return_msg": "허용된 요청 개수를 초과하였습니다"}
제한 단위 TR(api_id)별 독립 — 서로 다른 TR은 영향 없음

이에 맞춰 라이브러리는 기본적으로 TR별 토큰 버킷 Rate Limiter(1 req/s, 버스트 2) 를 적용하고, 그래도 429가 발생하면 자동으로 백오프 후 재시도합니다. 별도 설정 없이도 안전하게 동작합니다.

# 기본값: TR당 1 req/s, 버스트 2, 429 자동 재시도
api = KiwoomAPI(app_key="...", app_secret="...")

# 직접 조정 (예: TR당 2 req/s, 버스트 3, 재시도 5회)
api = KiwoomAPI(app_key="...", app_secret="...",
                rate_limit=2.0, rate_burst=3, max_retries=5)

# 클라이언트 측 스로틀 비활성화 (직접 제어할 때)
api = KiwoomAPI(app_key="...", app_secret="...", rate_limit=None)

제한이 TR별이라, 서로 다른 TR을 섞어 호출하면 합산 처리량은 더 높습니다. 반대로 같은 TR을 반복(연속조회 루프 등)할 때는 1 req/s에 수렴합니다 — 이 경우 request_all()을 쓰면 페이지네이션을 안전하게 자동 처리합니다.

자주 묻는 질문 (FAQ)

키움 앱키(appkey)와 시크릿키는 어떻게 발급받나요?

키움 REST API 포털에 로그인한 뒤 API 사용신청 메뉴에서 신청하면 appkeysecretkey가 발급됩니다. 발급받은 키는 .env에 보관하고 코드에 직접 하드코딩하지 마세요. (.env.example 참고)

모의투자에서 실전투자로 어떻게 전환하나요?

KiwoomAPI 생성 시 is_mock 값만 바꾸면 됩니다. is_mock=True(모의투자) → is_mock=False(실전투자). 서버 URL은 라이브러리가 자동으로 전환합니다. 실전 전환 전 반드시 모의투자로 충분히 검증하세요.

api = KiwoomAPI(app_key="...", app_secret="...", is_mock=False)  # 실전투자

접근토큰(access token)이 만료되면 어떻게 하나요?

할 일이 없습니다. 토큰은 첫 호출에서 발급되고, 만료 60초 전에 선제 재발급되며, 그래도 인증 실패가 오면 재발급 후 한 번 더 시도합니다. (키움은 만료 토큰에 HTTP 401이 아니라 200 + return_code 3을 돌려주는데, 양쪽 다 인식합니다 — 실서버 확인 완료.) 갱신 시점을 바꾸려면 KiwoomAPI(..., expiry_margin=300)처럼 조절하세요.

여러 프로세스가 토큰을 공유해야 한다면 TokenProvider 프로토콜(get_valid_token() / refresh_token())을 구현해 넘기면 Redis 등 외부 캐시를 쓸 수 있습니다.

Rate limit(호출 제한) 에러가 발생합니다.

내장 TR별 토큰 버킷 Rate Limiter가 호출 빈도를 자동 조절하고 429 발생 시 재시도까지 처리합니다(실측 기준 TR당 1 req/s, 버스트 2). 그래도 제한에 걸린다면 다중 프로세스/스레드에서 같은 TR을 동시 호출 중인지 확인하고, 연속조회는 request_all()로 한 번에 처리하세요. 자세한 내용은 요청 제한 (Rate Limit)을 참고하세요.

조건검색(실시간)은 어떻게 사용하나요?

api.condition_search로 조건식 목록 조회·검색·실시간 등록/해제를 지원합니다. 실시간 조건검색은 WebSocket 기반으로 동작합니다. (지원 API 목록 참고)

Windows가 아닌 macOS/Linux에서도 되나요?

네. REST/WebSocket 기반이라 OCX·COM이 필요 없어 macOS·Linux·서버(헤드리스) 환경에서 모두 동작합니다.

pandas DataFrame으로 바로 받을 수 있나요?

to_dataframe(result) 한 줄이면 됩니다. 엔드포인트마다 다른 페이로드 키를 자동으로 찾고, "+70000" 같은 문자열도 숫자로 바꿔줍니다. 응답을 숫자·DataFrame으로 받기examples/pandas_usage.py를 참고하세요.

asyncio를 지원하나요?

네. AsyncKiwoomAPIKiwoomAPI와 같은 엔드포인트를 제공합니다. asyncio 사용법을 참고하세요.

환경 설정

구분 실전투자 모의투자
is_mock False (기본값) True
REST URL https://api.kiwoom.com https://mockapi.kiwoom.com
WebSocket URL wss://api.kiwoom.com:10000 wss://mockapi.kiwoom.com:10000

지원 API 목록

인증

api.login()      # 접근토큰 발급 (au10001)
api.logout()     # 접근토큰 폐기 (au10002)

페이지네이션 (연속조회)

# 단일 조회
result = api.stock_info.basic_stock_info(stk_cd="005930")

# 연속 조회 (다음 페이지)
result = api.account.filled_orders(cont_yn="Y", next_key="다음키값")

계좌 (api.account) - 33개

메서드 API ID 설명
realized_profit_by_date() ka10072 일자별종목별실현손익요청_일자
realized_profit_by_period() ka10073 일자별종목별실현손익요청_기간
daily_realized_profit() ka10074 일자별실현손익요청
unfilled_orders() ka10075 미체결요청
filled_orders() ka10076 체결요청
today_realized_profit_detail() ka10077 당일실현손익상세요청
account_return_rate() ka10085 계좌수익률요청
unfilled_split_order_detail() ka10088 미체결 분할주문 상세
today_trading_journal() ka10170 당일매매일지요청
deposit_detail() kt00001 예수금상세현황요청
daily_estimated_deposit() kt00002 일별추정예탁자산현황요청
estimated_asset() kt00003 추정자산조회요청
account_evaluation() kt00004 계좌평가현황요청
filled_position() kt00005 체결잔고요청
order_execution_detail() kt00007 계좌별주문체결내역상세요청
next_day_settlement() kt00008 계좌별익일결제예정내역요청
order_execution_status() kt00009 계좌별주문체결현황요청
withdrawable_amount() kt00010 주문인출가능금액요청
orderable_qty_by_margin() kt00011 증거금율별주문가능수량조회요청
orderable_qty_by_credit() kt00012 신용보증금율별주문가능수량조회요청
margin_detail() kt00013 증거금세부내역조회요청
comprehensive_transaction_history() kt00015 위탁종합거래내역요청
daily_return_detail() kt00016 일별계좌수익률상세현황요청
today_account_status() kt00017 계좌별당일현황요청
evaluation_balance_detail() kt00018 계좌평가잔고내역요청
account_number_inquiry() ka00001 계좌번호조회
daily_balance_return_rate() ka01690 일별잔고수익률
gold_spot_balance() kt50020 금현물 잔고확인
gold_spot_deposit() kt50021 금현물 예수금
gold_spot_order_execution_all() kt50030 금현물 주문체결전체조회
gold_spot_order_execution() kt50031 금현물 주문체결조회
gold_spot_transaction_history() kt50032 금현물 거래내역조회
gold_spot_unfilled_orders() kt50075 금현물 미체결조회

종목정보 (api.stock_info) - 31개

메서드 API ID 설명
basic_stock_info() ka10001 주식기본정보요청
stock_trading_agent() ka10002 주식거래원요청
execution_info() ka10003 체결정보요청
credit_trading_trend() ka10013 신용매매동향요청
daily_transaction_detail() ka10015 일별거래상세요청
new_high_low() ka10016 신고저가요청
upper_lower_limit() ka10017 상하한가요청
near_high_low() ka10018 고저가근접요청
rapid_price_change() ka10019 가격급등락요청
trading_volume_update() ka10024 거래량갱신요청
volume_concentration() ka10025 매물대집중요청
high_low_per() ka10026 고저PER요청
change_rate_vs_opening() ka10028 시가대비등락률요청
trading_agent_supply_demand() ka10043 거래원매물대분석요청
trading_agent_instant_volume() ka10052 거래원순간거래량요청
vi_triggered_stocks() ka10054 변동성완화장치발동종목요청
today_vs_yesterday_volume() ka10055 당일전일체결량요청
daily_trading_by_investor() ka10058 투자자별일별매매종목요청
investor_institution_by_stock() ka10059 종목별투자자기관별요청
investor_institution_aggregate() ka10061 종목별투자자기관별합계요청
today_vs_yesterday_execution() ka10084 당일전일체결요청
watchlist_stock_info() ka10095 관심종목정보요청
stock_info_list() ka10099 종목정보 리스트
stock_info_inquiry() ka10100 종목정보 조회
industry_code_list() ka10101 업종코드 리스트
member_company_list() ka10102 회원사 리스트
program_buy_top50() ka90003 프로그램순매수상위50요청
program_trading_by_stock() ka90004 종목별프로그램매매현황요청
realtime_stock_inquiry_rank() ka00198 실시간종목조회순위
margin_loan_available_stocks() kt20016 신용융자 가능종목요청
margin_loan_inquiry() kt20017 신용융자 가능문의

시세 (api.market) - 25개

메서드 API ID 설명
stock_quote() ka10004 주식호가요청
stock_daily_weekly_monthly() ka10005 주식일주월시분요청
stock_minute_price() ka10006 주식시분요청
order_book_info() ka10007 시세표성정보요청
rights_issue_price() ka10011 신주인수권전체시세요청
daily_institutional_trading() ka10044 일별기관매매종목요청
institutional_trading_trend() ka10045 종목별기관매매추이요청
hourly_execution_strength() ka10046 체결강도추이시간별요청
daily_execution_strength() ka10047 체결강도추이일별요청
intraday_investor_trading() ka10063 장중투자자별매매요청
after_hours_investor_trading() ka10066 장마감후투자자별매매요청
broker_stock_trading_trend() ka10078 증권사별종목매매동향요청
daily_stock_price() ka10086 일별주가요청
after_hours_single_price() ka10087 시간외단일가요청
program_trading_by_time() ka90005 프로그램매매추이요청 시간대별
program_arbitrage_balance() ka90006 프로그램매매차익잔고추이요청
cumulative_program_trading() ka90007 프로그램매매누적추이요청
program_trading_by_stock_time() ka90008 종목시간별프로그램매매추이요청
program_trading_by_date() ka90010 프로그램매매추이요청 일자별
program_trading_by_stock_day() ka90013 종목일별프로그램매매추이요청
gold_spot_execution_trend() ka50010 금현물체결추이
gold_spot_daily_trend() ka50012 금현물일별추이
gold_spot_expected_execution() ka50087 금현물예상체결
gold_spot_price_info() ka50100 금현물 시세정보
gold_spot_order_book() ka50101 금현물 호가

주문 (api.order) - 8개

메서드 API ID 설명
buy_order() kt10000 주식 매수주문
sell_order() kt10001 주식 매도주문
modify_order() kt10002 주식 정정주문
cancel_order() kt10003 주식 취소주문
gold_spot_buy_order() kt50000 금현물 매수주문
gold_spot_sell_order() kt50001 금현물 매도주문
gold_spot_modify_order() kt50002 금현물 정정주문
gold_spot_cancel_order() kt50003 금현물 취소주문

신용주문 (api.credit_order) - 4개

메서드 API ID 설명
margin_buy_order() kt10006 신용 매수주문
margin_sell_order() kt10007 신용 매도주문
margin_modify_order() kt10008 신용 정정주문
margin_cancel_order() kt10009 신용 취소주문

차트 (api.chart) - 21개

메서드 API ID 설명
investor_institution_chart() ka10060 종목별투자자기관별차트요청
intraday_investor_chart() ka10064 장중투자자별매매차트요청
stock_tick_chart() ka10079 주식틱차트조회요청
stock_minute_chart() ka10080 주식분봉차트조회요청
stock_daily_chart() ka10081 주식일봉차트조회요청
stock_weekly_chart() ka10082 주식주봉차트조회요청
stock_monthly_chart() ka10083 주식월봉차트조회요청
stock_yearly_chart() ka10094 주식년봉차트조회요청
industry_tick_chart() ka20004 업종틱차트조회요청
industry_minute_chart() ka20005 업종분봉조회요청
industry_daily_chart() ka20006 업종일봉조회요청
industry_weekly_chart() ka20007 업종주봉조회요청
industry_monthly_chart() ka20008 업종월봉조회요청
industry_yearly_chart() ka20019 업종년봉조회요청
gold_spot_tick_chart() ka50079 금현물틱차트조회요청
gold_spot_minute_chart() ka50080 금현물분봉차트조회요청
gold_spot_daily_chart() ka50081 금현물일봉차트조회요청
gold_spot_weekly_chart() ka50082 금현물주봉차트조회요청
gold_spot_monthly_chart() ka50083 금현물월봉차트조회요청
gold_spot_intraday_tick_chart() ka50091 금현물당일틱차트조회요청
gold_spot_intraday_minute_chart() ka50092 금현물당일분봉차트조회요청

순위정보 (api.ranking) - 23개

메서드 API ID 설명
top_order_book_volume() ka10020 호가잔량상위요청
sudden_order_book_increase() ka10021 호가잔량급증요청
sudden_order_ratio_increase() ka10022 잔량율급증요청
sudden_volume_increase() ka10023 거래량급증요청
top_change_rate() ka10027 전일대비등락률상위요청
top_expected_change_rate() ka10029 예상체결등락률상위요청
top_volume_today() ka10030 당일거래량상위요청
top_volume_yesterday() ka10031 전일거래량상위요청
top_trading_value() ka10032 거래대금상위요청
top_credit_ratio() ka10033 신용비율상위요청
top_foreign_trades_by_period() ka10034 외인기간별매매상위요청
top_foreign_consecutive_buy() ka10035 외인연속순매매상위요청
top_foreign_limit_increase() ka10036 외인한도소진율증가상위
top_foreign_broker_trading() ka10037 외국계창구매매상위요청
broker_ranking_by_stock() ka10038 종목별증권사순위요청
top_broker_by_stock() ka10039 증권사별매매상위요청
main_brokers_today() ka10040 당일주요거래원요청
top_net_buying_brokers() ka10042 순매수거래원순위요청
departed_brokers_today() ka10053 당일상위이탈원요청
same_day_net_buying_rank() ka10062 동일순매매순위요청
top_intraday_investor_trading() ka10065 장중투자자별매매상위요청
after_hours_change_rate_rank() ka10098 시간외단일가등락율순위요청
top_foreign_institution_trades() ka90009 외국인기관매매상위요청

업종 (api.sector) - 6개

메서드 API ID 설명
industry_program_trading() ka10010 업종프로그램요청
industry_investor_net_buy() ka10051 업종별투자자순매수요청
industry_current_price() ka20001 업종현재가요청
industry_stock_price() ka20002 업종별주가요청
all_industry_index() ka20003 전업종지수요청
industry_daily_price() ka20009 업종현재가일별요청

기관/외국인 (api.foreign_institution) - 4개

메서드 API ID 설명
foreign_trading_trend() ka10008 주식외국인종목별매매동향
institutional_stock() ka10009 주식기관요청
consecutive_trading_status() ka10131 기관외국인연속매매현황요청
gold_spot_investor_status() ka52301 금현물투자자현황

공매도 (api.short_selling) - 1개

메서드 API ID 설명
short_selling_trend() ka10014 공매도추이요청

대차거래 (api.slb) - 4개

메서드 API ID 설명
lending_trend() ka10068 대차거래추이요청
top10_lending() ka10069 대차거래상위10종목요청
lending_trend_by_stock() ka20068 대차거래추이요청(종목별)
lending_details() ka90012 대차거래내역요청

테마 (api.theme) - 2개

메서드 API ID 설명
theme_group_list() ka90001 테마그룹별요청
theme_component_stocks() ka90002 테마구성종목요청

조건검색 (api.condition_search) - 4개 (WebSocket)

메서드 API ID 설명
condition_list() ka10171 조건검색 목록조회
condition_search() ka10172 조건검색 요청 일반
condition_search_realtime() ka10173 조건검색 요청 실시간
condition_search_cancel() ka10174 조건검색 실시간 해제

ELW (api.elw) - 11개

메서드 API ID 설명
daily_sensitivity_indicator() ka10048 ELW일별민감도지표요청
sensitivity_indicator() ka10050 ELW민감도지표요청
price_spike() ka30001 ELW가격급등락요청
top_net_buying_by_broker() ka30002 거래원별ELW순매매상위요청
lp_daily_holding_trend() ka30003 ELWLP보유일별추이요청
premium_rate() ka30004 ELW괴리율요청
condition_search() ka30005 ELW조건검색요청
change_rate_ranking() ka30009 ELW등락율순위요청
order_volume_ranking() ka30010 ELW잔량순위요청
proximity_rate() ka30011 ELW근접율요청
detailed_stock_info() ka30012 ELW종목상세정보요청

ETF (api.etf) - 9개

메서드 API ID 설명
return_rate() ka40001 ETF수익율요청
stock_info() ka40002 ETF종목정보요청
daily_trend() ka40003 ETF일별추이요청
overall_market_price() ka40004 ETF전체시세요청
time_segment_trend() ka40006 ETF시간대별추이요청
time_segment_execution() ka40007 ETF시간대별체결요청
daily_execution() ka40008 ETF일자별체결요청
time_nav() ka40009 ETF시간대별체결요청
time_trend() ka40010 ETF시간대별추이요청

실시간시세 (api.create_websocket()) - 19종

코드 설명
00 주문체결
04 잔고
0A 주식기세
0B 주식체결
0C 주식우선호가
0D 주식호가잔량
0E 주식시간외호가
0F 주식당일거래원
0G ETF NAV
0H 주식예상체결
0I 국제금환산가격
0J 업종지수
0U 업종등락
0g 주식종목정보
0m ELW 이론가
0s 장시작시간
0u ELW 지표
0w 종목프로그램매매
1h VI발동/해제

참고

라이선스

MIT


⭐ 도움이 되셨다면

이 라이브러리가 유용했다면 우측 상단 ⭐ Star 를 눌러주세요. 검색·추천 노출이 올라가 더 많은 개발자가 찾을 수 있습니다.

  • 🐛 버그·질문 → Issues
  • 🔧 개선 → PR 환영 (CONTRIBUTING)
  • 📈 새 엔드포인트·기능 업데이트 소식을 받으려면 팔로우

관련 프로젝트 — 한국 주식 퀀트 스택

이 라이브러리는 제가 오픈소스로 공개하는 한국 주식 퀀트 스택의 일부입니다. 시세·펀더멘탈·뉴스 수집부터 데이터 파이프라인, 알파 리서치까지 이어집니다.

프로젝트 설명
krx-fundamentals-api 국내 기업 펀더멘탈 REST API — 재무제표·투자지표·배당·종목 스크리닝 (DART + KRX + 네이버)
krx-news-rest-api 한국 주식 뉴스·공시 수집 REST API (FastAPI + Redis)
kr-quant-airflow 시세·수급·실적 데이터를 TimescaleDB로 수집하는 Airflow 파이프라인
kr-quant 코스피·코스닥 알파 리서치 — walk-forward·랜덤 음성대조를 강제하는 검증 가드레일
opt_portfolio VAA 기반 전술적 자산배분 백테스트·운용 시스템
automated-stock-trading-systems Bensdorp의 7개 비상관 트레이딩 시스템 백테스터 (교육용 재구현)
quantbox-engine 암호화폐 선물 백테스트·실행 엔진 — 룩어헤드 0, 백테스트↔실거래 일체화

만든 사람

채영환 (Younghwan Chae) · GitHub @younghwan91 · LinkedIn

전체 오픈소스 퀀트 스택은 프로필에서 한눈에 볼 수 있습니다.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiwoom_client-0.2.1.tar.gz (82.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiwoom_client-0.2.1-py3-none-any.whl (50.1 kB view details)

Uploaded Python 3

File details

Details for the file kiwoom_client-0.2.1.tar.gz.

File metadata

  • Download URL: kiwoom_client-0.2.1.tar.gz
  • Upload date:
  • Size: 82.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kiwoom_client-0.2.1.tar.gz
Algorithm Hash digest
SHA256 ce8b0e9a2c378d670186fb5fa38dbf2573ea84fa264cf109b581db6ce1af8c21
MD5 a8c1dd8d97d7aabe3988f23051bbca2d
BLAKE2b-256 2b2df7d37a026a066691e1eeed4364a15b88baa8608aa3a89de609e45c6ca066

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiwoom_client-0.2.1.tar.gz:

Publisher: publish.yml on younghwan91/kiwoom-rest-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kiwoom_client-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: kiwoom_client-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 50.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for kiwoom_client-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 45f757ce48352361b44cc1b6d972decf1372d4bf7e3976df139b854ad244e383
MD5 a738bfb146dcce604709ea9c5caf39ff
BLAKE2b-256 87755e33009beb314064a444c34b51cdb0c83481f371bb31fe0667171892f14b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kiwoom_client-0.2.1-py3-none-any.whl:

Publisher: publish.yml on younghwan91/kiwoom-rest-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.14

2 files

0.1.13

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page