104.com.tw Taiwan Jobs Scraper avatar

104.com.tw Taiwan Jobs Scraper

Pricing

from $1.20 / 1,000 results

Go to Apify Store
104.com.tw Taiwan Jobs Scraper

104.com.tw Taiwan Jobs Scraper

Scrape Taiwan's #1 job board 104.com.tw: job listings with full descriptions, salary in TWD, GPS coordinates, company size and industry. No API key required.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

41

Total users

5

Monthly active users

9 days ago

Last modified

Share

104.com.tw Taiwan Jobs Scraper

Extract job listings from 104.com.tw at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.


Why this scraper?

🎯 Built for Taiwan

A dedicated Taiwanese scraper, not a global tool with a country dropdown. Search, locations and currency (TWD) are tuned for 104.com.tw.

📄 Complete job data

Full job title and the complete job description on every record, plus the direct listing URL and publish date. No detail-page option to enable and no surcharge for descriptions.

💶 Salary data

Salary information parsed from the listing where the employer publishes it, in TWD. Missing salaries are returned as null, never guessed.

🏢 Company details

Hiring company name, profile URL, industry and headcount, plus how many people have applied so far.

📍 Precise location

City, district, street address and latitude/longitude for mapping and radius analysis, plus the nearest metro station where the employer lists one.


Input parameters

ParameterTypeDefaultDescription
searchQueryarray(empty)One or more job keywords in Chinese or English. Each keyword triggers a separate search.
areastring(empty)Filter results to a specific region in Taiwan.
remoteWorkbooleanfalseLimit results to remote-friendly positions.
maxResultsinteger200Maximum total jobs to collect across all keywords. Set to 0 for unlimited.

Full job descriptions are included on every record, so there is no detail-page option to switch on and nothing extra to pay for them.


Output schema

Every field below is present on every record. Fields the source does not publish for a given job are returned as null (or an empty array), never omitted and never guessed.

Job

FieldTypeDescription
idstring104's own job number. Stable across runs.
urlstringJob detail page URL.
applyUrlstring | nullDirect application URL for the listing.
titlestring | nullJob title, as published.
searchKeywordstringThe keyword from your input that surfaced this job.

Company

FieldTypeDescription
companystring | nullHiring company name.
companyUrlstring | nullCompany profile page on 104.
industryDescstring | nullIndustry the company is classified under (Traditional Chinese).
employeeCountinteger | nullCompany headcount as published on the profile.
applyCountinteger | nullNumber of applications received so far. A demand signal.

Location

FieldTypeDescription
locationstring | nullCity and district, e.g. "高雄市小港區".
addressstring | nullStreet address where published.
areainteger | null104's numeric area code, matching the area input values.
latitudenumber | nullLatitude of the workplace.
longitudenumber | nullLongitude of the workplace.
nearestMrtstring | nullNearest metro station where the employer lists one.
isRemotebooleanTrue when the employer flags the role as remote or hybrid.

Requirements

FieldTypeDescription
workTypestring | nullFULL_TIME, PART_TIME, HIGH_LEVEL, DISPATCHED, FREELANCE or INTERNSHIP.
workTypeCodeinteger | null104's own employment-type code behind workType.
experienceYearsinteger | nullYears of experience required. 0 means no requirement.
educationstring[]Accepted education levels, e.g. ["高中職","專科","大學"]. Empty when unspecified.
educationCodesinteger[]104's own education codes behind education.
majorsstring[]Preferred fields of study. Empty when unspecified.
languagesarrayLanguage requirements as published. Empty when unspecified.
skillsstring[]Named skills the employer lists. Empty on listings where the employer describes requirements in prose instead.
tagsstring[]Listing badges such as listed-company or welfare markers.

Salary

FieldTypeDescription
salaryMininteger | nullMonthly minimum in TWD. null when the employer does not publish a figure.
salaryMaxinteger | nullMonthly maximum in TWD. null when open-ended or unpublished.
salaryCurrencystring | null"TWD" when a figure is published, otherwise null.
salaryUnitstring | null"MONTH" when a figure is published, otherwise null.
salaryNegotiablebooleanTrue for listings marked 面議 (negotiable) or with no published figure.
salaryTextstring | nullThe salary line as the employer wrote it, e.g. "依公司規定".

Description

FieldTypeDescription
descriptionTextstring | nullFull job description in plain text. Included on every record — no detail fetch, no extra cost.
descriptionHtmlnullAlways null. The source publishes descriptions as plain text only.
descriptionMarkdownstring | nullSame content as descriptionText; provided for pipelines that expect markdown.

Dates and provenance

FieldTypeDescription
publishDatestring | nullDate the listing appeared, YYYY-MM-DD.
publishDateISOstring | nullSame date as an ISO 8601 timestamp.
appearDatestring | nullThe raw YYYYMMDD value as the source returns it.
contentHashstring16-character hash of id, title and salary. Changes when the listing is edited, so you can detect updates between runs.
sourcestringAlways "104.com.tw".
scrapedAtstringISO 8601 timestamp of the scrape.

Example record

{
"id": "14053958",
"url": "https://www.104.com.tw/job/8d83q",
"applyUrl": "https://www.104.com.tw/jobs/apply/analysis/8d83q?channel=104rpt",
"title": "電機/電子維修技術員【B04】",
"company": "唐榮鐵工廠股份有限公司",
"companyUrl": "https://www.104.com.tw/company/ynyxsi0",
"location": "高雄市小港區",
"address": "沿海二路4號",
"area": 6001016010,
"latitude": 22.5451291,
"longitude": 120.3703748,
"nearestMrt": null,
"isRemote": false,
"workType": "FULL_TIME",
"workTypeCode": 1,
"experienceYears": 0,
"education": ["高中職", "專科", "大學"],
"educationCodes": [2, 3, 4],
"majors": ["電機電子工程相關"],
"languages": [],
"skills": [],
"tags": ["上市上櫃"],
"salaryMin": 35500,
"salaryMax": 35500,
"salaryCurrency": "TWD",
"salaryUnit": "MONTH",
"salaryNegotiable": false,
"salaryText": "依公司規定",
"descriptionText": "▍工作內容 ▍\n執行軋鋼廠或煉鋼廠產線電控設備維修保養、工程監工等作業之執行\n\n▍基本學歷 ▍\n高中(職)以上電機、電子科、冷凍空調科或機電整合等相關科系畢業",
"descriptionHtml": null,
"descriptionMarkdown": "▍工作內容 ▍\n執行軋鋼廠或煉鋼廠產線電控設備維修保養、工程監工等作業之執行\n\n▍基本學歷 ▍\n高中(職)以上電機、電子科、冷凍空調科或機電整合等相關科系畢業",
"industryDesc": "其他金屬相關製造業",
"employeeCount": 609,
"applyCount": 0,
"publishDate": "2026-09-03",
"publishDateISO": "2026-09-03T00:00:00.000Z",
"appearDate": "20260903",
"contentHash": "b31f0c8ad4e27a19",
"source": "104.com.tw",
"scrapedAt": "2026-09-10T05:05:42.000Z",
"searchKeyword": "工程師"
}

Examples

Software engineering roles across Taiwan:

{
"searchQuery": ["軟體工程師"],
"maxResults": 200
}

Two keywords at once, limited to Taipei City:

{
"searchQuery": ["軟體工程師", "backend engineer"],
"area": "6001001000",
"maxResults": 500
}

Remote-friendly roles only:

{
"searchQuery": ["developer"],
"remoteWork": true,
"maxResults": 200
}

Daily feed (run on a schedule):

{
"searchQuery": ["軟體工程師", "資料工程師", "產品經理"],
"maxResults": 1000
}

Results are sorted newest-first, so a scheduled daily run with a maxResults cap keeps an always-fresh feed of the latest listings. Schedule it in the Apify Scheduler, for example daily at 07:00.


💰 Pricing

$1.5 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.

ResultsCost
100~$0.15
1,000~$1.5
10,000~$15
100,000~$150

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.9 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeTypical time
100 resultsunder 1 minute
1,000 results2–4 minutes
10,000 results20–35 minutes

Known limitations

  • Salary is only returned when the employer publishes it. Many Taiwanese listings are marked 面議 (negotiable) and carry null salary figures with salaryNegotiable: true.
  • skills, languages, majors and tags are only populated when the employer fills in those structured fields. Roughly half of listings describe requirements in the description prose instead, so expect these arrays to be empty on a share of records.
  • Most text is Traditional Chinese, because that is how the source publishes it. Nothing is machine-translated.
  • Very large result sets are bounded by the source's own paging limits.
  • Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.

Technical details

  • Source: 104.com.tw — Taiwan job listings
  • Coverage: everything the public search exposes, filterable via the input parameters above
  • Retry: automatic retry on network errors with exponential backoff

Rate this actor

If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.


Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl