# Korean Jobs Scraper (Saramin, JobKorea, Wanted) (`ai94_jin/apify-actors`) Actor

Scrape job postings from Korea's three major job boards - Saramin, JobKorea, and Wanted - in one run. Search by keyword and get titles, companies, regions, deadlines, and links. Their official APIs are approval-gated or limited.

- **URL**: https://apify.com/ai94\_jin/apify-actors.md
- **Developed by:** [Lee Jinseok](https://apify.com/ai94_jin) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Korean Jobs Scraper — Saramin, JobKorea, Wanted

Scrape job postings from **Korea's three major job boards** in one run:

- **Saramin (사람인)** — Korea's largest job board
- **JobKorea (잡코리아)** — the long-standing #2 board
- **Wanted (원티드)** — the leading tech/startup job platform

Search by any keyword (Korean or English) and get structured job data ready for analysis, alerts, or lead generation.

### Why this Actor?

Korean job boards' official APIs are approval-gated, limited, or nonexistent, and few working scrapers exist. This Actor covers all three major boards with a single input, maintained by a developer based in Korea who uses these sites daily.

Use cases:

- **Recruiting & sourcing** — monitor postings for specific roles or companies
- **Market research** — track hiring trends, salaries, and demand by keyword
- **Job search automation** — collect fresh postings for a given role every day
- **Lead generation** — companies that are hiring are companies that are buying

### Input

```json
{
  "keyword": "마케팅",
  "sources": ["saramin", "jobkorea", "wanted"],
  "max_items_per_source": 20
}
```

| Field | Type | Description |
|---|---|---|
| `keyword` | string | Search keyword — Korean or English (required) |
| `sources` | array | Any of `saramin`, `jobkorea`, `wanted` (default: all three) |
| `max_items_per_source` | integer | 1–100 postings per board (default 20) |

### Output

One dataset item per job posting, with structured fields:

Real row from an actual run (public posting):

```json
{
  "source": "saramin",
  "title": "㈜새한마이크로텍 재무회계담당자 채용",
  "company": "㈜새한마이크로텍",
  "region": "경기남양주시",
  "experience": "경력무관",
  "education": "초대졸↑",
  "employment_type": "정규직",
  "salary": null,
  "conditions": ["경기남양주시", "경력무관", "초대졸↑", "정규직"],
  "deadline": "~ 10/26(월)",
  "url": "https://www.saramin.co.kr/zf_user/jobs/relay/view?rec_idx=54865562",
  "job_id": "54865562",
  "scraped_at": "2026-08-28T17:45:09+00:00"
}
```

(`salary` is null for most postings — boards only expose it when the employer chooses to publish it.)

Field coverage per board (honest — a field is `null` when the board does not expose it on list pages):

| Field | Saramin | JobKorea | Wanted |
|---|---|---|---|
| title, company, url, job\_id | ✅ | ✅ | ✅ |
| deadline | ✅ | ✅ (ISO date) | ✅ when set (null = rolling) |
| region | ✅ | — | ✅ |
| experience / education / employment\_type | ✅ | experience only ("신입 가능" flag) | — |
| salary | when posted | — | — |

### Notes & fair use

- Scrapes only publicly accessible listing pages / endpoints — no login, no personal data.
- Respect the target sites: keep result counts reasonable and schedule runs at sensible intervals.
- Postings are returned in each board's default relevance/latest order.

### Roadmap

- Detail-page enrichment (salary, full description)
- Region and experience-level filters
- Albamon (알바몬) part-time board support

Found an issue or need a Korean site scraped? Open an issue on this Actor — responses usually within a day.

**More Korean data Actors by the same developer:** [Danawa Price Scraper (Korean Price Comparison)](https://apify.com/ai94_jin/apify-actors-1)

***

*Keywords: Korean job board scraper, Korea jobs API, 사람인 크롤링, 잡코리아 크롤링, 원티드 채용공고 수집, Saramin scraper, JobKorea scraper, Wanted Korea jobs, Korean recruitment data, 채용공고 스크래핑, South Korea hiring data, Korean job postings dataset*

# Actor input Schema

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

Keyword to search for (Korean or English), e.g. 마케팅, developer, 회계

## `sources` (type: `array`):

Which Korean job boards to scrape

## `max_items_per_source` (type: `integer`):

Maximum job postings per job board (1-100)

## Actor input object example

```json
{
  "keyword": "마케팅",
  "sources": [
    "saramin",
    "jobkorea",
    "wanted"
  ],
  "max_items_per_source": 20
}
```

# Actor output Schema

## `jobPostings` (type: `string`):

Dataset with job postings from Saramin, JobKorea and Wanted

# 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": "마케팅",
    "sources": [
        "saramin",
        "jobkorea",
        "wanted"
    ],
    "max_items_per_source": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("ai94_jin/apify-actors").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": "마케팅",
    "sources": [
        "saramin",
        "jobkorea",
        "wanted",
    ],
    "max_items_per_source": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("ai94_jin/apify-actors").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": "마케팅",
  "sources": [
    "saramin",
    "jobkorea",
    "wanted"
  ],
  "max_items_per_source": 20
}' |
apify call ai94_jin/apify-actors --silent --output-dataset

```

## MCP server setup

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

```

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/gTN2tKjMnFyZ5BHvz/builds/iFLIgXn3w7go18kcJ/openapi.json
