# Wanted.co.kr Korea & Japan Jobs Scraper (`unfenced-group/wanted-kr-scraper`) Actor

Scrape Korea's top tech job platform Wanted.co.kr: listings in Korea and Japan with skills, salary tiers, full job descriptions.

- **URL**: https://apify.com/unfenced-group/wanted-kr-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** Jobs
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Wanted.co.kr Korea & Japan Jobs Scraper

![Wanted.co.kr Korea & Japan Jobs Scraper](https://api.apify.com/v2/key-value-stores/lJlifu6C8YQfZMPKE/records/wanted-kr-scraper)

Extract job listings from wanted.co.kr at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.

***

### Why this scraper?

#### 🎯 Built for South Korea

A dedicated Korean tech scraper, not a global tool with a country dropdown. Search, locations and currency (KRW) are tuned for wanted.co.kr.

#### 📄 Clean job records

Job title, direct listing URL and publish date for every record, in a consistent structure.

#### 🏢 Company details

Hiring company name plus the profile details the source publishes, such as logo and company page.

#### 📍 Precise location

City, region and country plus latitude/longitude for mapping and radius analysis.

***

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `countries` | array | `["kr", "jp"]` | Countries to scrape. Supported: kr (Korea), jp (Japan). |
| `jobGroupIds` | array | (empty) | Filter by job group. E.g. 518 = Backend Dev, 660 = Frontend Dev. Leave empty for all. |
| `years` | integer | `-1` | Minimum years experience filter. -1 = any, 0 = entry level. |
| `fetchDetails` | boolean | `true` | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
| `maxResults` | integer | `200` | Max total jobs. 0 = unlimited. |

***

### Output schema

Every field below is present on every record. Fields the source does not publish for a given job are returned as `null` rather than omitted.

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique listing ID from the source. |
| `url` | string | Direct link to the listing. |
| `title` | string | Job title as published. |
| `companyId` | string | Company id. |
| `companyName` | string | Hiring company name. |
| `industry` | string | Industry as published. |
| `country` | string | Country of the position. |
| `location` | string | Location as displayed on the listing. |
| `fullLocation` | string | Full location. |
| `latitude` | number | Latitude of the workplace. |
| `longitude` | number | Longitude of the workplace. |
| `annualFrom` | number | Annual from. |
| `annualTo` | number | Annual to. |
| `salaryCurrency` | string | Currency code of the salary. |
| `dueDate` | string | Due date. |
| `coverImage` | string | Cover image. |
| `companyLogo` | string | URL of the company logo. |
| `referralBonus` | string | Referral bonus. |
| `status` | string | Status. |
| `source` | string | Source. |
| `scrapedAt` | string | Timestamp when this record was scraped. |
| `intro` | string | Intro. |
| `mainTasks` | string | Main tasks. |
| `requirements` | string | Requirements. |
| `preferredPoints` | string | Preferred points. |
| `benefits` | string | Benefits listed on the posting. |
| `skills` | array | Skills listed on the posting. |
| `categories` | array | Categories. |
| `companyImages` | array | Company images. |
| `isCrossBorder` | boolean | Is cross border. |

#### Example record

```json
{
  "id": "371065",
  "url": "https://www.wanted.co.kr/wd/371065",
  "title": "Brand Marketer (대리~과장급)",
  "companyId": "27173",
  "companyName": "인터엑스",
  "industry": "IT, 컨텐츠",
  "country": "kr",
  "location": "서울",
  "fullLocation": "서울 금천구 가산디지털1로 171 가산SKV1 센터 1001호",
  "latitude": 37.4806318,
  "longitude": 126.8805702,
  "annualFrom": 50000000,
  "annualTo": null,
  "salaryCurrency": "KRW",
  "dueDate": null,
  "coverImage": "https://static.wanted.co.kr/images/company/27173/axqs3lgtd3mniivm__1080_790.png",
  "companyLogo": "https://static.wanted.co.kr/images/wdes/0_4.42dd788e.png",
  "referralBonus": "100만원",
  "status": "active",
  "source": "wanted.co.kr",
  "scrapedAt": "2026-06-26T02:29:03.596Z",
  "intro": "[대한민국 제조 강국을 넘어, Global No.1 Industrial AI & Autonomous Manufacturing 시대를 여는 인터엑스]\n인터엑스는 디지털 트랜스포메이션(DX)과 제조 AI 기술을 기반으로 '자율 제조' 및 '데이터 서비스' 혁신을 주도하는 기술 선도 기업입니다. \n생성형 AI(Gen AI)와 같은 최첨단 기술을 통해 대한민국 제 …",
  "mainTasks": "1. 전략적 브랜드 PR 플래닝 및 내러티브 설계\n• 2026년 인터엑스의 비전과 스토리를 관통하는 전사 차원의 커뮤니케이션 로드맵 수립\n• 연간/월간 단위의 미디어 릴리즈 계획을 수립하고, 시장에 임팩트를 줄 최적의 시점과 메시지 설계\n• 투자자, 고객사, 미디어 등 이해관계자별 맞춤형 내러티브(Narrative) 구조화 및 일관성 관리\n\n2. 멀티 채널 …",
  "requirements": "• 경력: 전략 커뮤니케이션 또는 미디어 PR 관련 전문 경력 5년 이상인 분  \n• 전략적 기획력: 연간/월간 단위의 임팩트 지점을 설정하고, 이를 달성하기 위한 체계적인 미디어 플랜을 설계해 본 경험  \n• 탁월한 라이팅 역량: 기사체, 보도자료, 기고문 등 한국어 기반의 논리적 글쓰기와 콘텐츠 구조화 능력이 뛰어난 분  \n• 미디어 네트워크: 기자 및 …",
  "preferredPoints": "• 스타트업 또는 테크 기업에서 기술 PR(Tech PR)을 중점적으로 수행하며 IPO 과정을 경험해 보신 분  \n• 제조AX, 자율제조 등 산업 AI 관련 프로젝트나 커뮤니케이션을 수행한 경험이 있는 분  \n• 웹툰, 전문지, 뉴스레터 등 미디어 매체에서 아티클을 써본 경험이 있는 분  \n• 데이터 분석 도구 및 AI 툴을 활용하여 PR 성과를 계량화하거 …",
  "benefits": "[복지 패키지]\n• 인터엑스에만 있는 지원\n   - 직무역량 및 자기계발 교육과정 IX Academy - 직무별 커리어 성장 지원\n   - 역량 진단 제도 ‘IX Expert - 성과별 보상\n\n• Compensation Package\n   - 3년 근속 시, 5일 휴가 or 100만원 보너스\n   - 중소기업 청년 소득세 감면 지원\n\n• Work Envir …",
  "skills": [
    "소셜 미디어",
    "마케팅 전략",
    "Youtube",
    "마케팅 운영"
  ],
  "categories": [
    "마케팅·광고",
    "브랜드 마케터",
    "PR 전문가",
    "광고 기획자(AE)"
  ],
  "companyImages": [
    "https://static.wanted.co.kr/images/company/27173/axqs3lgtd3mniivm__1080_790.png",
    "https://static.wanted.co.kr/images/company/27173/370529xmqozybxkc__1080_790.jpg",
    "https://static.wanted.co.kr/images/company/27173/epfohdznbhncnrdh__1080_790.jpg",
    "https://static.wanted.co.kr/images/company/27173/lr5fnwxm1evpxhgh__1080_790.jpg"
  ],
  "isCrossBorder": false
}
```

***

### Examples

**Search for 백엔드 개발자 roles in 서울:**

```json
{
  "maxResults": 100
}
```

**Broad nationwide crawl:**

```json
{
  "maxResults": 1000
}
```

**Larger run with a hard cap:**

```json
{
  "maxResults": 500
}
```

**Daily feed (run on a schedule):**

```json
{
  "maxResults": 500
}
```

Schedule this input in the Apify Scheduler (for example daily at 07:00) to keep an always-fresh feed of the newest listings.

***

### 💰 Pricing

**$1.5 per 1,000 results** — you only pay for successfully retrieved listings. Failed retries are never charged.

| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.5 |
| 10,000 | ~$15 |
| 100,000 | ~$150 |

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.9 per 1,000 at the highest tier. Use the **Max results** cap in the input to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |

***

### Known limitations

- Salary is only returned when the employer publishes it — many listings carry `null` salary fields.
- Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.

***

### Technical details

- **Source:** wanted.co.kr — South Korea job listings
- **Coverage:** everything the public search exposes, filterable via the input parameters above
- **Retry:** automatic retry on network errors with exponential backoff

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `countries` (type: `array`):

Countries to scrape. Supported: kr (Korea), jp (Japan).

## `jobGroupIds` (type: `array`):

Filter by job group. E.g. 518 = Backend Dev, 660 = Frontend Dev. Leave empty for all.

## `years` (type: `integer`):

Minimum years experience filter. -1 = any, 0 = entry level.

## `fetchDetails` (type: `boolean`):

ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost).

## `maxResults` (type: `integer`):

Max total jobs. 0 = unlimited.

## Actor input object example

```json
{
  "countries": [
    "kr",
    "jp"
  ],
  "jobGroupIds": [],
  "years": -1,
  "fetchDetails": true,
  "maxResults": 50
}
```

# Actor output Schema

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

No description

# 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 = {
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/wanted-kr-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 = { "maxResults": 50 }

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/wanted-kr-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxResults": 50
}' |
apify call unfenced-group/wanted-kr-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unfenced-group/wanted-kr-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/wan22ZLT1TJfr7A90/builds/wXZF80ZdWb94Rzsb0/openapi.json
