Data and source code → github.com/pon00050/kr-company-registry
3,949 Korean companies. Four numbering systems — one assigned by the financial regulator, one by the stock exchange, one by the tax authority, one by the Ministry of Justice. No official table linking them. Until now.
The Fragmentation
Every Korean listed company exists simultaneously in at least four separate government databases, each using a different identifier that the agencies never coordinated.
DART (the Financial Supervisory Service’s disclosure system, 금융감독원) assigns each company an 8-digit code called a corp_code. Every financial disclosure, earnings report, and regulatory filing is indexed by this code. It is permanent — it survives corporate restructuring.
KRX (the Korea Exchange, 한국거래소) assigns each listed company a 6-character ticker code (종목코드). This is the number you see in trading terminals. It can change — when a company delists and relists, or when a SPAC completes a merger, the ticker often changes even though the underlying legal entity is the same.
NTS (the National Tax Service, 국세청) assigns each company a 10-digit Business Registration Number (사업자등록번호, BRN). This is the identifier that appears in government procurement contracts on the 나라장터 KONEPS platform, in customs records, and in tax filings. It is stable unless the company restructures.
The Ministry of Justice assigns each incorporated company a 13-digit Corporate Registration Number (법인등록번호, CRN). This is the key to the corporate registry — where official ownership records, director histories, and registration changes are filed. It is permanent, assigned at incorporation.
These four systems were built independently, for different regulatory purposes, by agencies with different mandates. There is no official, publicly maintained table linking them. The result: a company that appears in DART enforcement filings looks like a different entity from the same company in a government procurement database, because in the data, it is.
What This Makes Impossible
Two examples of what breaks in practice.
Cross-system investigation. An FSS enforcement case names a KOSDAQ company by its DART code. A researcher wants to know whether the same company received government procurement contracts during the period under investigation. The procurement database is indexed by BRN — a completely different number. There is no official key between them. Without a crosswalk, you look each company up manually, one at a time.
Panel dataset construction. A researcher building a multi-year dataset that links stock price performance — sourced from KRX and indexed by ticker — to corporate financial disclosures sourced from DART and indexed by corp_code needs to join two different identifier systems. This is a routine task in academic finance research. The identifier mapping that makes it possible has been proprietary, held by vendors like FnGuide and KOSCOM as paid data products, or assembled by hand.
What the Data Shows
The crosswalk covers 3,949 companies: 2,768 currently listed across KOSPI (841 companies), KOSDAQ (1,817), and KONEX (110), plus 1,181 delisted companies that DART continues to retain in its system.
BRN coverage for domestic companies is 100%. Every Korean-incorporated company in the dataset has a usable Business Registration Number. CRN coverage is 99% — 38 companies have no Korean Corporate Registration Number because they are foreign-incorporated entities listed on KRX.
Two edge cases are worth knowing before using the data in any join.
Foreign-listed companies. KRX lists 39 foreign-incorporated companies under ticker codes that start with 9. These companies have no Korean BRN. DART records their foreign registration number in the BRN field, but it is the wrong format for any government procurement or customs join. They need to be excluded before identifier-based matching.
Alphanumeric tickers. KRX assigns 6-character alphanumeric codes — such as 0004V0 or 0015G0 — to SPACs (기업인수목적회사, blank-check acquisition companies) and some recently listed companies. There are 36 in the current dataset. These are valid KRX identifiers, not data errors. Any pipeline that filters for numeric-only tickers will silently discard them.
What the Data Cannot Do
This table is a point-in-time snapshot, not a history. When a company changes its ticker — through relisting, a SPAC merger, or a backdoor listing (우회상장) — only the current ticker is recorded. For historical ticker mapping, the KRX KIND database (한국거래소 상장법인목록) is the appropriate source.
Delisted companies are included by design — DART retains them and they are often the subject of the most interesting cross-system analysis. If your work requires active listings only, filter by the is_listed field.
Bond ISINs are outside the scope of this table. The identifier linking a company’s equity listing to its convertible bond issuances comes from a separate pipeline.
Sources and Freshness
All data comes from DART’s public API — the corpCode.xml bulk download and the company.json per-company endpoint. No proprietary data. No paid subscriptions. The DART API key required to regenerate the data is free, available at the DART developer portal.
The table updates automatically every week via a GitHub Actions workflow. Each row carries an extracted_at date. Check it before using the data in time-sensitive analysis.
Why This Matters
To our knowledge, no publicly maintained, machine-readable crosswalk of this scope exists for any other Asian capital market. Taiwan, Japan, and Hong Kong face the same identifier fragmentation — different agencies, different codes, no official key. Korea now has a public answer.
The table is at github.com/pon00050/kr-company-registry. CSV and Parquet formats, updated weekly, MIT license. No API key required to use the data.