Taiwan Jobs Scraper (104) - Listings, Salary & Company
Pricing
from $6.80 / 1,000 results
Taiwan Jobs Scraper (104) - Listings, Salary & Company
Scrape Taiwan job listings with job title, company name, area, salary range, employment type, education and experience required, industry, skills, posted date and links. Search by keyword and city. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Taiwan Jobs Scraper (104) - Listings, Salary & Company
Here is one real result, with every field the actor returns:
{"companyLogo": "https://static.104.com.tw/b_profile/cust_picture/3356/130000000123356/logo.gif?v=20260524105608","title": "助理工程師","jobUrl": "https://www.104.com.tw/job/93u66","jobNo": "15295614","companyName": "創睿能源股份有限公司","companyUrl": "https://www.104.com.tw/company/1a2x6bkmho","companyNo": "130000000123356","area": "台北市中山區","address": "松江路220號4樓之2","latitude": 25.0581693,"longitude": 121.533036,"mrtStation": "捷運行天宮站","salaryLow": 40000,"salaryHigh": 45000,"salaryType": "月薪 Monthly","salaryText": "月薪 Monthly 40,000~45,000 TWD","employmentType": "全職 Full-time","employmentTypeCodes": [1],"experienceYears": null,"experienceRequired": "不拘 / Unspecified","educationRequired": "高職 Vocational high / 專科 Associate / 大學 Bachelor","industry": "光電產業","jobCategoryCodes": ["2007001015", "2007001016", "2007001017"],"majors": ["資訊工程相關", "電機電子工程相關", "資訊管理相關"],"skills": ["Node.js", "ReactJS", "C#", "MS SQL", "JavaScript", "MySQL", "Linux"],"languages": ["英文 English"],"remoteWork": false,"employeeCount": 30,"postedDate": "2026-08-10","descriptionSnippet": "1.設備設定:需配合駕駛公務車至全台充電站點,協助進行充電樁、網路通信設備的軟硬體安裝與參數設定。 [trimmed]","contactPerson": "林小姐","contactEmail": "sunny.lin@evape.com.tw","contactPhone": "02-25980896-104","fullDescription": "1.設備設定:需配合駕駛公務車至全台充電站點... [trimmed]","benefits": ["員工紅利", "年終獎金", "專業證照獎金", "員工進修補助", "旅遊補助", "交通津貼補助", "員工團體保險"],"benefitsText": "◆ 薪獎類 1.年終獎金、端午禮金/禮盒、中秋獎金/禮盒 ... [trimmed]","headcountNeeded": "1~2人","managementResponsibility": "不需負擔管理責任","businessTrip": "需出差,一年累積時間約一個月以下","workShift": "日班","vacationPolicy": "依公司規定","startWorkingDay": "不限","certificates": ["CCNA", "CCNA Security網路安全認證"],"driverLicense": ["普通重型機車", "普通小型車"],"acceptRoles": ["應屆畢業生", "原住民", "新住民", "二度就業", "中高齡", "學生實習"],"otherRequirements": "1.必備執照:具備普通小型車駕照... [trimmed]","closeDate": null,"searchQuery": "工程師","source": "104","observedAt": "2026-08-10T14:31:42.617Z","error": null}
Note:
descriptionSnippet,fullDescription,benefitsText,otherRequirements, and theskills,benefits, andacceptRoleslists are trimmed for readability. The real record returns the full text and lists; every value shown is exactly as returned.
The most complete Taiwan 104 jobs scraper available. It returns every field a 104.com.tw listing exposes, including salary range, company profile, required skills and majors, benefits, geocoordinates, nearest MRT station, and a public contact person with email and phone when published, and gives you keyword and city inputs plus an optional contact-enrichment add-on to target exactly the vacancies you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor runs each keyword you pass as a separate search on 104.com.tw, optionally limited to the cities or counties you list, opens each listing, and writes one normalized record per job to the run's dataset. Each record carries the salary range, company profile, required experience and education, skills, majors, benefits, geocoordinates, nearest MRT station, and a public contact person with email and phone when the listing exposes one. Missing source values are returned as null.
Data covers public job listings on 104.com.tw. Keywords and city names accept Chinese or English. Leave areas empty to search nationwide.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 engineer jobs across Taiwan.
{"searchQueries": ["工程師"],"maxJobs": 10}
Add areas (for example 台北市, Taipei, Kaohsiung) to limit to specific cities or counties. All inputs are optional.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["工程師"] | One or more job keywords. Each keyword runs its own search. Examples: 工程師 (engineer), 軟體 (software), 行銷 (marketing), 會計 (accounting), PM. |
areas | string[] | no | (empty) | Limit results to one or more Taiwan cities or counties, in Chinese or English (for example 台北市, 新北市, Taipei, Kaohsiung, Hsinchu). Empty searches nationwide. |
maxJobs | integer | no | 10 | Maximum number of job listings to collect across the whole run. Range 1 to 1000000. |
enrichContacts | boolean | no | false | Optional paid add-on. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich. Free Apify accounts are capped at 3. |
Output reference
One dataset item per job. Types: string, integer, number, boolean, string[], integer[], or null when the source value is absent. Fields marked (enrich) require the contact add-on.
| Field | Type | Description |
|---|---|---|
companyLogo | string | Company logo image URL, or null. |
title | string | Job title. |
jobUrl | string | Public listing URL. |
jobNo | string | 104 job number. |
companyName | string | Employer name. |
companyUrl | string | Company profile URL on 104. |
companyNo | string | 104 company number. |
area | string | City and district. |
address | string | Street address, or null. |
latitude | number | Job location latitude, or null. |
longitude | number | Job location longitude, or null. |
mrtStation | string | Nearest MRT station, or null. |
salaryLow | integer | Low end of the salary range, or null. |
salaryHigh | integer | High end of the salary range, or null. |
salaryType | string | Salary basis (for example 月薪 Monthly). |
salaryText | string | Full salary text as shown. |
employmentType | string | Employment type (for example 全職 Full-time). |
employmentTypeCodes | integer[] | 104 employment-type codes. |
experienceYears | integer | Required years of experience, or null. |
experienceRequired | string | Experience requirement text. |
educationRequired | string | Education requirement text. |
industry | string | Company industry. |
jobCategoryCodes | string[] | 104 job-category codes. |
majors | string[] | Preferred fields of study. |
skills | string[] | Required or preferred skills. |
languages | string[] | Required languages. |
remoteWork | boolean | Whether remote work is offered. |
employeeCount | integer | Company employee count, or null. |
postedDate | string | Date posted (YYYY-MM-DD). |
descriptionSnippet | string | Snippet of the job description. |
fullDescription | string | Full job description. |
contactPerson | string | Named contact from the listing, or null. |
contactEmail | string | Public contact email from the listing, or null. |
contactPhone | string | Public contact phone from the listing, or null. |
benefits | string[] | Listed benefit tags. |
benefitsText | string | Full benefits description text. |
headcountNeeded | string | Number of openings. |
managementResponsibility | string | Management responsibility text. |
businessTrip | string | Business-travel requirement text. |
workShift | string | Work shift (for example 日班). |
vacationPolicy | string | Vacation policy text. |
startWorkingDay | string | Start-date requirement. |
certificates | string[] | Required or preferred certificates. |
driverLicense | string[] | Required driver licenses. |
acceptRoles | string[] | Candidate groups explicitly welcomed. |
otherRequirements | string | Other requirements text, or null. |
closeDate | string | Listing close date, or null. |
searchQuery | string | The keyword that produced this job. |
source | string | Data source. Always 104. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
enrichedEmail | string | Public business contact email found by the add-on (enrich), or null. |
enrichedContactName | string | Contact person's name found by the add-on (enrich), or null. |
enrichedJobTitle | string | Contact person's job title (enrich), or null. |
enrichedEmailStatus | string | Verification status of the found email (enrich), or null. |
enrichedSource | string | Where the contact was found (enrich), or null. |
enrichedConfidence | number | Confidence score for the found contact (enrich), or null. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"searchQueries": ["工程師"], "maxJobs": 10}):
{"title": "助理工程師","jobUrl": "https://www.104.com.tw/job/93u66","jobNo": "15295614","companyName": "創睿能源股份有限公司","companyNo": "130000000123356","area": "台北市中山區","address": "松江路220號4樓之2","latitude": 25.0581693,"longitude": 121.533036,"mrtStation": "捷運行天宮站","salaryLow": 40000,"salaryHigh": 45000,"salaryText": "月薪 Monthly 40,000~45,000 TWD","employmentType": "全職 Full-time","industry": "光電產業","skills": ["Node.js", "ReactJS", "C#", "MS SQL", "MySQL", "Linux"],"remoteWork": false,"employeeCount": 30,"postedDate": "2026-08-10","contactPerson": "林小姐","contactEmail": "sunny.lin@evape.com.tw","contactPhone": "02-25980896-104","searchQuery": "工程師","source": "104","observedAt": "2026-08-10T14:31:42.617Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~taiwan-104-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["工程師"],"areas":["台北市"],"maxJobs":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~taiwan-104-jobs-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["軟體","PM"],"maxJobs":100}'
Apify CLI:
apify call scrapers_lat/taiwan-104-jobs-scraper \--input '{"searchQueries":["會計"],"areas":["Kaohsiung"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per job returned (
resultevent). See the pricing tab for the current per-result price. - Contact enrichment add-on (optional, off by default). When
enrichContactsis on, each attempt charges acontact-search-attemptevent, plus acontact-email-foundevent only when an email is found.enrichContactsMaxcaps how many results are attempted (free accounts capped at 3). - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results and add-on events. - Free Apify plans are capped at 10 jobs per run. Upgrade for higher
maxJobs.
FAQ and troubleshooting
A run returned 0 records. Why?
Your keyword or city matched no current listings. Broaden the keyword or remove the areas filter. Zero-result runs are not charged.
Can I use English keywords and city names?
Yes. Both searchQueries and areas accept Chinese or English (for example Taipei, Kaohsiung).
Why is contactEmail sometimes null?
Not every listing publishes a contact email. When one is exposed it is captured in contactEmail; otherwise it is null. Enable the contact add-on to attempt to find one.
How do I get many jobs at once?
Raise maxJobs and list several keywords. Paid accounts are not capped at 10.
Is this an official 104 tool? No. This actor is independent and has no affiliation with 104 Corporation. It reads only data that is publicly available on the listings.
Related scrapers
- Taiwan Business Registry Scraper: Taiwan company registry records.
- Taiwan TWSE Disclosures Scraper: Taiwan Stock Exchange disclosures.
- Switzerland Jobs Scraper: Swiss job listings.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with 104 Corporation. Accesses only publicly available job listing data.
