# Korea Company Registry API - Business Number Lookup 사업자 조회 (`elabstudio/korea-company-registry`) Actor

Look up South Korean companies by name or business registration number (사업자등록번호) from official government data: corporate number, CEO, address, employees, listing, financials and live NTS status.

- **URL**: https://apify.com/elabstudio/korea-company-registry.md
- **Developed by:** [E:LAB STUDIO](https://apify.com/elabstudio) (community)
- **Categories:** Lead generation, Developer tools
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Korea Company Registry API: Business Number Lookup (사업자 조회)

Look up **South Korean companies** by name, **business registration number (사업자등록번호)** or corporate registration number (법인등록번호) and get clean English JSON / CSV / Excel from **official government data**: registered name (Korean and English), corporate and business numbers, representative, head office address, founding date, listing market, employees, auditor, website, phone, optional **financial statements**, and the **live National Tax Service status** (active, suspended or closed, with VAT tax type and closure date).

No scraping of private websites: every field comes from the official open APIs of the Public Data Portal (data.go.kr), published by the Financial Services Commission (금융위원회) and the National Tax Service (국세청) under an unrestricted license.

### What you can use it for

- **KYB and customer onboarding**: confirm that a Korean business number is real and the business is still operating before you open an account, ship goods or pay out.
- **Supplier and partner due diligence**: check status, founding date, size, auditor opinion and revenue trend of a Korean company.
- **Fraud and invoice checks**: flag closed or suspended businesses and numbers that fail the official checksum.
- **Lead enrichment**: turn a list of Korean company names into registration numbers, addresses, websites, employee counts and revenue.
- **Market and investment research**: pull revenue, operating profit, assets and debt ratio by year for listed and unlisted companies that file with the FSC.
- **CRM hygiene**: re-check thousands of business numbers in one run (status is checked in batches of 100).

### Input

| Field | Example | Notes |
|---|---|---|
| `companyNames` | `["삼성전자", "카카오"]` | Korean company names. Matches names that contain the text. Best matches (exact name first, then larger companies) come first. |
| `businessNumbers` | `["124-81-00998"]` | 10-digit 사업자등록번호, dashes optional. Returns NTS status for every number and the company profile when it is a registered corporation. |
| `corporateNumbers` | `["130111-0006246"]` | Optional 13-digit 법인등록번호. |
| `maxResultsPerName` | `10` | Limit per name search (default 50, `0` = no limit). |
| `exactNameMatch` | `false` | Keep only companies whose name equals the query, ignoring 주식회사 / (주) and spaces. |
| `includeNtsStatus` | `true` | Live National Tax Service status. No extra charge. |
| `includeFinancials` | `false` | Adds yearly summary financial statements (consolidated and separate). Extra event per company with financials. |
| `financialYears` | `3` | Latest N fiscal years. |
| `onlyActive` | `false` | Drop suspended, closed and unregistered businesses. |
| `maxItems` | `0` | Stop after N results (`0` = no limit). |

Example: verify a list of business numbers

```json
{ "businessNumbers": ["124-81-00998", "220-81-62517", "120-81-47521"] }
```

Example: company profile with 3 years of financials

```json
{ "companyNames": ["삼성전자"], "exactNameMatch": true, "includeFinancials": true, "financialYears": 3 }
```

### Output example

```json
{
  "query": "삼성전자",
  "query_type": "company_name",
  "found_in_registry": true,
  "company_name_ko": "삼성전자(주)",
  "company_name_en": "SAMSUNG ELECTRONICS CO,.LTD",
  "company_name_romanized": "Samseongjeonja",
  "corporate_registration_number": "1301110006246",
  "corporate_registration_number_formatted": "130111-0006246",
  "business_registration_number": "1248100998",
  "business_registration_number_formatted": "124-81-00998",
  "business_number_checksum_valid": true,
  "representative_ko": "전영현, 노태문",
  "market": "KOSPI",
  "founded_date": "1969-01-13",
  "listing_date": "1975-06-11",
  "fiscal_year_end_month": 12,
  "employees": 128881,
  "avg_tenure_years": 13.7,
  "auditor_ko": "삼정회계법인",
  "audit_opinion_ko": "적정의견",
  "address_ko": "경기도 수원시 영통구 삼성로 129 (매탄동)",
  "postal_code": "16677",
  "province": "Gyeonggi-do",
  "district": "Suwon-si",
  "phone": "02-2255-0114",
  "website": "www.samsung.com/sec",
  "dart_corp_code": "00126380",
  "registry_data_date": "2026-11-08",
  "nts_status": "active",
  "nts_status_ko": "계속사업자",
  "tax_type_ko": "부가가치세 일반과세자",
  "closed_date": null,
  "financials": [
    { "year": 2025, "statement": "consolidated", "revenue": 333605938000000, "operating_profit": 43601051000000, "net_income": 45206805000000, "total_assets": 566942110000000, "total_liabilities": 130621773000000, "total_equity": 436320337000000, "debt_ratio_pct": 29.94, "currency": "KRW" }
  ],
  "latest_revenue_krw": 333605938000000,
  "latest_financial_year": 2025
}
```

`nts_status` values: `active` (계속사업자), `suspended` (휴업자), `closed` (폐업자), `not_registered` (the NTS does not know the number), `invalid_number` (fails the official checksum, not sent to the API).

### Pricing

Pay per result:

- **$3.00 per 1,000 companies or business numbers** (profile and NTS status included)
- **+$1.00 per 1,000 companies with financial statements** when `includeFinancials` is on

You can set a maximum cost per run in Apify and the actor stops when it is reached.

### FAQ

**How do I check if a Korean business registration number is valid?**
Put it in `businessNumbers`. The actor validates the checksum and asks the National Tax Service whether the business is active, suspended or closed, and returns its VAT tax type.

**Can I search by English company name?**
The official registry is searched by Korean name. Results include the English name when the company filed one. If you only have an English name, search the Korean name or use the business number.

**Does it cover sole proprietors?**
NTS status works for every business number, including sole proprietors. Company profiles and financials cover corporations (법인) in the Financial Services Commission data.

**How fresh is the data?**
NTS status is live. Company profiles show `registry_data_date`, the date of the latest official update; financials are the latest filed fiscal years.

**What about personal data?**
The actor returns only what the official corporate data publishes about companies (including the representative's name as filed). It does not collect anything else.

**Is there a limit?**
The source APIs have daily quotas. Very large runs may stop with a clear "daily quota reached" warning; run the rest the next day.

### Source and license

- Financial Services Commission (금융위원회): 기업기본정보, 기업 재무정보, via the Public Data Portal (공공데이터포털, data.go.kr). License: 이용허락범위 제한 없음 (no restriction on use).
- National Tax Service (국세청): 사업자등록정보 진위확인 및 상태조회 서비스, via data.go.kr. License: 이용허락범위 제한 없음.

Every result carries a `source` field naming the origin. This actor is not affiliated with the Korean government.

# Actor input Schema

## `companyNames` (type: `array`):

Search the official corporate registry by company name. Korean names work (e.g. "삼성전자", "카카오"); the search matches names that contain the text. English names are not searchable at the source.

## `businessNumbers` (type: `array`):

10-digit Korean business registration numbers, with or without dashes ("124-81-00998"). Each one returns the live National Tax Service status (active, suspended, closed, tax type) and the company profile when the business is a registered corporation.

## `corporateNumbers` (type: `array`):

Optional. 13-digit corporate registration numbers, with or without dash ("130111-0006246").

## `maxResultsPerName` (type: `integer`):

Name searches can match many companies ("전자" matches thousands). Best matches (exact name first, then larger companies) are kept. 0 = no limit.

## `exactNameMatch` (type: `boolean`):

Keep only companies whose name equals the query (ignoring 주식회사, (주) and spaces).

## `includeNtsStatus` (type: `boolean`):

Adds the live business status from the National Tax Service: active (계속사업자), suspended (휴업자), closed (폐업자), closure date and VAT tax type. Free of extra charge.

## `includeFinancials` (type: `boolean`):

Adds yearly revenue, operating profit, net income, assets, liabilities, equity and debt ratio (consolidated and separate) where the company files them. Billed as an extra event per company with financials.

## `financialYears` (type: `integer`):

How many of the latest fiscal years to include.

## `onlyActive` (type: `boolean`):

Drop companies whose NTS status is suspended, closed or not registered.

## `maxItems` (type: `integer`):

Stop after N results in total. 0 = no limit.

## Actor input object example

```json
{
  "companyNames": [
    "삼성전자"
  ],
  "businessNumbers": [
    "124-81-00998"
  ],
  "maxResultsPerName": 10,
  "exactNameMatch": false,
  "includeNtsStatus": true,
  "includeFinancials": false,
  "financialYears": 3,
  "onlyActive": false,
  "maxItems": 0
}
```

# Actor output Schema

## `companies` (type: `string`):

Company profiles with NTS status.

## `summary` (type: `string`):

Input and result counts.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companyNames": [
        "삼성전자"
    ],
    "businessNumbers": [
        "124-81-00998"
    ],
    "maxResultsPerName": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("elabstudio/korea-company-registry").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companyNames": ["삼성전자"],
    "businessNumbers": ["124-81-00998"],
    "maxResultsPerName": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("elabstudio/korea-company-registry").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companyNames": [
    "삼성전자"
  ],
  "businessNumbers": [
    "124-81-00998"
  ],
  "maxResultsPerName": 10
}' |
apify call elabstudio/korea-company-registry --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,elabstudio/korea-company-registry"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/S3j56O6agUpmAVgAD/builds/k3tGLKUFbGEIcCxZ7/openapi.json
