FSS DART API
DART (Data Analysis, Retrieval and Transfer System) is Korea’s equivalent of the US SEC EDGAR — the official source for corporate filings, financial statements, and disclosures.
Key endpoints
| Endpoint | Description |
|---|---|
GET /api/list.json |
Filing list search |
GET /api/company.json |
Company overview |
GET /api/fnlttSinglAcntAll.json |
Full financial statements |
GET /api/fnlttMultiAcnt.json |
Multi-company financials |
GET /api/corpCode.xml |
Corp code mapping (XML) |
GET /api/document.xml |
Filing document |
Python example: company filings
import httpx
API_KEY = "your_dart_api_key"
BASE = "https://opendart.fss.or.kr/api"
def get_filings(corp_code: str, bgn_de: str, end_de: str) -> list[dict]:
"""Get filings for a company. Dates in YYYYMMDD format."""
resp = httpx.get(f"{BASE}/list.json", params={
"crtfc_key": API_KEY,
"corp_code": corp_code,
"bgn_de": bgn_de,
"end_de": end_de,
"page_no": 1,
"page_count": 100,
}, timeout=30)
resp.raise_for_status()
data = resp.json()
if data.get("status") != "000":
raise ValueError(data.get("message"))
return data.get("list", [])
def get_corp_code(ticker: str) -> str | None:
"""Look up DART corp code. Download the corp code XML first."""
# GET https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=KEY
# Parse XML to map stock codes to corp codes
pass # implement XML parsing for your use case
# Example: Samsung Electronics filings in 2024
# filings = get_filings(corp_code="00126380", bgn_de="20240101", end_de="20241231")
Python example: financial statements
def get_financial_statement(corp_code: str, bsns_year: str, reprt_code: str = "11011"):
"""Get financial statements.
reprt_code: 11013 (Q1), 11012 (half), 11014 (Q3), 11011 (annual)
"""
resp = httpx.get(f"{BASE}/fnlttSinglAcntAll.json", params={
"crtfc_key": API_KEY,
"corp_code": corp_code,
"bsns_year": bsns_year,
"reprt_code": reprt_code,
"fs_div": "CFS", # CFS=consolidated, OFS=separate
}, timeout=30)
resp.raise_for_status()
data = resp.json()
if data.get("status") != "000":
raise ValueError(data.get("message"))
return data.get("list", [])
Notes:
- Apply for an API key at OpenDART. The official guide describes error 020 generally after 20,000 requests, while individual configured limits may differ.
corp_codeis DART’s internal ID, not the stock ticker — downloadcorpCode.xmlto map- Financial statements available in XBRL; JSON API returns key account data
- All documentation in Korean; use browser translation if needed
Integration surface
- Versioning
- API version in endpoint path
- Resource groups
- Company info, Filings, Financial statements, Shareholder reports
- Pagination
- Page-based with page_no and page_count
- Errors
- status/message fields in response
- Webhooks
- Not supported
- Official SDKs
- Community Python wrappers