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

Extract job postings from Saramin (사람인), Korea's largest job board. Search by keyword, region, job category, career level, education and employment type, and get title, company, location, salary, deadline, sectors and the full job description as clean JSON.

- **URL**: https://apify.com/asiajobs/saramin-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

## Saramin Jobs Scraper (사람인 채용공고) — Korea

Extract job postings from **[Saramin](https://www.saramin.co.kr)** (사람인), South Korea's largest job board with tens of thousands of open positions (채용정보) across IT, marketing, sales, manufacturing, finance and more. Search by keyword, region, job category, career level (신입/경력), education and employment type, and get clean, structured JSON including the full job description (상세요강), which Saramin only shows inside the job page.

### What you get

For every job posting (채용공고):

| Field | Example |
|---|---|
| `id`, `url` | 55262258 (Saramin `rec_idx`), job page link |
| `title` | 데이터분석/Python/AI LLM 인재 채용 |
| `companyName`, `companyUrl` | (주)그루넷 |
| `location`, `workAddress` | 서울 강남구, (06132) 서울 강남구 논현로 507 … |
| `career`, `education` | 신입·경력 1년 ↑, 대졸(4년제) 이상 |
| `employmentType` | 정규직 수습기간 3개월 |
| `salary` | 면접 후 결정, 3,000~4,000만원, 320 만원 |
| `workingHours`, `position` | 주 5일(월~금) 09:00~18:00 |
| `deadline`, `deadlineText` | 2026-11-11, "~ 11/11(수)" / 상시채용 / 채용시 |
| `applicationStart`, `applicationEnd` | 2026.10.12 16:00, 2026.11.11 23:59 |
| `postedDate`, `updatedDate` | 2026-10-12 (등록일), 2026-10-20 (수정일) |
| `jobSectors`, `tags`, `badges` | Python, 데이터분석가, 빅데이터 … |
| `description`, `descriptionImages` | full 상세요강 text (주요업무, 자격요건, 우대사항, 복지) + image URLs for image-only postings |
| `companyType`, `industry`, `employees`, `founded`, `homepage`, `companyAddress` | 중소기업, 응용 소프트웨어 개발 및 공급업, 28 명 … |
| `extraInfo`, `scrapedAt` | any other summary fields (e.g. 근무일수) |

Fields from the job page (description, exact dates, address, company info) are filled when `includeDetails` is on.

### Use cases

- **Recruiters & HR tech**: monitor who is hiring in Korea, for which roles, seniority and salary.
- **Labor-market research**: demand for skills (Python, React, AI/ML, 영업, 회계…) by region and industry.
- **Sales lead generation**: companies posting jobs are growing — get company name, industry, size and homepage.
- **Job aggregators & AI job agents**: feed fresh Korean job listings into your own product or chatbot.

### How to use

1. **Search** — set `keyword` (Korean or English), e.g. `python`, `데이터 분석`, `마케팅`, or leave it empty to browse by filters only.
2. **Filter (optional)**:
   - `locationCodes` — region (loc_mcd): `101000` 서울, `102000` 경기, `108000` 인천, `106000` 부산, `104000` 대구, `105000` 대전, `112000` 광주·전남, `107000` 울산, `118000` 세종, `109000` 강원, `114000` 충북, `115000` 충남, `113000` 전북, `111000` 경북, `110000` 경남, `116000` 제주, `117000` 전국.
   - `jobCategoryCodes` — job category (cat_mcls): `2` IT개발·데이터, `16` 기획·전략, `14` 마케팅·홍보·조사, `3` 회계·세무·재무, `5` 인사·노무·HRD, `4` 총무·법무·사무, `15` 디자인, `8` 영업·판매·무역, `21` 고객상담·TM, `18` 구매·자재·물류, `12` 상품기획·MD, `7` 운전·운송·배송, `10` 서비스, `11` 생산, `22` 건설·건축, `6` 의료, `9` 연구·R\&D, `19` 교육, `13` 미디어·문화·스포츠, `17` 금융·보험, `20` 공공·복지. For a narrower role use `jobKeywordCodes` (cat_kewd), e.g. `87` 웹개발.
   - `career` (신입 / 경력 / 경력무관), `education` (minimum level), `employmentTypes` (`1` 정규직, `2` 계약직, `4` 인턴직, `5` 아르바이트, `9` 프리랜서 …).
   - `sort` — relevance, newest, recently updated, deadline or 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 faster, cheaper list (one request per 100 jobs instead of two per job).

#### Example input

```json
{
  "keyword": "데이터 엔지니어",
  "locationCodes": ["101000", "102000"],
  "career": "2",
  "sort": "reg_dt",
  "maxItems": 200,
  "includeDetails": true
}
```

### 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 on a schedule (daily) with `sort: "reg_dt"` and compare `id`s to get only **new** postings.
- `deadline: null` with `deadlineText` "상시채용" or "채용시" means the posting is open until filled.
- Some companies publish the description as an image only — in that case `description` is empty and the images are in `descriptionImages`.
- 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: the recruiter's name and contact fields and the CEO name are skipped, and mobile phone 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 Saramin'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), e.g. 'python', '데이터 분석', '마케팅', a company name. Leave empty to list all jobs matching the filters.

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

Saramin region codes: 101000 서울, 102000 경기, 108000 인천, 106000 부산, 104000 대구, 105000 대전, 112000 광주·전남, 107000 울산, 118000 세종, 109000 강원, 114000 충북, 115000 충남, 113000 전북, 111000 경북, 110000 경남, 116000 제주, 117000 전국. Leave empty for all of Korea.

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

Saramin job category codes, e.g. 2 IT개발·데이터, 16 기획·전략, 14 마케팅·홍보·조사, 3 회계·세무·재무, 5 인사·노무·HRD, 4 총무·법무·사무, 15 디자인, 8 영업·판매·무역, 21 고객상담·TM, 18 구매·자재·물류, 12 상품기획·MD, 7 운전·운송·배송, 10 서비스, 11 생산, 22 건설·건축, 6 의료, 9 연구·R\&D, 19 교육, 13 미디어·문화·스포츠, 17 금융·보험, 20 공공·복지.

## `jobKeywordCodes` (type: `array`):

Optional detailed job keyword codes (the number in a saramin.co.kr '...job-category?cat_kewd=<ID>' link), e.g. 87 웹개발, 84 백엔드/서버개발.

## `career` (type: `string`):

Filter by required career level.

## `education` (type: `string`):

Jobs that accept at least this education level.

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

Codes: 1 정규직 (permanent), 2 계약직 (contract), 4 인턴직 (intern), 5 아르바이트 (part-time), 6 파견직, 9 프리랜서 (freelance), 3 병역특례, 8 위촉직, 14 파트, 12 교육생, 7 해외취업.

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

Sort order of the search results.

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

How many jobs Saramin returns per search page (recruitPageCount): 40, 60, 80 or 100. Higher = fewer requests.

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

Search result page to start from.

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

Open each job to get the full description (상세요강), exact application period, salary, work address, tags and company info. Turn off for a faster, lighter list.

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

Maximum number of jobs to return.

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

Proxy settings. Saramin 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": [],
  "jobKeywordCodes": [],
  "career": "",
  "education": "",
  "employmentTypes": [],
  "sort": "relation",
  "pageSize": 100,
  "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/saramin-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/saramin-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/saramin-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,asiajobs/saramin-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/NiVuVw33MEJHIPfDw/builds/FhPegcUtY1Zr5GGdG/openapi.json
