JobsDB.com Scraper — HK & TH Jobs
Pricing
from $0.99 / 1,000 results
JobsDB.com Scraper — HK & TH Jobs
Scrape job listings from JobsDB in Hong Kong and Thailand. Filter by keyword, location, work type, and date. Returns salary, descriptions (HTML/text/Markdown), classification, and work arrangement. No proxy required.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
19
Total users
9
Monthly active users
6 days ago
Last modified
Categories
Share
JobsDB Scraper — Hong Kong & Thailand | Salary, Descriptions & Contact Data

Extract structured job listings from JobsDB Hong Kong (hk.jobsdb.com) and JobsDB Thailand (th.jobsdb.com) — the SEEK-platform job boards covering two of Asia's largest hiring markets. No proxy required. No API key needed. Runs entirely in the cloud.
What data can you get?
Each job record includes:
- Title, company, location, work type, work arrangement (on-site / hybrid / remote)
- Salary — raw label + parsed
salaryMin/salaryMax/salaryCurrency/salaryPeriod - Full job description — HTML, plain text, and Markdown (when
fetchDetailsis enabled) - Classification & sub-classification — industry category IDs and labels
- Company intelligence — company logo, banner image, company profile ID
- Job score (0–5) — transparent signal based on salary completeness, description quality, posting recency, and contact presence
- Tags —
EARLY_APPLICANT,EXPIRING_SOON, and other listing signals - Bullet points — key highlights shown on listing cards
- Posted date, expiry date — ISO timestamps
Use cases
Recruitment intelligence
Track job demand by role, location, and industry. Compare hiring trends across HK and TH, monitor which classifications are growing, and benchmark posting volume over time.
Salary benchmarking
Collect salary labels across roles and locations for compensation research. The actor parses salary ranges into structured salaryMin / salaryMax fields for direct analysis — no manual parsing needed.
Market monitoring
Run daily or hourly with skipReposts: true and maxAgeMinutes to receive only fresh listings. Combine with keyword filters to track specific roles or companies.
AI agent and LLM pipelines
Use compactOutput: true to produce lean payloads. Sort by jobScore to surface high-quality, information-rich listings for downstream processing.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country | select | HK | Market to scrape: HK (Hong Kong) or TH (Thailand). |
searchQuery | string | — | Keyword, role title, or skill. Leave empty to browse all jobs. Pass a JSON array for multi-query mode: ["python developer", "data analyst"] — each query runs separately and results are merged and deduplicated. |
location | string | — | City, district, or region. E.g. Kowloon, Bangkok. Leave empty for all locations. |
workType | select | All | Filter by: Full time, Part time, Contract/Temp, Casual. |
classificationId | integer | — | Industry category ID. E.g. 6281 for IT, 6251 for Accounting. |
subClassificationId | integer | — | Sub-category ID. Requires classificationId. |
sortMode | select | ListedDate | Sort by date posted (newest first) or relevance. |
daysOld | integer | — | Restrict to jobs posted within N days (max 30). |
includeKeywords | string | — | Comma-separated keywords that must appear anywhere in a listing (title, company, description, etc.). All terms must match. Example: python, remote |
excludeKeywords | string | — | Comma-separated keywords that must not appear. Any match discards the listing. Example: intern, unpaid |
fromDate | string | — | Keep only jobs posted on or after this date. Format: YYYY-MM-DD. |
toDate | string | — | Keep only jobs posted on or before this date. Format: YYYY-MM-DD. |
maxAgeMinutes | integer | — | Keep only jobs posted within the last N minutes. Useful for near-real-time monitoring. |
fetchDetails | boolean | false | Fetch full description, salary, and company data per job. Slower but richer output. |
compactOutput | boolean | false | Omit description fields. Job score still runs. Ideal for LLM pipelines. |
skipReposts | boolean | false | Skip listings already seen in a previous run (90-day memory). |
startUrls | array | — | Specific JobsDB job URLs to scrape directly, bypassing search. |
maxResults | integer | 5 | Maximum number of listings to return. Post-filters apply after fetch — you may receive fewer results than this limit. |
Output schema
Each result item contains:
| Field | Description |
|---|---|
id | JobsDB listing ID |
url | Direct link to the job posting |
title | Job title |
companyName | Employer name |
advertiserId | SEEK advertiser ID |
companyId | SEEK company profile ID (when available) |
companyLogo | Company logo URL (when available) |
companyBannerUrl | Company banner image URL (when available) |
companyIsVerified | Whether the listing is branded / verified |
location | Location label |
countryCode | HK or TH |
workType | Employment type (Full time, Part time, etc.) |
workArrangement | On-site, Hybrid, or Remote |
displayType | Listing tier (standard, branded, etc.) |
jobAdType | ORGANIC or SPONSORED |
isFeatured | Featured listing flag |
listingDate | ISO 8601 posting date |
listingDateDisplay | Human-readable age ("3d ago") |
expiryDate | ISO 8601 expiry date |
salaryLabel | Raw salary text from listing |
salaryMin | Parsed minimum salary amount |
salaryMax | Parsed maximum salary amount |
salaryCurrency | HKD or THB |
salaryPeriod | month, year, hour, etc. |
classification | Industry category label |
classificationId | Industry category ID |
subClassification | Sub-category label |
subClassificationId | Sub-category ID |
roleId | Role slug (e.g. software-engineer) |
tags | Listing tags (e.g. Be an early applicant) |
bulletPoints | Key highlight bullet points from card |
teaser | Short listing summary |
descriptionHtml | Full description HTML (when fetchDetails: true and compactOutput: false) |
descriptionText | Full description as plain text |
descriptionMarkdown | Full description as Markdown |
jobScore | 0–4 quality signal |
jobScoreReasons | Array of signals contributing to the score |
isRepost | Whether this listing appeared in a previous run |
status | Listing status from SEEK platform |
scrapedAt | ISO 8601 extraction timestamp |
Job score signals
jobScore is a 0–5 integer built from transparent, verifiable signals:
| Signal | Score | Condition |
|---|---|---|
salary_parseable | +1 | Salary range is present and parseable |
full_description | +1 | Description is >200 characters |
posted_today | +2 | Posted within the last 24 hours |
posted_this_week | +1 | Posted within the last 7 days |
Max score: 4.
Input examples
Basic keyword search — Hong Kong IT jobs
{"country": "HK","searchQuery": "software engineer","location": "Hong Kong","maxResults": 50,"fetchDetails": true}
Multi-query batch — run two searches, merged and deduplicated
{"country": "HK","searchQuery": "[\"python developer\", \"data engineer\"]","maxResults": 100,"fetchDetails": true}
Post-filter — Python roles, no junior / intern titles
{"country": "HK","searchQuery": "developer","includeKeywords": "python","excludeKeywords": "junior, intern, graduate","maxResults": 100,"fetchDetails": true}
Today's fresh listings only — Thailand
{"country": "TH","searchQuery": "marketing manager","location": "Bangkok","maxAgeMinutes": 1440,"sortMode": "ListedDate","maxResults": 50}
Date-range research — jobs posted in a specific window
{"country": "HK","searchQuery": "finance","fromDate": "2026-06-01","toDate": "2026-06-07","maxResults": 200,"fetchDetails": true}
Daily incremental feed — skip already-seen listings
{"country": "HK","searchQuery": "product manager","daysOld": 1,"skipReposts": true,"maxResults": 500}
AI agent / LLM pipeline — compact high-quality output
{"country": "HK","searchQuery": "software engineer","fetchDetails": true,"compactOutput": true,"maxResults": 25}
Sort results by jobScore descending to surface the most data-rich listings first.
Pricing
$0.99 per 1,000 results — you only pay for listings actually returned to your dataset. No monthly fees. No setup costs. Post-filtered results that don't reach the dataset are not charged.
| Results | Cost |
|---|---|
| 10 | ~$0.01 |
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.90 |
| 50,000 | ~$49.50 |
FAQ
Does it require a proxy? No. The SEEK API backing JobsDB responds cleanly to datacenter IPs. No proxy cost is passed on.
What markets are supported?
Hong Kong (hk.jobsdb.com) and Thailand (th.jobsdb.com). HK has ~33,000 active listings; TH has ~1,200.
Can I scrape multiple keywords in one run?
Yes — pass searchQuery as a JSON array: ["python", "data analyst"]. Each query runs separately and results are merged with deduplication. You pay one Actor-Start charge regardless of how many queries you run.
What is fetchDetails and when should I enable it?
With fetchDetails: false (default), results come from the search index — fast, no extra requests, basic fields only. With fetchDetails: true, the actor fetches each job's detail page via the SEEK GraphQL API to add full description, salary (more accurate), email/phone extraction, and company data. Plan for roughly 4–5× more compute time.
How do post-filters work?
includeKeywords, excludeKeywords, fromDate, toDate, and maxAgeMinutes are applied to the collected dataset before records are emitted. This means the actor may fetch more pages than your maxResults cap if many results are filtered out. Use daysOld as a server-side pre-filter when date range is your primary concern.
How is jobScore calculated?
It's a 0–5 integer based on transparent signals: whether salary is parseable, whether a full description is present, how recently the job was posted, and whether contact details were found. See the output schema section above.
Can I use this for scheduled monitoring?
Yes. Enable skipReposts: true to skip listings seen in any previous run (90-day memory). Combine with maxAgeMinutes or daysOld and a daily schedule for a continuous fresh-jobs feed.
Can I use it with the Apify API or MCP?
Yes. All runs are accessible via the standard Apify API. For MCP/AI agent use, enable compactOutput: true to keep payload sizes manageable.
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