Townwork Jobs Scraper — Japan Part-Time & Casual Jobs
Pricing
from $3.93 / 1,000 job results
Townwork Jobs Scraper — Japan Part-Time & Casual Jobs
Collect Townwork job listings from Recruit's Japanese part-time job board. Get titles, employers, JPY wages, employment types, access and URLs. Run with a keyword or search/area URL; no login or API key. Pricing: Free, $0.00405/job-result event.
Pricing
from $3.93 / 1,000 job results
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
12 hours ago
Last modified
Categories
Features
Share
Townwork Jobs Scraper for Japan Part-Time Jobs
Extract part-time, casual and arubaito job listings from Townwork (townwork.net) by keyword or search/area URL, with titles, employers, JPY wages, employment types, access, URLs and parse confidence. No Townwork login or API key is required.
- Build recruiter and HR-tech feeds with one flat record per listing.
- Compare wage periods and parsed JPY bounds for benchmarking and labor-market analysis.
- Create lead-generation datasets with employer, access, URL and optional area provenance.
- Search with Japanese or English keywords, paste Townwork URLs and paginate result pages.
- Add optional detail-page descriptions and filter incomplete rows with
parse_confidence.
What you get
The Actor writes one dataset record for each parsed Townwork listing. Nullable fields can be empty when Townwork does not show the value.
| Field | Type | Description | Availability |
|---|---|---|---|
job_id | string or null | Townwork listing ID from the job URL | Listing records |
title | string or null | Job title shown on Townwork | Listing records |
company | string or null | Employer or store text | Listing records |
salary_text | string or null | Raw wage label from Townwork | Listing records |
salary_period | string or null | hourly, daily, weekly, monthly, annual, or per_minute | Listing records |
salary_min | integer or null | Lower wage bound in JPY | Listing records |
salary_max | integer or null | Upper wage bound in JPY; null when none is quoted | Listing records |
currency | string | Currency returned by the wage parser: JPY | Listing records |
employment_type | string or null | Employment label such as アルバイト・パート | Listing records |
access | string or null | Access, station or location text from the card | Listing records |
url | string or null | Townwork job-detail URL | Listing records |
area | string or null | Optional input label stamped on records | When supplied |
search_url | string | Normalized base search URL for the query | Listing records |
page_number | integer | Result page for the listing | Listing records |
scraped_at | string | UTC timestamp for the run's scrape batch | Listing records |
description | string | Plain-text detail content, truncated to 6,000 characters | When enabled and returned |
parse_confidence | number | Fraction of four core fields present: title, company, salary text and job URL | Listing records |
Wage parsing recognizes 時給, 日給, 週給, 月給, 年俸, 年収 and 分給. A single value becomes both bounds; 以上 sets only a minimum and 以下 sets only a maximum.
Sample output
This is one real record from the dataset sample.
{"job_id": "cd8d9a6abeb6224f","title": "gong cha(ゴンチャ)のカフェクルー","company": "移転オープン◎週1日×3h〜★クルードリンク制度あり♪","salary_text": "時給1,220円~1,260円","salary_period": "hourly","salary_min": 1220,"salary_max": 1260,"currency": "JPY","employment_type": "アルバイト・パート","access": "ゴンチャ 富山MAROOT店","url": "https://townwork.net/viewjob/jobid_cd8d9a6abeb6224f/","area": null,"search_url": "https://townwork.net/job_search/kw/%E3%82%AB%E3%83%95%E3%82%A7/","page_number": 1,"scraped_at": "2026-10-28T03:21:52.116384+00:00","parse_confidence": 1}
company and access hold the text Townwork shows on the card. In this record company is a store tagline and access is a store name, so do not read them as clean employer or station fields.
Pricing
This Actor uses pay-per-event pricing. A job-result event represents one Townwork job listing. A job-description event represents full description text fetched from a detail page and is charged only when descriptions are enabled and returned.
| Plan | job-result price per event | job-description price per event |
|---|---|---|
| Free | $0.00405 | $0.005 |
| Bronze | $0.0040095 | $0.00495 |
| Silver | $0.003969 | $0.0049 |
| Gold | $0.0039285 | $0.00485 |
| Platinum | $0.003888 | $0.0048 |
| Diamond | $0.0038475 | $0.00475 |
Example on Free, descriptions disabled: 1,200 results = $4.86 on Free.
Free-plan totals for the event counts below:
| Events on Free | job-result cost per event count on Free | job-description cost per event count on Free |
|---|---|---|
| 1,000 | $4.05 | $5 |
| 10,000 | $40.50 | $50 |
Enabling descriptions can add one job-description event for each listing whose detail text is returned.
The Apify Free plan includes $5 of monthly platform usage credit. At the Free-plan job-result price, that credit corresponds to 1,234 job-result events. Non-paying accounts receive a 30-listing preview cap in this Actor, so a run can deliver no more than 30 listings on that path.
Platform usage, including Apify Proxy traffic such as residential traffic, is included in the event prices and paid by the Actor developer. This Actor does not use "Pay per event + usage", so platform usage is not separately charged to the buyer.
How to use
- Enter a Japanese or English
keyword, or paste Townwork search or area URLs insearchUrls. You can provide both; duplicate normalized URLs are removed. - Set
pagesToFetchfrom 1 to 50 and usemaxItemsto limit total listings across queries. Townwork shows approximately 20 listings per result page. - Add an optional
arealabel such asTokyoorOsakato stamp the same provenance label on every record. It does not filter the search. - Enable
includeDescriptionfor plain-text detail-page descriptions. This adds a detail-page request for each listing and can add a separate event charge. - Keep the default
proxyConfigurationunless needed otherwise. It uses the ApifyRESIDENTIALgroup with countryJP, required for reliable Townwork access from the cloud. Supply your own Apify account; no Townwork credentials are requested. - Run the Actor and inspect records as they are pushed to the dataset.
- Repeat the run through Apify Schedules; daily is a reasonable starting point for a job-listing collection.
Example input:
{"keyword": "カフェ","maxItems": 100,"pagesToFetch": 2,"includeDescription": false,"area": "Tokyo","disableUsageStats": false}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
keyword | Builds a Townwork keyword search from Japanese or English text | Not set |
searchUrls | Accepts Townwork search or area URLs, paginated independently | Empty list |
maxItems | Maximum total listings across queries; 0 means no explicit maximum in the input, subject to the preview cap | 100 |
pagesToFetch | Result pages fetched per query | 1 |
includeDescription | Fetches plain-text detail-page content | false |
area | Adds a free-text provenance label; it does not filter | Not set |
proxyConfiguration | Configures the Apify proxy used for requests | Apify RESIDENTIAL, country JP |
disableUsageStats | Opts out of the usage-statistics record | false |
Limits and edge cases
| Condition | What you see | What to do |
|---|---|---|
Neither keyword nor a usable searchUrls value is provided | The run logs No keyword and no searchUrls provided and writes {"error":"no_queries"} to OUTPUT | Provide a keyword or Townwork search/area URL |
| A supplied URL is not accepted as a Townwork URL | It is ignored; if no query remains, the run follows the no-query path | Use a URL from townwork.net |
pagesToFetch is outside the input range | Only values from 1 through 50 are accepted; the scraper also applies a 50-page safety ceiling | Use a value from 1 through 50 |
| A non-paying run reaches the preview cap | The Actor limits the run to 30 listing records even if maxItems is higher or 0 | Use the preview or a paid Apify plan |
| A page has no parsed job cards | The query logs 0 cards and stops; earlier records remain in the dataset | Check the URL, keyword and page depth, then run again |
| Townwork returns a session interstitial or navigation is blocked | The Actor rotates the residential session and retries the page, up to four rotations per query; then the query stops | Keep the default Japan residential configuration and retry |
| The browser tier is unavailable | The run logs the browser error and ends the current query; records already pushed remain available | Retry later |
| A detail page has no usable description text | The listing can be returned without description; no description event is charged for missing text | Keep descriptions disabled when card fields are sufficient |
| A result page repeats seen job IDs | Duplicate records are skipped; if all IDs on a later page were seen, that query stops | Reduce page depth or use a distinct query |
| Townwork does not expose a wage bound or recognized period | salary_text preserves the raw label; parsed salary fields can be null, and salary_max is null for an 以上 wage without an upper bound | Use salary_text with the parsed fields and parse_confidence |
| Legal use of the public listing data | See the legality answer in the FAQ | Review Townwork's terms and applicable law |
FAQ
How much does it cost to scrape Townwork jobs?
See the Pricing table. Without descriptions on Free, 1,200 results = $4.86 on Free.
Why did my run return no jobs?
The Actor needs a keyword or accepted Townwork search URL. A query can also stop when a page has no parsed cards or after its block-retry limit. Check the input, use a Townwork URL copied from the site, and keep the default Japan residential proxy configuration.
Why is the Actor not working?
Townwork listing pages are rendered in a browser session. Blocked pages are retried with rotating residential sessions, but a query can stop after four rotations, and the current query ends if the browser tier is unavailable. Review the run log and retry with the default proxy configuration.
Can I collect full job descriptions?
Yes. Set includeDescription to true. Usable plain-text content is returned up to 6,000 characters, and one additional job-description event can be charged per returned description.
Is scraping Townwork data legal or allowed?
The Actor reads public data from publicly visible pages. Check Townwork's terms and applicable law (the law that applies to you) for your use case before running it.
Related actors
- Arbeitsagentur Jobs Scraper — German Jobs API | PPE — related job-listing scraper for German jobs.
- Google Jobs Scraper | Postings + Multi-Board Apply Links — related scraper for Google Jobs postings and multi-board apply links.
- Jobstreet Jobs Scraper — SEA: MY, SG, PH, ID, TH, HK — related job-listing scraper for Southeast Asian markets.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.