English | 한국어
한국 OpenDART(금융감독원 전자공시시스템)의 공시 데이터를 읽어옵니다.
기업개황과 기간별 공시 목록, 재무제표와 주요 재무지표, 배당·증자·감자, 최대주주·소액주주· 임원·직원 현황과 임원 보수, 합병·분할·영업양수도·자기주식 취득 같은 주요 결정, 지분공시(5%룰), 증권신고서까지 다룹니다.
pip install opendart-client무료 API 키(40자리)는 https://opendart.fss.or.kr 에서 발급받으실 수 있습니다. 키는
OpenDart(api_key=...), 환경변수 OPENDART_API_KEY, config 파일 순으로 찾습니다.
config 파일 (모든 OS 공통, 권장) — ~/.config/opendart-client/credentials.json 파일을
만들고 아래를 넣으세요.
{ "OPENDART_API_KEY": "..." }0.3.0부터 config 파일의 키 이름이
api_key→OPENDART_API_KEY로 바뀌었습니다(환경변수와 동일). 예전 파일을 쓰고 계시면 필드 이름만 바꿔 주세요.
환경변수 — 셸에 따라 다릅니다. macOS·Linux(bash/zsh):
export OPENDART_API_KEY=...Windows PowerShell은 setx OPENDART_API_KEY "..."(영구) 또는
$env:OPENDART_API_KEY = "..."(현재 세션)를 씁니다.
from opendart_client import OpenDart
dart = OpenDart(api_key="...") # 또는 환경변수 OPENDART_API_KEY
# 이름 / 티커 / 초성 / 오타 -> corp_code
code = dart.resolver().resolve("삼성전자") # "00126380"
# 기간 내 공시 목록
rows = dart.disclosure.search(
corp_code=code, begin_date="20260101", end_date="20260131",
)
# 재무제표, 그리고 모든 주요사항(이벤트)
dart.finance.single_accounts(code, fiscal_year=2025)
dart.event.paid_in_capital_increase(
corp_code=code, begin_date="20260101", end_date="20260131",
)회사코드(corp_code)는 정식 이름·티커·초성(ㅅㅅㅈㅈ)·오타 어느 것으로도 찾을 수 있습니다
(dart.resolver().resolve(...)). 해당 자료가 없는 조회는 빈 결과로 옵니다.
반환은 list[dict]이라 pandas·polars 표(DataFrame)로 바로 만들 수 있습니다.
# pandas
import pandas as pd
pd.DataFrame(rows)
# polars
import polars as pl
pl.DataFrame(rows)최상위 도우미 — 회사코드를 찾거나 전체 목록을 받습니다.
| 호출 | 하는 일 |
|---|---|
dart.corp_codes() |
전체 회사의 회사코드 ↔ 이름/티커 목록 |
dart.resolver().resolve(query) |
이름·티커·초성·오타로 회사 하나를 회사코드로 |
dart.resolver().search(query) |
같은 조건으로 후보 목록 |
report_code — 정기보고서·재무정보 메서드가 공통으로 받는 기간 코드(기본값 11011).
| 코드 | 보고서 |
|---|---|
11011 |
사업보고서 (기본값) |
11012 |
반기보고서 |
11013 |
1분기보고서 |
11014 |
3분기보고서 |
| 메서드 | 설명 |
|---|---|
search(corp_code=…, begin_date=…, end_date=…, …) |
공시검색: 기간·필터에 맞는 모든 공시 (자동 페이지네이션) |
company(corp_code) |
기업개황 (상호·대표·주소·업종 등) |
document(rcept_no) |
공시서류 원본파일 (zip bytes) |
모두 (corp_code, *, fiscal_year, report_code="11011").
| 메서드 | 설명 |
|---|---|
total_shares |
주식의 총수 현황 |
treasury_shares |
자기주식 취득 및 처분 현황 |
dividends |
배당에 관한 사항 |
capital_changes |
증자(감자) 현황 |
debt_securities_issued |
채무증권 발행실적 |
commercial_paper_outstanding |
기업어음증권 미상환 잔액 |
short_term_bond_outstanding |
단기사채 미상환 잔액 |
corporate_bond_outstanding |
회사채 미상환 잔액 |
hybrid_security_outstanding |
신종자본증권 미상환 잔액 |
contingent_capital_outstanding |
조건부 자본증권 미상환 잔액 |
public_offering_fund_usage |
공모자금의 사용내역 |
private_placement_fund_usage |
사모자금의 사용내역 |
audit_opinion |
회계감사인의 명칭 및 감사의견 |
audit_service_contracts |
감사용역체결현황 |
non_audit_service_contracts |
회계감사인과의 비감사용역 계약체결 현황 |
outside_directors |
독립(사외)이사 및 그 변동현황 |
largest_shareholders |
최대주주 현황 |
largest_shareholder_changes |
최대주주 변동현황 |
minority_shareholders |
소액주주 현황 |
executives |
임원 현황 |
employees |
직원 현황 |
unregistered_executive_pay |
미등기임원 보수현황 |
director_pay_approved |
이사·감사 전체의 보수현황(주주총회 승인금액) |
director_pay_total |
이사·감사 전체의 보수현황(보수지급금액 - 전체) |
director_pay_by_type |
이사·감사 전체의 보수현황(유형별) |
individual_pay |
이사·감사의 개인별 보수현황(5억원 이상) |
individual_pay_v2 |
개인별 보수현황(5억원 이상) Ver2.0 — 2026-05 이후 제출분, grouped |
top5_individual_pay |
개인별 보수지급 금액(5억이상 상위5인) |
top5_individual_pay_v2 |
개인별 보수지급(상위5인) Ver2.0 — 2026-05 이후 제출분, grouped |
equity_investments |
타법인 출자현황 |
| 메서드 | 설명 |
|---|---|
single_accounts(corp_code, *, fiscal_year, report_code) |
단일회사 주요계정 |
multi_accounts(corp_codes, *, fiscal_year, report_code) |
다중회사 주요계정 (여러 회사 동시) |
full_statements(corp_code, *, fiscal_year, statement_div, report_code) |
단일회사 전체 재무제표 (BS/IS/CIS/CF 전 항목) |
single_indicators(corp_code, *, fiscal_year, index_class, report_code) |
단일회사 주요 재무지표 |
multi_indicators(corp_codes, *, fiscal_year, index_class, report_code) |
다중회사 주요 재무지표 |
xbrl_document(rcept_no, *, report_code) |
재무제표 원본파일(XBRL) — zip bytes |
xbrl_taxonomy(*, statement_kind) |
XBRL 택사노미 재무제표 양식 |
| 메서드 | 설명 |
|---|---|
insider_holdings(corp_code) |
임원·주요주주 소유보고 |
five_percent_holdings(corp_code) |
대량보유 상황보고 (5%룰) |
모두 (corp_code, *, begin_date, end_date).
| 메서드 | 설명 |
|---|---|
default_occurrence |
부도발생 |
business_suspension |
영업정지 |
rehabilitation_filing |
회생절차 개시신청 |
dissolution_cause |
해산사유 발생 |
paid_in_capital_increase |
유상증자 결정 |
bonus_issue |
무상증자 결정 |
combined_capital_increase |
유무상증자 결정 |
capital_reduction |
감자 결정 |
creditor_management_start |
채권은행 등의 관리절차 개시 |
creditor_management_stop |
채권은행 등의 관리절차 중단 |
litigation |
소송 등의 제기 |
overseas_listing_decision |
해외 증권시장 주권등 상장 결정 |
overseas_delisting_decision |
해외 증권시장 주권등 상장폐지 결정 |
overseas_listing |
해외 증권시장 주권등 상장 |
overseas_delisting |
해외 증권시장 주권등 상장폐지 |
convertible_bond |
전환사채권(CB) 발행결정 |
bond_with_warrant |
신주인수권부사채권(BW) 발행결정 |
exchangeable_bond |
교환사채권(EB) 발행결정 |
contingent_convertible_bond |
상각형 조건부자본증권 발행결정 |
treasury_acquisition |
자기주식 취득 결정 |
treasury_disposal |
자기주식 처분 결정 |
treasury_trust_contract |
자기주식취득 신탁계약 체결 결정 |
treasury_trust_termination |
자기주식취득 신탁계약 해지 결정 |
asset_transaction |
자산양수도(기타), 풋백옵션 |
business_acquisition |
영업양수 결정 |
business_transfer |
영업양도 결정 |
tangible_asset_acquisition |
유형자산 양수 결정 |
tangible_asset_transfer |
유형자산 양도 결정 |
equity_stake_acquisition |
타법인 주식 및 출자증권 양수결정 |
equity_stake_transfer |
타법인 주식 및 출자증권 양도결정 |
equity_bond_acquisition |
주권 관련 사채권 양수 결정 |
equity_bond_transfer |
주권 관련 사채권 양도 결정 |
merger |
회사합병 결정 |
spinoff |
회사분할 결정 |
split_merger |
회사분할합병 결정 |
stock_exchange |
주식교환·이전 결정 |
모두 (corp_code, *, begin_date, end_date).
| 메서드 | 설명 |
|---|---|
equity_securities |
지분증권 |
debt_securities |
채무증권 |
depositary_receipts |
증권예탁증권 |
merger |
합병 |
stock_exchange |
주식의 포괄적 교환·이전 |
division |
분할 |
설치하면 opendart 명령이 등록됩니다(python -m opendart_client로도 실행). 키는 위
세 곳(인자·환경변수·config 파일) 중 하나에서 읽습니다.
opendart resolve 삼성전자 # 이름·티커·초성·오타 -> 회사코드 (+후보)
opendart search 삼성전자 --begin 20260101 # 기간 내 공시 목록
opendart company 삼성전자 # 기업개황
opendart finance 삼성전자 --year 2024 # 주요계정 요약 (매출·영업이익·순이익·자산/부채/자본)주요 옵션:
| 옵션 | 적용 명령 | 설명 |
|---|---|---|
--api-key KEY |
전체 | 키 직접 지정 (생략 시 환경변수·config 파일) |
--timeout SEC |
전체 | 요청 제한 시간(초), 기본 30 |
--json |
전체 | 읽기 좋은 요약 대신 전체 결과를 JSON으로 |
--begin YYYYMMDD / --end YYYYMMDD |
search |
공시 접수일 구간 |
--limit N |
search |
표시 줄 수, 기본 20 |
--all |
search |
첫 페이지만이 아니라 전체 페이지 조회 |
--year N |
finance |
사업연도, 기본은 최근 제출된 사업연도 |
--report CODE |
finance |
11011 사업 · 11012 반기 · 11013 1분기 · 11014 3분기 (기본 11011) |
--separate |
finance |
별도재무제표(OFS), 기본은 연결(CFS) |
<회사> 자리엔 이름·티커·초성·오타·8자리 회사코드 아무거나 넣으면 내부에서 회사코드로
바꿔 조회합니다. 각 명령은 기본이 읽기 좋은 요약이고, --json은 전체 결과를 냅니다.
전체 옵션은 --help로 확인하세요.
resolve는 회사코드·티커·이름 순으로 정렬해 보여주며, 비상장사는 티커 자리가 ------입니다.
$ opendart resolve 삼성전자
00126380 005930 삼성전자
00252074 ------ 삼성전자판매
00366997 ------ 삼성전자로지텍
finance는 회사명·보고서와 함께 주요계정을 정렬해 보여줍니다(--separate로 별도재무제표).
$ opendart finance 삼성전자 --year 2024
삼성전자 (00126380) 2024 사업보고서 (CFS 연결)
매출액 300,870,903,000,000
영업이익 32,725,961,000,000
당기순이익 34,451,351,000,000
자산총계 514,531,948,000,000
부채총계 112,339,878,000,000
자본총계 402,192,070,000,000
이 저장소는 Claude Code·Codex용 플러그인 마켓플레이스도 겸합니다 — resolve·search·
company·finance를 opendart 명령을 호출하는 스킬로 제공합니다. 먼저 위에서 패키지를
설치하고 API 키를 설정하세요.
Claude Code 채팅창에서 마켓플레이스를 추가하고 설치합니다:
/plugin marketplace add seokhoonj/opendart-client
/plugin install opendart@opendart-client
그런 다음 평범하게 물어보거나("삼성전자 회사코드 찾아줘", "삼성전자 최근 공시 보여줘"),
스킬을 직접 호출하세요 — /opendart:resolve 삼성전자, /opendart:finance 삼성전자 --year 2024.
터미널에서 마켓플레이스를 추가하고 설치합니다:
codex plugin marketplace add seokhoonj/opendart-client
codex plugin add opendart@opendart-client
resolve·search·company·finance 스킬은 회사 이름·티커에 반응하며, opendart <명령> <회사>로 직접 실행해도 됩니다.
플러그인으로 설치하지 않고 쓰려면, 스킬을 스킬 디렉터리에 symlink한 뒤 접두사(opendart:)
없이 /resolve처럼 부르면 됩니다:
ln -s "$PWD/plugins/opendart/skills/resolve" ~/.claude/skills/resolve # Claude Code → /resolve
ln -s "$PWD/plugins/opendart/skills/resolve" ~/.codex/skills/resolve # Codex → $opendart:resolveClaude Code는 바로 인식하고, Codex는 재시작해야 로딩됩니다.