# JobKorea Jobs Scraper (Korea) - jobkorea.co.kr (`asiajobs/jobkorea-jobs-scraper`) Actor

Extract job postings from JobKorea (잡코리아), one of Korea's largest job boards. Search by keyword, region, job category, career, education and employment type, and get title, company, location, salary range, deadline, skills and the full job description as clean JSON.

- **URL**: https://apify.com/asiajobs/jobkorea-jobs-scraper.md
- **Developed by:** [naphat zhaokun](https://apify.com/asiajobs) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 jobs

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

## JobKorea Jobs Scraper (잡코리아 채용공고) — Korea

Extract job postings from **[JobKorea](https://www.jobkorea.co.kr)** (잡코리아), one of South Korea's largest job boards for professional, IT, sales, office and manufacturing jobs (채용정보). Search by keyword, region, job category, career level (신입/경력), education and employment type, and get clean, structured JSON with salary ranges, skills, work addresses and the full job description (상세요강).

### What you get

For every job posting (채용공고):

| Field | Example |
|---|---|
| `id`, `url` | 50065015, job page link |
| `title` | 2027 슈어소프트테크 신입사원 공개채용 |
| `companyName` | 슈어소프트테크㈜ |
| `location`, `locationCodes`, `workAddress` | 경기 성남시 수정구, B160, 경기 성남시 수정구 금토로80번길 37 … |
| `career`, `isNewcomer`, `education` | 경력3년↑, false, 대졸↑ |
| `employmentType` | 정규직, 계약직 |
| `salary`, `salaryType`, `salaryMin`, `salaryMax` | 연봉 4,000만원~4,500만원, 연봉, 40000000, 45000000 (KRW) |
| `deadline`, `alwaysHire`, `applicationStart`, `applicationEnd` | 2026-11-14, false (true = 상시채용) |
| `postedDate`, `updatedDate` | ISO timestamps (KST) |
| `jobCategories`, `keywords`, `skills` | 소프트웨어개발자, AI/ML엔지니어 · Python, React, Spring Boot |
| `benefits`, `workFields`, `openings`, `workingDays`, `workingHours` | 모집분야, 모집인원, 근무요일/시간 |
| `description`, `descriptionImages` | full 상세요강 text + image URLs for image-only postings |
| `companyType`, `industry`, `employees`, `stockListing`, `companyAddress`, `companyLogo` | 중소기업, 솔루션·SI·CRM·ERP, 460, 코스닥 상장 |
| `viewCount`, `scrapedAt` | 17238 |

Address, skills, keywords, schedule, description and company fields are filled when `includeDetails` is on.

### Use cases

- **Recruiters & HR tech**: track who is hiring in Korea, for which roles, seniority and salary bands.
- **Salary & labor-market research**: real 연봉/월급 ranges and in-demand skills by region and job category.
- **Sales lead generation**: hiring companies with industry, size, stock listing and address.
- **Job aggregators & AI job agents**: feed fresh Korean listings into your own product.

### How to use

1. **Search** — set `keyword` (Korean or English, up to 30 characters), e.g. `python`, `회계`, `영업`. Leave it empty to browse by filters only.
2. **Filter (optional)**:
   - `locationCodes` — `I000` 서울, `B000` 경기, `K000` 인천, `H000` 부산, `F000` 대구, `G000` 대전, `L000` 광주·전남, `J000` 울산, `1000` 세종, `A000` 강원, `P000` 충북, `O000` 충남, `M000` 전북, `D000` 경북, `C000` 경남, `N000` 제주, `Q000` 전국. District codes also work (e.g. `I010` 강남구) — copy them from the `local=` value of a JobKorea search URL.
   - `jobCategoryCodes` — job group (expanded automatically): `10031` AI·개발·데이터, `10026` 기획·전략, `10030` 마케팅·광고·MD, `10035` 영업, `10029` 회계·세무, `10028` 인사·HR, `10032` 디자인, `10041` 제조·생산, `10044` 의료·바이오 … or a single role such as `1000229` 백엔드개발자, `1000230` 프론트엔드개발자, `1000236` 데이터엔지니어 (the `duty=` value in a search URL).
   - `careerTypes` (신입 / 경력 / 경력무관), `educationCodes`, `employmentTypes` (정규직, 계약직, 인턴, 프리랜서 …).
   - `sort` — relevance, newest, recently updated, deadline, most viewed, most applicants.
3. Set `maxItems` and run. Results appear in the dataset; export as JSON, CSV, Excel, or use the API.

Turn off `includeDetails` for a much faster, cheaper list (one request per 50–100 jobs).

#### Example input

```json
{
  "keyword": "",
  "locationCodes": ["I000"],
  "jobCategoryCodes": ["10031"],
  "careerTypes": ["2"],
  "sort": "RegDtDesc",
  "maxItems": 300,
  "includeDetails": false
}
```

### Pricing

**$3 per 1,000 jobs** ($0.003 per job saved to the dataset), plus a tiny $0.00005 start fee per run. Platform usage (compute, proxy, storage) is included, so there are no surprise costs, and failed requests or empty searches cost only the start fee. Examples: 100 jobs cost $0.30, 10,000 jobs cost $30. The Apify free plan's $5 monthly credit covers about 1,600 jobs.

### Tips

- Run it daily with `sort: "RegDtDesc"` and compare `id`s to get only **new** postings.
- `salaryMin`/`salaryMax` are in KRW (원); JobKorea shows 연봉/월급 in 만원 — we convert for you. `salary` is "회사내규에 따름" or similar when no amount is published.
- JobKorea limits a single search to ~500 pages; split very large searches by region or job category.
- Use the Apify API or integrations (Google Sheets, Slack, Make, Zapier, n8n) to send new jobs anywhere.

### Notes

This actor reads publicly available job postings only. It does not log in, and it does not collect personal data: HR-manager names, phone numbers and e-mails are skipped, and mobile numbers and e-mail addresses inside descriptions are masked. Please use the data in line with applicable laws (including the Korean Personal Information Protection Act) and JobKorea's terms.

Questions or a field you need? Open an issue on the actor page — fixes usually ship within a day.

# Actor input Schema

## `keyword` (type: `string`):

Search jobs by keyword (Korean or English, max 30 characters), e.g. 'python', '데이터 분석', '마케팅'. Leave empty to list all jobs matching the filters.

## `locationCodes` (type: `array`):

JobKorea region codes (the 'local' value in a jobkorea.co.kr search URL): I000 서울, B000 경기, K000 인천, G000 대전, 1000 세종, O000 충남, P000 충북, L000 광주·전남, M000 전북, F000 대구, D000 경북, H000 부산, J000 울산, C000 경남, A000 강원, N000 제주, Q000 전국. District codes also work, e.g. I010 서울 강남구. Leave empty for all.

## `jobCategoryCodes` (type: `array`):

JobKorea job category codes (the 'duty' value in a search URL). Top-level groups are expanded automatically: 10026 기획·전략, 10027 법무·사무·총무, 10028 인사·HR, 10029 회계·세무, 10030 마케팅·광고·MD, 10031 AI·개발·데이터, 10032 디자인, 10033 물류·무역, 10034 운전·운송·배송, 10035 영업, 10036 고객상담·TM, 10037 금융·보험, 10038 식·음료, 10039 고객서비스·리테일, 10040 엔지니어링·설계, 10041 제조·생산, 10042 교육, 10043 건축·시설, 10044 의료·바이오, 10045 미디어·문화·스포츠, 10046 공공·복지. Specific roles also work, e.g. 1000229 백엔드개발자, 1000230 프론트엔드개발자, 1000236 데이터엔지니어.

## `careerTypes` (type: `array`):

Filter by career level. Leave empty for all.

## `educationCodes` (type: `array`):

Filter by required education. Leave empty for all.

## `employmentTypes` (type: `array`):

Filter by employment type. Leave empty for all.

## `sort` (type: `string`):

Sort order of the search results.

## `pageSize` (type: `integer`):

Jobs fetched per search request (10-100).

## `startPage` (type: `integer`):

Search result page to start from.

## `includeDetails` (type: `boolean`):

Open each job to get the full description (상세요강), work address, skills, keywords, working hours, openings and company info. Turn off for a faster, lighter list.

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

Maximum number of jobs to return. JobKorea shows at most ~500 result pages per search; split big searches with filters.

## `proxyConfiguration` (type: `object`):

Proxy settings. JobKorea works best WITHOUT a proxy (the default); only change this if you know you need one (e.g. a Korean residential proxy if you get blocked).

## Actor input object example

```json
{
  "keyword": "python",
  "locationCodes": [],
  "jobCategoryCodes": [],
  "careerTypes": [],
  "educationCodes": [],
  "employmentTypes": [],
  "sort": "RelevanceDesc",
  "pageSize": 50,
  "startPage": 1,
  "includeDetails": true,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped job postings (dataset items).

# 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 = {
    "keyword": "python"
};

// Run the Actor and wait for it to finish
const run = await client.actor("asiajobs/jobkorea-jobs-scraper").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 = { "keyword": "python" }

# Run the Actor and wait for it to finish
run = client.actor("asiajobs/jobkorea-jobs-scraper").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 '{
  "keyword": "python"
}' |
apify call asiajobs/jobkorea-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,asiajobs/jobkorea-jobs-scraper"
        }
    }
}
```

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/te3LUVg9Rh90MayNy/builds/1nu0I2GHldMxkFyH3/openapi.json
