# Korea Company Headcount (National Pension 국민연금 가입자 수) (`kr-data/korea-company-headcount`) Actor

Monthly headcount, new hires and leavers of South Korean companies from the National Pension Service workplace registry (국민연금 가입 사업장), with up to 12 months of history. Search by Korean company name and business number. English JSON, no Korean account needed.

- **URL**: https://apify.com/kr-data/korea-company-headcount.md
- **Developed by:** [KR Data](https://apify.com/kr-data) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 workplace records

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 Headcount (National Pension 국민연금 가입자 수)

Get the **monthly headcount, new hires and leavers of South Korean companies** from the National Pension Service workplace registry (국민연금공단 국민연금 가입 사업장 내역). Search by **Korean company name**, optionally with the **business registration number** (사업자등록번호), and get up to **12 months of history** per workplace, plus the pension contributions billed each month (a capped payroll proxy).

**No API key or Korean account needed.** Paste company names, get English JSON.

Every Korean employer must enroll its employees in the National Pension, so the registry is the most complete public, monthly signal of how many people a Korean company employs and whether it is hiring or shrinking.

### Typical uses

- **Investors, VCs and alternative-data teams** — track hiring and attrition at Korean startups and listed companies month by month.
- **KYB, credit and supplier due diligence** — check that a Korean counterparty really has staff, and whether it is still enrolled (`active`) or has left (`withdrawn`).
- **Sales and recruiting intelligence** — size Korean accounts and spot fast-growing teams.
- **AI agents** — "How many employees does Kakao have in Korea, and is it hiring?"

### Input

| Field | Description |
|---|---|
| `companies` | One per line: the Korean company name, optionally `| business number`, e.g. `주식회사 카카오 | 120-81-47521`. Up to 200 per run. |
| `matchMode` | `exact` (default): the workplace name must equal the given name, ignoring 주식회사 / (주) / ㈜, spaces and punctuation. `contains`: every corporate workplace whose name contains it (branches, construction sites, affiliates). |
| `months` | Months of history, 1 (latest only, default) to 12. |
| `maxWorkplacesPerCompany` | Default 5, up to 50. Each workplace is one charged result. |
| `includeWithdrawn` | Default `true`: also return workplaces that left the pension (closed, merged, moved). |

```json
{ "companies": ["주식회사 카카오 | 120-81-47521", "삼성전자(주) | 124-81-00998", "카카오페이"], "months": 3 }
```

The registry is searched by **Korean** name. If you only know the English name or the business number, find the Korean name first with [Korea Business Check](https://apify.com/kr-data/korea-business-verify). Adding the business number is strongly recommended: the lookup is exact and much faster.

### Output

One item per matched workplace:

```json
{
  "input": "주식회사 카카오 | 120-81-47521",
  "query": { "name": "주식회사 카카오", "businessNumber": "1208147521" },
  "matchMode": "exact",
  "status": "found",
  "workplaceName": "주식회사 카카오",
  "entityType": "corporation",
  "businessNumberPrefix": "120-81-4****",
  "enrollmentStatus": "active",
  "enrolledOn": "1995-12-27",
  "withdrawnOn": null,
  "address": "제주특별자치도 제주시 첨단로",
  "legalDongCode": "50110136",
  "industryCode": "724000",
  "industryKo": "데이터베이스 및 온라인 정보 제공업",
  "dataMonth": "2026-08",
  "headcount": 3770,
  "newHires": 20,
  "leavers": 40,
  "pensionBilledKrw": 2212857800,
  "history": [
    { "month": "2026-08", "headcount": 3770, "newHires": 20, "leavers": 40, "pensionBilledKrw": 2212857800 },
    { "month": "2026-07", "headcount": 3798, "newHires": 30, "leavers": 48, "pensionBilledKrw": 2227917040 },
    { "month": "2026-06", "headcount": 3842, "newHires": 47, "leavers": 74, "pensionBilledKrw": 2167292980 }
  ],
  "error": null,
  "coverageNote": "Covers workplaces enrolled in the National Pension: corporations with 3+ members ...",
  "source": "National Pension Service (국민연금공단) enrolled workplace registry ...",
  "checkedAt": "2026-10-09T13:41:28+00:00"
}
```

| `status` | Meaning |
|---|---|
| `found` | One item per matched workplace, with figures. |
| `not_found` | No corporate workplace with this name (and business number) — free. |
| `invalid_input` | Missing name or invalid business number (check digit failed) — free. |
| `lookup_failed` | The official source did not answer; retry later — free. |

`enrollmentStatus`: `active` (등록) or `withdrawn` (탈퇴 — the workplace left the pension, for example after closing or merging).
`headcount` = enrolled pension members; `newHires` / `leavers` = members who gained / lost enrollment that month; `pensionBilledKrw` = pension contributions billed for the month in KRW (employer + employee share, based on reported pay with a legal cap). Figures appear about one to two months after the month they describe.

### Limitations — what is not included

- **Headcount is pension members, not total staff.** Employees over 60, most short-time part-timers and foreigners exempt by treaty are not enrolled, so the number is usually somewhat lower than reported employee counts.
- **Per workplace, not per group.** A company with several registered workplaces (plants, branches, construction sites) appears as several items; subsidiaries are separate companies. Use `contains` to see them all.
- **Only corporations.** The registry also lists sole proprietorships with 10+ members, but their workplace names can be personal names, so **individual-owned workplaces are never returned**.
- **Business number is partial.** The source publishes only the first 6 digits, so the number narrows the search but two companies can share a prefix; the name must also match.
- **About 12 months of history.** Older months are not available from this source.
- **Name-only searches of very common names** scan only the newest 500 matching records and may miss a workplace — add the business number.
- Names, addresses and industry names are returned in Korean, as filed.

### Pricing

Pay per workplace returned: **$0.003 per workplace** (`workplace-record`), including all requested months of history. Companies not found, invalid inputs and failed lookups are free.

### Use as an MCP tool (Claude, Cursor, other AI agents)

Add the Apify MCP server with this Actor:

```
https://mcp.apify.com?tools=kr-data/korea-company-headcount
```

### Source and license

국민연금공단_국민연금 가입 사업장 내역 (data.go.kr 3046071), 이용허락범위 제한 없음. Data is passed through unchanged except for English field names and labels and the removal of individual-owned workplaces described above.

### More Korean data from KR Data

- [Korea Business Check (KYB)](https://apify.com/kr-data/korea-business-verify) — business registration status, company profile, financials
- [Korean Address to English](https://apify.com/kr-data/korea-address) — official English address and postal code
- [Korean Law in English](https://apify.com/kr-data/korea-law) — official English text of Korean statutes
- [Korea Flood-Damaged Car Check](https://apify.com/kr-data/korea-flood-car-check) — flood-damage insurance records by license plate
- [Korea Online Seller Registration Check](https://apify.com/kr-data/korea-ecommerce-seller-registry) — mail-order business registration (통신판매업) by business number
- [Korea Drug & Medical Device Recalls](https://apify.com/kr-data/korea-health-recalls) — recent MFDS recalls and sales suspensions

# Actor input Schema

## `companies` (type: `array`):

One company per line: the Korean company name as registered, optionally followed by | and the 10-digit business registration number (사업자등록번호), e.g. 주식회사 카카오 | 120-81-47521. Legal-form markers such as 주식회사, (주) and ㈜ are ignored when matching. Adding the business number makes the lookup faster and exact. Up to 200 per run.

## `matchMode` (type: `string`):

exact: only workplaces whose name equals the given name (ignoring legal-form markers, spaces and punctuation). contains: every corporate workplace whose name contains it, e.g. branch offices and construction sites.

## `months` (type: `integer`):

1 = latest month only. Up to 12 (the source keeps about the last 12 months).

## `maxWorkplacesPerCompany` (type: `integer`):

Each workplace returned is one charged result.

## `includeWithdrawn` (type: `boolean`):

Also return workplaces that have left the National Pension (closed, merged or moved).

## Actor input object example

```json
{
  "companies": [
    "주식회사 카카오 | 120-81-47521",
    "삼성전자(주) | 124-81-00998"
  ],
  "matchMode": "exact",
  "months": 1,
  "maxWorkplacesPerCompany": 5,
  "includeWithdrawn": true
}
```

# Actor output Schema

## `results` (type: `string`):

One item per matched workplace (plus one per company not found).

# 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 = {
    "companies": [
        "주식회사 카카오 | 120-81-47521",
        "삼성전자(주) | 124-81-00998"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kr-data/korea-company-headcount").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 = { "companies": [
        "주식회사 카카오 | 120-81-47521",
        "삼성전자(주) | 124-81-00998",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("kr-data/korea-company-headcount").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 '{
  "companies": [
    "주식회사 카카오 | 120-81-47521",
    "삼성전자(주) | 124-81-00998"
  ]
}' |
apify call kr-data/korea-company-headcount --silent --output-dataset

```

## MCP server setup

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

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/GNonJ5DKpDejUie0W/builds/9t4bBG76OeTFt8HqC/openapi.json
