Townwork Jobs Scraper — Japan Part-Time & Casual Jobs avatar

Townwork Jobs Scraper — Japan Part-Time & Casual Jobs

Pricing

from $3.93 / 1,000 job results

Go to Apify Store
Townwork Jobs Scraper — Japan Part-Time & Casual Jobs

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

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

12 hours ago

Last modified

Features

Limited permissions

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.

FieldTypeDescriptionAvailability
job_idstring or nullTownwork listing ID from the job URLListing records
titlestring or nullJob title shown on TownworkListing records
companystring or nullEmployer or store textListing records
salary_textstring or nullRaw wage label from TownworkListing records
salary_periodstring or nullhourly, daily, weekly, monthly, annual, or per_minuteListing records
salary_mininteger or nullLower wage bound in JPYListing records
salary_maxinteger or nullUpper wage bound in JPY; null when none is quotedListing records
currencystringCurrency returned by the wage parser: JPYListing records
employment_typestring or nullEmployment label such as アルバイト・パートListing records
accessstring or nullAccess, station or location text from the cardListing records
urlstring or nullTownwork job-detail URLListing records
areastring or nullOptional input label stamped on recordsWhen supplied
search_urlstringNormalized base search URL for the queryListing records
page_numberintegerResult page for the listingListing records
scraped_atstringUTC timestamp for the run's scrape batchListing records
descriptionstringPlain-text detail content, truncated to 6,000 charactersWhen enabled and returned
parse_confidencenumberFraction of four core fields present: title, company, salary text and job URLListing 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.

Planjob-result price per eventjob-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 Freejob-result cost per event count on Freejob-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

  1. Enter a Japanese or English keyword, or paste Townwork search or area URLs in searchUrls. You can provide both; duplicate normalized URLs are removed.
  2. Set pagesToFetch from 1 to 50 and use maxItems to limit total listings across queries. Townwork shows approximately 20 listings per result page.
  3. Add an optional area label such as Tokyo or Osaka to stamp the same provenance label on every record. It does not filter the search.
  4. Enable includeDescription for plain-text detail-page descriptions. This adds a detail-page request for each listing and can add a separate event charge.
  5. Keep the default proxyConfiguration unless needed otherwise. It uses the Apify RESIDENTIAL group with country JP, required for reliable Townwork access from the cloud. Supply your own Apify account; no Townwork credentials are requested.
  6. Run the Actor and inspect records as they are pushed to the dataset.
  7. 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

ParameterWhat it doesDefault
keywordBuilds a Townwork keyword search from Japanese or English textNot set
searchUrlsAccepts Townwork search or area URLs, paginated independentlyEmpty list
maxItemsMaximum total listings across queries; 0 means no explicit maximum in the input, subject to the preview cap100
pagesToFetchResult pages fetched per query1
includeDescriptionFetches plain-text detail-page contentfalse
areaAdds a free-text provenance label; it does not filterNot set
proxyConfigurationConfigures the Apify proxy used for requestsApify RESIDENTIAL, country JP
disableUsageStatsOpts out of the usage-statistics recordfalse

Limits and edge cases

ConditionWhat you seeWhat to do
Neither keyword nor a usable searchUrls value is providedThe run logs No keyword and no searchUrls provided and writes {"error":"no_queries"} to OUTPUTProvide a keyword or Townwork search/area URL
A supplied URL is not accepted as a Townwork URLIt is ignored; if no query remains, the run follows the no-query pathUse a URL from townwork.net
pagesToFetch is outside the input rangeOnly values from 1 through 50 are accepted; the scraper also applies a 50-page safety ceilingUse a value from 1 through 50
A non-paying run reaches the preview capThe Actor limits the run to 30 listing records even if maxItems is higher or 0Use the preview or a paid Apify plan
A page has no parsed job cardsThe query logs 0 cards and stops; earlier records remain in the datasetCheck the URL, keyword and page depth, then run again
Townwork returns a session interstitial or navigation is blockedThe Actor rotates the residential session and retries the page, up to four rotations per query; then the query stopsKeep the default Japan residential configuration and retry
The browser tier is unavailableThe run logs the browser error and ends the current query; records already pushed remain availableRetry later
A detail page has no usable description textThe listing can be returned without description; no description event is charged for missing textKeep descriptions disabled when card fields are sufficient
A result page repeats seen job IDsDuplicate records are skipped; if all IDs on a later page were seen, that query stopsReduce page depth or use a distinct query
Townwork does not expose a wage bound or recognized periodsalary_text preserves the raw label; parsed salary fields can be null, and salary_max is null for an 以上 wage without an upper boundUse salary_text with the parsed fields and parse_confidence
Legal use of the public listing dataSee the legality answer in the FAQReview 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.

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.

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.

Full list of collected fields