# en-japan Jobs Scraper (Japan) - エン転職 employment.en-japan.com (`asiajobs/enjapan-jobs-scraper`) Actor

Extract job postings from en-japan (エン転職), one of Japan's largest mid-career job boards. Search by keyword, prefecture, occupation and minimum salary, and get title, company, location, salary (with parsed JPY min/max), employment type, requirements and the full job description as clean JSON.

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

## en-japan Jobs Scraper (エン転職 求人) — Japan

Extract job postings from **[en-japan / エン転職](https://employment.en-japan.com)**, one of Japan's largest job boards for mid-career job changes (転職) and full-time positions (正社員求人). Search by keyword, prefecture (都道府県), occupation (職種) and minimum annual salary (年収), and get clean, structured JSON with parsed salary in JPY, requirements (応募資格), the full job description (仕事内容), working hours, holidays, benefits and company info.

### What you get

For every job posting (求人):

| Field | Example |
|---|---|
| `id`, `url` | 1412858, job page link |
| `title`, `jobTitle` | データサイエンティスト（未経験歓迎）◆リモートワーク…, データサイエンティスト |
| `companyName` | データアナリティクスラボ株式会社 |
| `location`, `prefectures`, `cities` | 東京本社・名古屋支社・大阪支社, \[東京都, 愛知県, 大阪府], \[東京都中央区, …] |
| `salary` | 月給23万円～40万円＋各種手当＋賞与年2回 |
| `salaryType`, `salaryMin`, `salaryMax`, `salaryCurrency` | monthly, 230000, 400000, JPY (annual / monthly / daily / hourly) |
| `employmentType`, `employmentTypeDetail` | 正社員, 試用期間… |
| `catchCopy`, `jobSummary` | short pitch and summary from the search list |
| `requirements` | 応募資格 (full text with details) |
| `description` | 仕事内容 (full text) |
| `hiringBackground`, `workLocation`, `workingHours`, `salaryDetail`, `holidays`, `benefits`, `selectionProcess`, `howToApply` | 募集背景, 勤務地・交通, 勤務時間, 給与, 休日休暇, 福利厚生・待遇, 入社までの流れ, 応募受付方法 |
| `tags` | 職種未経験OK, 完全週休2日, 転勤なし … |
| `postedDate`, `startDate`, `endDate`, `validThrough` | 2026-09-10, 2026-12-02 (掲載期間) |
| `companyFounded`, `companyCapital`, `companyEmployees`, `companyRevenue`, `companyBusiness`, `companyOffices`, `companyHomepage` | 2019年, 2000万円, 230名 … |
| `extraSections`, `imageUrl`, `scrapedAt` | other sections the company added (研修の流れ, 配属部署 …) |

Detail fields (description, sections, company info, prefectures) are filled when `includeDetails` is on.

### Use cases

- **Recruiters & HR tech**: track which Japanese companies are hiring, for which roles and at what salary.
- **Salary research (年収・月給)**: parsed JPY min/max salaries by occupation and prefecture.
- **Sales lead generation**: growing companies with employee count, capital, business description and homepage.
- **Job aggregators & AI job agents**: feed fresh 転職 listings into your own product.

### How to use

1. **Search** — set `keyword` (Japanese or English), e.g. `python`, `エンジニア`, `営業`, `経理`. Leave it empty to browse by filters only.
2. **Filter (optional)**:
   - `areaIds` — prefectures: `23` 東京都, `24` 神奈川県, `22` 千葉県, `21` 埼玉県, `37` 大阪府, `36` 京都府, `38` 兵庫県, `33` 愛知県, `50` 福岡県, `11` 北海道, `14` 宮城県, `44` 広島県, `57` 沖縄県 (all prefectures: 11–57); regions: `1` 北海道・東北, `2` 関東, `3` 北陸・甲信越, `4` 東海, `5` 関西, `6` 中国, `7` 四国, `8` 九州・沖縄, `9` 海外.
   - `occupationIds` — `100000` 営業系, `150000` 企画・事務・マーケティング・管理系, `200000` 販売・サービス系, `250000` 専門サービス系, `300000` 専門職系, `350000` クリエイティブ系, `400000` エンジニア系（IT・Web・ゲーム・通信）, `450000` 技術系（電気・電子・機械）, `500000` 技術系（建築・土木）, `550000` 技術系（医薬・化学・素材・食品）, `600000` 施設・設備管理・技能工・運輸・物流系, `650000` 公務員・団体職員・その他. Sub-categories work too (e.g. `401000` Web・オープン系開発, `405000` 社内SE).
   - `minAnnualSalary` (年収 in 万円), `newOnly` (新着のみ).
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 50 jobs).

#### Example input

```json
{
  "keyword": "エンジニア",
  "areaIds": ["23", "24"],
  "occupationIds": ["400000"],
  "minAnnualSalary": "500",
  "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 with `newOnly: true` and compare `id`s to get only **new** postings.
- `salaryMin`/`salaryMax` come from the headline salary; check `salaryType` (monthly vs annual) before comparing. Values are in JPY (万円 converted).
- 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 representative's name and profile and the recruiter contact block (連絡先) are skipped. Please use the data in line with applicable laws (including Japan's APPI) and en-japan'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 (Japanese or English), e.g. 'python', 'エンジニア', '営業', '経理', a company name. Leave empty to list all jobs matching the filters.

## `areaIds` (type: `array`):

en-japan area IDs. Prefectures: 23 東京都, 24 神奈川県, 22 千葉県, 21 埼玉県, 37 大阪府, 36 京都府, 38 兵庫県, 33 愛知県, 32 静岡県, 50 福岡県, 11 北海道, 14 宮城県, 44 広島県, 57 沖縄県 (all: 11-57). Regions: 1 北海道・東北, 2 関東, 3 北陸・甲信越, 4 東海, 5 関西, 6 中国, 7 四国, 8 九州・沖縄, 9 海外. City codes work too, e.g. 2307 東京23区. Leave empty for all of Japan.

## `occupationIds` (type: `array`):

en-japan occupation IDs: 100000 営業系, 150000 企画・事務・マーケティング・管理系, 200000 販売・サービス系, 250000 専門サービス系, 300000 専門職系（コンサル・金融・不動産）, 350000 クリエイティブ系, 400000 エンジニア系（IT・Web・ゲーム・通信）, 450000 技術系（電気・電子・機械）, 500000 技術系（建築・土木）, 550000 技術系（医薬・化学・素材・食品）, 600000 施設・設備管理・技能工・運輸・物流系, 650000 公務員・団体職員・その他. Sub-categories work too, e.g. 401000 システム開発（Web・オープン系）, 405000 社内SE.

## `minAnnualSalary` (type: `string`):

Only jobs offering at least this annual salary (年収), in units of 10,000 JPY.

## `newOnly` (type: `boolean`):

Only return newly published postings.

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

Search result page to start from (50 jobs per page).

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

Open each job to get the full description (仕事内容), requirements, working hours, holidays, benefits, hiring process, exact locations and company info. Turn off for a faster, lighter list.

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

Maximum number of jobs to return.

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

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

## Actor input object example

```json
{
  "keyword": "python",
  "areaIds": [],
  "occupationIds": [],
  "minAnnualSalary": "",
  "newOnly": false,
  "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/enjapan-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/enjapan-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/enjapan-jobs-scraper --silent --output-dataset

```

## MCP server setup

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