en-japan Jobs Scraper (Japan)
Pricing
from $2.10 / 1,000 job scrapeds
en-japan Jobs Scraper (Japan)
Scrape job listings from employment.en-japan.com (エン転職), a major Japanese mid-career job board: job id and URL, title, company, location, salary text with yen band where stated, employment type, tags - by area, occupation, keyword or new arrivals.
Pricing
from $2.10 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape job listings from en-japan (エン転職), one of Japan's major mid-career job boards, and get one flat row per job: id and URL, title, company, location, salary as printed (plus a yen band when the text states one), employment type, badges and the job text on the card. Japanese text is kept exactly as en-japan prints it.
Run it for an area (Tokyo is 23), an occupation, a keyword, the day's new
arrivals, or paste any search you built on the site.
Example input
{"areaIds": ["23"],"newOnly": true,"maxItems": 500}
That is the daily feed: the Tokyo jobs en-japan flags as new arrivals (526 of Tokyo's 6,266 on 2026-10-23). To read a whole area past the ceiling below, list occupations too:
{"areaIds": ["23"],"occupationIds": ["100000", "150000"],"maxItems": 4000}
Input
| field | meaning |
|---|---|
searchUrls | Optional. en-japan search result URLs on https://employment.en-japan.com/search/search_list/, copied from your browser after setting conditions on the site. Every condition is kept; the actor manages the page number. When given, the four filter fields below are ignored |
areaIds | Optional. en-japan area ids (Tokyo is 23). Each area is its own search |
occupationIds | Optional. en-japan occupation ids: 100000 is the whole sales group (営業系), 101000 corporate sales (法人営業), 150000 planning, clerical, marketing and admin. Each occupation is its own search, combined with each area |
keyword | Optional. A keyword searched across the job text |
newOnly | Only jobs en-japan flags as new arrivals (its 新着のみ filter) |
fetchDetails | Open every job's detail page to fill posted_from, posted_until and last_updated. One extra request per job; off by default |
maxItems | Stop after this many jobs in total, shared across all searches. en-japan shows 50 jobs per page |
proxyConfiguration | Apify datacenter proxy by default - see Proxy below |
At least one of searchUrls, areaIds, occupationIds, keyword or
newOnly is required: en-japan answers a search with no condition with an
empty page, so the actor refuses it rather than report "zero jobs". An id the
site does not know is ignored by the site, not rejected; check the first rows.
Output
| field | meaning |
|---|---|
job_id | en-japan's numeric job id, from the /desc_<id>/ part of the job URL (a string) |
url | The job's detail page on employment.en-japan.com |
title | The job headline |
company | Company name as printed |
employment_types | The employment-type badges, e.g. ["正社員"]; a card can carry two or three |
tags | The other badges: 職種未経験OK, 転勤なし, 完全週休2日, エン エージェント求人 ... |
catch_copy | The headline sentence above the card's photo |
teaser | The opening of the job text beside the photo (en-japan cuts it with "……") |
job_summary | The card's 仕事内容 (work) row |
requirements | The card's 応募資格 (who it is for) row |
salary_text | The card's 給与 (salary) row as printed |
salary_min_jpy, salary_max_jpy | Yen, only when salary_text states exactly one band or floor - see below |
salary_period | year for a 年収 / 年俸 band, month for a 月給 band, null when there is no band |
location | The card's 勤務地 (work location) row |
company_feature | The card's 会社の特徴 row, printed only on エン エージェント cards |
editor_comment | The reporter's comment in the card's 取材 box |
image_url | The card's first photo |
posted_from, posted_until, last_updated | ISO dates from the detail page; only with fetchDetails |
search_url | Which search produced this row (page number stripped) |
Long rows are cut by en-japan on the search page with "…" or "……"; this actor
returns them as printed. Turn on fetchDetails only for the three date
columns - it does not add the full job text.
Which fields can be null, and why null is not zero
Counts are from the 2,005 cards on the 40 pages of Tokyo results read on 2026-10-23.
salary_min_jpy/salary_max_jpy/salary_periodarenullon 907 of 2,005 cards. A value is filled only when the salary text states exactly one band or floor next to a period word, such as "月給28万円~40万円" or "年収500万円以上". Two bands ("東京:月給21万円~/大阪:月給19.7万円~"), example incomes ("月収例25.6万円") and a bare "350万円~550万円" with no period word are not one band for one period, so they staynull. A floor has no maximum, sosalary_max_jpyis alsonullon those. A0would read as "unpaid" and an invented band as a measurement.posted_from/posted_until/last_updatedarenullunless you setfetchDetails, because the search results print no date of any kind. They are alsonullfor a job whose detail page could not be read (the row is still returned, and the run log says which job).catch_copy(367 null) andteaser(436 null): cards that print none.company_featureis null on every card that is not an エン エージェント one.image_urlis null on 518 cards with no photo.job_summary,requirements,salary_text,locationarenullwhen the card has no row with that label; every measured card had them except one without a salary row.
The 2,000-job ceiling
en-japan serves at most 40 pages of 50 (2,000 jobs) for any single search,
however many it reports. Tokyo says 6,266 jobs; the pages after the 40th come
back empty. The actor reads each search until it ends and, when a search stops
at the ceiling, says so in the run log and the run's status message. To read
past it, split the search: give several occupationIds (each is its own search
of up to 2,000), several areaIds, or use newOnly for a daily feed that
stays well under it. A job found by two of your searches is returned and
charged once.
The first page of a search also shows about five sponsored cards whose jobs reappear later in the results; they are returned once, not twice.
Proxy
The default is Apify's datacenter proxy: on 2026-10-23 a probe from the platform got a full results page from 10 of 10 datacenter exits (residential 9 of 10, Japanese residential 9 of 10). Residential exits are not needed and cost more.
Billing
Pay per event: $0.0021 per job (job-scraped), plus a small
actor-start fee ($0.002) per run. Each job is charged once, after it has
been written to the dataset. The same job id is never charged twice in one run,
even when two of your searches both return it. fetchDetails does not change
the price per job.