주식 투자든, 기업 분석이든, 자동화 봇이든 — 한국 상장사의 공시와 재무 데이터가 필요한 순간이 온다. 이걸 사람이 일일이 DART 사이트에서 긁는 대신, API로 자동으로 끌어오는 무료 창구가 금융감독원의 전자공시 OpenDART다. 사업보고서 재무제표, 임원 현황, 지분 변동, 실시간 공시까지 전부 프로그램으로 받아올 수 있고, 하루 2만 건까지 공짜다. 이 글은 인증키 발급(실제 화면 캡처 포함) → API 구조 이해 → 실제 호출 → 활용사례까지, 처음 쓰는 사람도 따라 할 수 있게 실습으로 정리한다.

OpenDART가 뭔가 — 전자공시를 ‘API’로

우리가 아는 DART(dart.fss.or.kr)는 상장사가 공시를 올리고 사람이 눈으로 읽는 웹사이트다. OpenDART(opendart.fss.or.kr)는 그 똑같은 공시 데이터를 프로그램이 읽을 수 있게 API로 열어준 것이다. 금융감독원이 직접 운영하며, 공식 소개 문구 그대로 “DART에 공시되고 있는 공시보고서 원문 등을 오픈API를 통해 활용할 수 있습니다.”

핵심 특징 세 가지.

  • 무료: 개인·기업·기관 누구나 신청만 하면 쓴다. 별도 자격 제한이 없다.
  • 공식·정확: 금감원 원천 데이터라 신뢰도가 최고 수준이다. 크롤링과 달리 합법적이고 안정적이다.
  • 광범위: 공시 목록부터 재무제표, 임원·지분 정보까지 상장사 데이터 대부분을 커버한다.

왜 크롤링이 아니라 API여야 할까? DART 웹페이지를 프로그램으로 긁는(크롤링) 방식은 화면 구조가 바뀌면 깨지고, 과도하면 차단당하며, 법적으로도 회색지대다. 반면 OpenDART는 금감원이 공식적으로 “가져가 쓰라”고 열어둔 통로라 안정적이고 떳떳하다. 데이터 형식(JSON·XML)도 일정해서 코드가 오래간다. 한 번 익혀두면 두고두고 쓰는 인프라인 셈이다.

OpenDART 메인 화면 OpenDART 첫 화면. ‘인증키 신청’, ‘개발가이드’, ‘공시정보 활용마당’ 메뉴가 시작점이다. (출처: opendart.fss.or.kr 화면 캡처)

1단계: 인증키 발급 — 실제 화면 따라 하기

OpenDART는 **인증키(API key)**가 있어야 쓴다. 이 40자리 문자열이 “너는 이용 허가를 받은 사용자”라는 신분증 역할을 한다. 발급은 5분이면 끝난다.

  1. 회원가입: opendart.fss.or.kr에서 이메일로 가입하고 인증한다.
  2. 인증키 신청: 상단 메뉴 **[인증키 신청/관리] → [인증키 신청]**으로 간다. 아래 화면처럼 오픈API 이용약관 동의개인정보 수집·이용 동의를 체크하고, 이메일·비밀번호와 API 사용용도(예: “개인 투자 분석용”)를 입력한 뒤 등록한다.

OpenDART 인증키 신청 화면 인증키 신청 페이지 — 약관 동의 후 사용용도를 적어 등록하면 즉시 발급된다. (출처: opendart.fss.or.kr 화면 캡처)

  1. 키 확인: **[마이페이지] → [오픈API 이용현황]**에서 발급된 40자 인증키를 복사한다. 이 키를 모든 API 요청에 붙여 보내면 된다.

발급받은 키는 절대 외부에 노출하면 안 된다. 깃허브에 코드를 올릴 때 키를 그대로 넣지 말고, 환경변수(.env)에 넣고 코드에서 불러오는 방식을 쓴다. 키가 유출되면 남이 내 한도를 소진하거나 오용할 수 있다.

2단계: API 구조 이해 — 6개 카테고리

키를 받았으면 [개발가이드] 메뉴에서 무엇을 받아올 수 있는지 확인한다. OpenDART의 API는 크게 여섯 묶음으로 나뉜다.

OpenDART 개발가이드 화면 개발가이드의 ‘공시정보’ 목록 — 공시검색·기업개황·공시서류 원본·고유번호 등 API별 상세 기능과 문서를 제공한다. (출처: opendart.fss.or.kr 화면 캡처)

카테고리대표 API무엇을 주나
공시정보공시검색, 기업개황, 고유번호특정 기업의 공시 목록, 회사 개요, 기업 식별코드
정기보고서 주요정보임원현황, 배당, 최대주주 등사업보고서 속 핵심 항목
정기보고서 재무정보단일회사 재무제표, 다중회사 비교분기별 재무제표(매출·이익 등)
지분공시 종합정보대량보유·임원 지분지분 변동 상세
주요사항보고서유상증자·합병 등중요 경영 이벤트
증권신고서지분증권·채무증권 등발행 관련 공시

요청 방식은 단순한 REST API다. 정해진 주소(https://opendart.fss.or.kr/api/...)에 **인증키(crtfc_key)**와 조건(기업코드·연도 등)을 파라미터로 붙여 호출하면, JSON 또는 XML로 응답이 온다.

3단계: 실제로 호출해보기

가장 많이 쓰는 세 가지를 예로 든다. 모든 요청에 crtfc_key=발급받은키가 들어간다.

① 고유번호(corp_code) 받기 — OpenDART는 회사를 이름이 아니라 8자리 고유번호로 식별한다. 먼저 전체 기업의 고유번호 파일을 한 번 받아둔다.

https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=발급키

② 공시검색 — 특정 기업의 최근 공시 목록을 받는다.

https://opendart.fss.or.kr/api/list.json?crtfc_key=발급키&corp_code=00126380&bgn_de=20260101

③ 단일회사 재무제표 — 사업보고서의 재무 항목을 받는다.

https://opendart.fss.or.kr/api/fnlttSinglAcnt.json?crtfc_key=발급키&corp_code=00126380&bsns_year=2025&reprt_code=11011

파이썬으로는 표준 라이브러리만으로 이렇게 짧게 부를 수 있다.

import os, urllib.request, urllib.parse, json

KEY = os.environ["DART_API_KEY"]  # .env에서 불러오기 (코드에 직접 X)
def dart(endpoint, **params):
    params["crtfc_key"] = KEY
    url = f"https://opendart.fss.or.kr/api/{endpoint}?" + urllib.parse.urlencode(params)
    return json.load(urllib.request.urlopen(url))

# 삼성전자(00126380)의 2025 사업보고서 재무
data = dart("fnlttSinglAcnt.json", corp_code="00126380", bsns_year="2025", reprt_code="11011")
print(data["list"][0])

응답의 reprt_code는 보고서 종류다(11011=사업보고서, 11012=반기, 11013=1분기, 11014=3분기). 이 몇 개 패턴만 익히면 나머지 API도 구조가 같아 금방 확장된다.

활용 사례 — 무엇을 만들 수 있나

OpenDART가 조회수 높은 주제인 이유는 응용 범위가 넓어서다. 실제로 개인이 만들어 쓰는 사례들.

  • 재무 스크리너: 여러 기업의 재무제표를 한 번에 받아 매출성장률·영업이익률·부채비율로 자동 필터링. “저평가 우량주 후보”를 스프레드시트로 뽑는다.
  • 공시 알림봇: 관심 종목의 공시검색 API를 주기적으로 호출해, 새 공시(유상증자·자사주·실적)가 뜨면 텔레그램·슬랙으로 즉시 알림.
  • 투자 리서치 자동화: 임원·최대주주·배당 정보를 긁어 기업 프로필을 자동 생성. 분기마다 갱신되는 ‘나만의 기업 리포트’.
  • AI 분석 연동: OpenDART로 받은 재무 수치를 LLM에게 넘겨 “전년 대비 무엇이 달라졌는지” 해설을 자동 생성. Claude Code로 만든 주식 분석 에이전트의 재무 담당 두뇌가 정확히 이 방식으로 OpenDART를 쓴다.

즉 OpenDART는 **“한국 기업 데이터의 원천”**이고, 그 위에 스크리너든 알림봇이든 AI 분석이든 원하는 걸 얹는 구조다. 증권사 유료 데이터를 사기 전에, 무료인 OpenDART로 먼저 만들어보는 것만으로도 웬만한 개인 분석 니즈는 충족된다.

주의사항 — 한도와 함정

무료지만 규칙은 있다. 실전 투입 전 이것만은 기억하자.

  • 일일 호출 한도 2만 건: 하루 20,000회까지 호출할 수 있다(2026년 기준). 개인 용도엔 넉넉하지만, 전 종목을 매일 훑는 스크리너라면 호출을 아끼는 설계(고유번호 파일 캐싱 등)가 필요하다.
  • 인증키 보안: 앞서 강조했듯 키는 환경변수로 관리하고 절대 공개 저장소에 올리지 않는다.
  • 데이터 갱신 시점: 재무 데이터는 정기보고서가 제출·공시된 뒤에 반영된다. 실시간 시세가 아니라 ‘공시 기준’ 데이터임을 이해하고 써야 한다.
  • 비상장·해외기업 한계: 상장사와 주요 비상장법인 위주다. 모든 회사가 다 있는 건 아니다.

So What — 데이터를 ‘읽는’ 사람에서 ‘부리는’ 사람으로

OpenDART의 진짜 가치는 단순히 데이터가 공짜라는 데 있지 않다. 한국 기업 정보에 대한 접근을 ‘수작업’에서 ‘자동화’로 바꿔준다는 데 있다. DART 사이트를 하나하나 클릭하던 일을, 한 번 짜두면 매일·매분기 알아서 돌아가는 파이프라인으로 만들 수 있다. 특히 요즘은 이 데이터를 AI에게 먹여 해석까지 자동화하는 흐름이 자리 잡으면서, “재무제표를 읽을 줄 아는가”보다 “재무 데이터를 API로 부릴 줄 아는가”가 개인 투자자·분석가의 새로운 무기가 되고 있다.

시작은 오늘 딱 하나 — 인증키 발급이면 된다. 키를 받고 위의 list.json 한 줄을 브라우저 주소창에 넣어보는 것으로, 한국 기업 데이터의 문이 열린다.


※ 이 글은 공개된 공공데이터(OpenDART)의 활용 방법을 안내하며, 특정 종목의 매수·매도를 권유하는 투자 조언이 아니다. API 정책·한도는 변경될 수 있으니 공식 사이트를 확인하자.

참고

함께 보면 좋은 글: Claude Code로 주식 자동매매 봇 만들기 [1편] · 주식봇 LLM 분석가 설계 [3편]