# Albamon Part-Time Jobs Scraper (Korea) (`signaldatatools/albamon-parttime-jobs-scraper`) Actor

Scrape part-time and gig job ads from Albamon, Korea's part-time job board: titles, hiring businesses, hourly/daily/monthly pay in KRW, work region, shift times, working days and closing dates.

- **URL**: https://apify.com/signaldatatools/albamon-parttime-jobs-scraper.md
- **Developed by:** [Signal Data Tools](https://apify.com/signaldatatools) (community)
- **Categories:** Jobs, Lead generation, Business
- **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

## Albamon Part-Time Jobs Scraper (Korea)

Pull structured part-time, hourly and gig job data from **Albamon** (albamon.com), Korea's
leading part-time job board. Pick one or more regions and it returns the ranked ad list
with the hourly or monthly rate in KRW, the district, the shift pattern, the contract
length and the closing date — the fields that make Korean hourly-wage data comparable.

Hourly-wage data at this granularity is otherwise very hard to obtain. Korea publishes a
national minimum wage but not what employers actually offer, district by district, week by
week. Albamon's listing carries exactly that, and the site reports a corpus of
**266,087 postings nationwide** (73,416 for Seoul alone) as of the verification run.

Verified on a live run: **60 ads in 4 seconds**, and a deeper run of **1,321 unique ads
across 2 regions x 3 pages in 7.4 seconds using only 3 HTTP requests**. No blocking
encountered.

### What you get

One dataset row per job ad:

| Field | Type | Description |
|---|---|---|
| `recruitNo` | integer | Albamon posting number |
| `title` | string | Ad headline exactly as posted |
| `url` | string | Canonical ad URL |
| `companyName` | string | Business / store name |
| `payType` | string | Pay basis (`시급` hourly, `일급` daily, `월급` monthly…) |
| `payAmountKrw` | integer | Pay figure parsed to a number, Korean won |
| `payText` | string | Pay exactly as displayed |
| `workRegion` | string | Work district (city + gu/gun) |
| `workPeriod` | string | Contract length (e.g. `3개월~6개월`) |
| `workDays` | string | Working days (e.g. `월~금`) |
| `workTime` | string | Shift hours (e.g. `06:00~14:00`) |
| `registeredDate` | string | How recently the ad was posted |
| `closingDate` | string | Closing date, or `상시모집` for always-open |
| `rank` | integer | Position within the result list |
| `scrapedAt` | string | ISO-8601 UTC timestamp |

An optional `phone` field carries the hiring manager's mobile number. It is **dropped by
default** — see Responsible use.

### Input

```json
{
  "regionCodes": ["I000", "B000"],
  "maxItems": 1500,
  "maxPages": 3,
  "pageSize": 200,
  "requestDelaySeconds": 2,
  "respectRobotsTxt": true,
  "includeContactInfo": false,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyCountry": "KR" }
}
```

| Option | Default | Notes |
|---|---|---|
| `regionCodes` | `[]` (whole country) | 16 region codes; multi-region verified. Unrecognised codes are ignored |
| `maxItems` | 100 | Hard stop across the whole run (max 5000) |
| `maxPages` | 3 | Listing pages to walk (max 100) |
| `pageSize` | 50 | `200` is the highest verified value |
| `requestDelaySeconds` | 2 | Politeness pause; listing pages are large, keep it at 2s or more |
| `respectRobotsTxt` | `true` | Re-checks robots.txt at runtime, skips disallowed URLs |
| `includeContactInfo` | `false` | Off by default; manager mobile numbers stay out of your dataset |
| `proxyConfiguration` | Apify Proxy, KR | A Korean IP gives the most consistent results |

**Region codes:** `I000` Seoul, `B000` Gyeonggi, `K000` Incheon, `G000` Daejeon,
`1000` Sejong, `O000` Chungnam, `P000` Chungbuk, `L000` Gwangju/Jeonnam, `M000` Jeonbuk,
`F000` Daegu, `D000` Gyeongbuk, `H000` Busan, `J000` Ulsan, `C000` Gyeongnam,
`A000` Gangwon, `N000` Jeju.

**Tip:** page 1 also carries the site's paid placements, so it returns far more rows than
later pages. If you want the clean organic list, read pages 2 and up.

### Sample output

```json
{
  "recruitNo": 118897395,
  "title": "[지미존스] 강남역점 평일 오픈 파트타이머 모집-!",
  "url": "https://www.albamon.com/jobs/detail/118897395",
  "companyName": "지미존스 강남역점",
  "payType": "시급",
  "payAmountKrw": 12600,
  "payText": "12,600원",
  "workRegion": "서울 동작구",
  "workPeriod": "3개월~6개월",
  "workDays": "월~금",
  "workTime": "06:00~14:00",
  "registeredDate": "10분전",
  "closingDate": "상시모집",
  "rank": 1,
  "scrapedAt": "2026-09-13T09:01:05Z"
}
```

### Typical uses

- **Hourly wage benchmarking** — track offered rates against the statutory minimum wage, by district
- **Labour demand mapping** — see where retail and F\&B shifts are being advertised, and in what volume
- **Gig-economy research** — quantify contract lengths, shift patterns and always-open postings
- **Staffing-agency lead lists** — find businesses actively hiring in a target district

### Responsible use

- **Personal data is off by default, and that is the headline feature here.** Part-time
  ads routinely carry the hiring manager's personal mobile number. With
  `includeContactInfo: false` (the default) the `phone` field is dropped entirely and any
  phone or e-mail pattern inside a text field is replaced with `[removed]`. This was
  verified: a default run emitted **zero `phone` fields and zero raw phone strings**,
  while the same run with `includeContactInfo: true` carried a number on 492 of 1,321
  records. Turn it on only if you have a lawful basis for processing those numbers.
- Reads **the public regional listing only**. The Actor requests exactly one path,
  `/jobs/area`, which `robots.txt` permits. It never fetches the disallowed
  `/jobs/detail/content`, `/jobs/detail/manager`, `/jobs/detail/print`,
  `/jobs/detail/photos`, `/jobs/apply/` or `/personal` paths. Ad permalinks are emitted
  as strings only and are never opened.
- `respectRobotsTxt` is on by default and enforced before every single request.
- Requests are paced (default 2s) with retries on transient failures.
- Ad text, business names and pay figures belong to their respective owners. You are
  responsible for how you use the output, including compliance with employment and data
  protection law in your jurisdiction.

### Pricing

Pay per result. You are charged only for rows actually delivered to your dataset.

***

### 한국어 요약

**알바몬 아르바이트 공고 크롤러.** 지역을 고르면 알바몬 채용 목록을 그대로 표로 뽑아
줍니다. 공고 제목·업체명·시급/월급 금액(원)·근무지역·근무기간·근무요일·근무시간·
등록일·마감일이 한 줄씩 나옵니다. 한 페이지 50개가 기본이고 최대 200개까지 됩니다.

- **지역 선택**: 서울·경기 등 16개 코드, 여러 지역 동시 지정 실측 확인
- **속도**: 60건 4초, 2개 지역 3페이지 1,321건을 요청 3번·7.4초에 실측(차단 없음)
- **개인정보 보호가 핵심**: 알바 공고에는 담당자 휴대폰 번호가 붙어 있습니다.
  기본 설정에서는 `phone` 항목을 통째로 빼고 본문 속 번호도 `[removed]` 로 지웁니다.
  실측에서 기본 실행 결과에 전화번호 0건, `includeContactInfo: true` 로 켰을 때만
  1,321건 중 492건에 번호가 담겼습니다
- **참고**: 1페이지에는 유료 광고 공고가 섞여 있으니, 순수 목록만 원하면 2페이지부터 보세요
- robots.txt가 허용한 `/jobs/area` 한 경로만 요청하고, 막아둔 상세·지원·개인 경로는
  아예 건드리지 않습니다

**요금**: 결과 1건당 과금(pay-per-result). 실제로 받은 줄 수만큼만 냅니다.

# Actor input Schema

## `regionCodes` (type: `array`):

Albamon region codes to filter by. Leave empty for the whole country. Codes: I000 Seoul, B000 Gyeonggi, K000 Incheon, G000 Daejeon, 1000 Sejong, O000 Chungnam, P000 Chungbuk, L000 Gwangju/Jeonnam, M000 Jeonbuk, F000 Daegu, D000 Gyeongbuk, H000 Busan, J000 Ulsan, C000 Gyeongnam, A000 Gangwon, N000 Jeju. Unrecognised codes are ignored.

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

Stop after this many job ads in total.

## `maxPages` (type: `integer`):

Listing pages to walk. Page 1 also carries the promoted ads, so it returns far more rows than later pages.

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

How many regular postings to request per page. 200 is the highest value that was verified to work.

## `requestDelaySeconds` (type: `integer`):

Politeness pause between HTTP requests. Listing pages are large, so keep this at 2s or more.

## `respectRobotsTxt` (type: `boolean`):

Check the target's robots.txt before every request and skip disallowed URLs. The actor only ever requests the allowed /jobs/area listing path either way.

## `includeContactInfo` (type: `boolean`):

Off by default. Part-time ads often carry the hiring manager's mobile number; when off, phone numbers and e-mail addresses are stripped from the output.

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

Apify Proxy settings. A Korean residential or datacenter IP is recommended.

## Actor input object example

```json
{
  "regionCodes": [
    "I000"
  ],
  "maxItems": 100,
  "maxPages": 3,
  "pageSize": 50,
  "requestDelaySeconds": 2,
  "respectRobotsTxt": true,
  "includeContactInfo": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "KR"
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

Part-time jobs scraped in this run, as a dataset (JSON/CSV/Excel via the Apify API).

## `datasetView` (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 = {
    "regionCodes": [
        "I000"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("signaldatatools/albamon-parttime-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 = { "regionCodes": ["I000"] }

# Run the Actor and wait for it to finish
run = client.actor("signaldatatools/albamon-parttime-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 '{
  "regionCodes": [
    "I000"
  ]
}' |
apify call signaldatatools/albamon-parttime-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,signaldatatools/albamon-parttime-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/hLvEG5Zxp11TqcP1K/builds/mcFL9tiracW7eCg67/openapi.json
