104.com.tw Jobs Scraper — Taiwan Job Listings
Pricing
from $1.40 / 1,000 jobs
104.com.tw Jobs Scraper — Taiwan Job Listings
Scrape public 104.com.tw (104 人力銀行) job listings by keyword and optional area code. Title, company, location, industry, appear date, job URL. Salary label only when 104 discloses it. HTTP JSON search API — no login, no CVs.
Pricing
from $1.40 / 1,000 jobs
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
104.com.tw Jobs Scraper
104.com.tw (104 人力銀行) Taiwan jobs scraper by keyword + optional area code: title, company, city, industry, appear date, and absolute job URL — one clean Dataset row per public vacancy. Salary label only when 104 discloses it.
Built for Taiwan hiring intel, salary benchmarking (when disclosed), LATAM/Asia jobs portfolio, and PPE-friendly exports. No browser automation — HTTP + Chrome TLS fingerprint against 104’s public JSON search API (/jobs/search/api/jobs). No login. No CVs. No candidate PII.
104 returns job cards as JSON (
data[], ~20 per page). This Actor calls the same endpoint the website uses, GETs withcurl_cffi(chrome124), maps fields to a stable schema, and paginates withpage=NuntilmaxItems. TW residential proxy is recommended (often works without proxy from clean IPs).
Why this Actor: Keyword search · Clean schema · No Playwright · No CV / VIP scrape · Salary when disclosed · Cheap PPE · CSV / API / webhooks ready
Table of contents
- What this Actor does
- What you get
- Features
- Input
- Output example
- Output fields
- Quick start (API)
- Use cases
- Limitations
- FAQ
- Keywords
What this Actor does
| Step | Action |
|---|---|
| 1 | Accept keyword + optional area / maxItems |
| 2 | GET /jobs/search/api/jobs?keyword=…&kwop=7&page=N&pagesize=20&order=16 |
| 3 | Parse JSON data[] |
| 4 | Map each card → Dataset row (jobId, title, companyName, salaryLabel, jobUrl, …) |
| 5 | Paginate until maxItems, empty page, or partial page |
Input: keyword, area, max items, proxy.
Output: one Dataset row per public job.
What you get
Job
jobId,title,companyName,companyUrl,location,address,teaserindustry,jobType,experienceCode,remoteWorkType/remoteLabel,employeeCount
Compensation / timing
salaryLow,salaryHigh,salaryLabel(only when 104 discloses numbers; otherwise null)appearDate
Links / meta
jobUrl(https://www.104.com.tw/job/{slug})keyword,area,scrapedAt,error,errorMessage
Features
| Capability | Detail |
|---|---|
| Keyword search | e.g. 工程師, Python, 護理師 |
| Optional area | 104 area codes (Taipei, Kaohsiung, …) |
| No browser | curl_cffi impersonate chrome124 + browserforge headers |
| Public JSON API | Same endpoint as 104’s job list UI |
| Proxy-aware | TW RESIDENTIAL recommended |
| PPE-friendly | Public vacancies only — no CV harvesting |
Input
| Field | Required | Description |
|---|---|---|
keyword | Yes | Search term on 104.com.tw |
area | No | Optional 104 area code |
maxItems | No | Default 40, max 500 |
proxyConfiguration | No | Default RESIDENTIAL + TW |
Example
{"keyword": "工程師","maxItems": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "TW"}}
Output example
{"jobId": "7923632","title": "設備工程師(嘉積廠)","companyName": "嘉晶電子股份有限公司","companyUrl": "https://www.104.com.tw/company/7erm71c","location": "新竹市","address": "創新一路17號","salaryLow": 0,"salaryHigh": 0,"salaryLabel": null,"jobUrl": "https://www.104.com.tw/job/4ptww","appearDate": "20261002","industry": "半導體製造業","jobType": 1,"experienceCode": 0,"remoteWorkType": 0,"remoteLabel": "on-site","employeeCount": 700,"teaser": "半導體機台維護、異常處理及改善","keyword": "工程師","area": null,"scrapedAt": "2026-10-02T12:00:00Z","error": false,"errorMessage": null}
Output fields
| Field | Notes |
|---|---|
salaryLabel | Null when 104 shows 待遇面議 (salaryLow=salaryHigh=0) |
jobType / experienceCode | Raw 104 codes from the card |
remoteLabel | on-site / remote / hybrid when mappable |
Quick start (API)
$apify call noahadler/104-com-tw-jobs -i '{"keyword":"工程師","maxItems":20}'
Use cases
- Track Taiwan hiring volume by keyword / city
- Benchmark disclosed salaries on 104
- Feed ATS / BI pipelines with public vacancy URLs
Limitations
- Public vacancies only — does not scrape résumés, VIP dashboards, or post-login candidate data
- Salary often undisclosed (~⅓ of cards) — then
salaryLabelis null - Cloudflare may require TW residential proxy from some IPs
- Area filter needs 104’s numeric area codes (not free-text city names)
- Company contact phones/emails are not extracted as a product field
FAQ
Does this scrape CVs?
No. VIP clause (十) forbids automated collection of candidate personal data. This Actor only reads public job cards.
Why is salary often empty?
104 allows 待遇面議. When both salaryLow and salaryHigh are 0, we leave salaryLabel null instead of inventing a value.
Do I need a 104 account?
No. Public search JSON only.
Keywords
104.com.tw scraper, taiwan 104 jobs, 104 人力銀行, taiwan job scraper, 104 job listings, 104.com.tw API, Taiwan jobs API