JobsDB Jobs Scraper — HK & Thailand Hiring Data avatar

JobsDB Jobs Scraper — HK & Thailand Hiring Data

Pricing

from $3.75 / 1,000 jobsdb job record scrapeds

Go to Apify Store
JobsDB Jobs Scraper — HK & Thailand Hiring Data

JobsDB Jobs Scraper — HK & Thailand Hiring Data

Scrape public JobsDB listings in Hong Kong and Thailand for recruiting and hiring research. Each job has employer, location, salary, classification, description, dates and apply URL.

Pricing

from $3.75 / 1,000 jobsdb job record scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

16 days ago

Last modified

Share

What is JobsDB Jobs Scraper — HK & Thailand Hiring Data?

JobsDB Jobs Scraper — HK & Thailand Hiring Data returns one dataset row per public JobsDB job listing in Hong Kong or Thailand: job ID, title, location, market, salary text with parsed minimum, maximum and period when a range is listed, description, and the direct job URL, plus employer, work type and classification fields when the public page shows them. Recruiters, talent intelligence teams, salary researchers and AI agents use it to track hiring demand by role, area and recency, from a keyword search or from known JobsDB search URLs.

Why recruiters use this JobsDB scraper

  • Two markets in one Actor. country switches between Hong Kong (HK) and Thailand (TH).
  • Recency built in. postedWithinDays keeps listings from the last 1, 3, 7, 14 or 30 days, and sortBy orders by date or relevance.
  • Salary as numbers. When a listing shows a range, salaryMin, salaryMax and salaryPeriod are parsed from salaryText.
  • Fuller descriptions on demand. includeJobDetails visits each job page for its description.
  • Saved searches welcome. startUrls reuses any public hk.jobsdb.com or th.jobsdb.com search page you already filtered in the browser.

Best fit for this Actor

  • Best fit for recruiter sourcing lists, hiring-demand monitoring and salary benchmarking in Hong Kong and Thailand.
  • Designed for public JobsDB listings, collected through country-matched residential proxies.
  • Use a specific role and location for focused results, and postedWithinDays set to any when you want every listing the search returns.
  • To cover other Southeast Asian markets, continue with JobStreet Jobs Scraper using the same keywords.
  • When you want company career pages alongside job boards, use Career Site Job Listing Scraper for the employers on your list.

Example workflow: from a role to a salary benchmark

A recruiting agency in Hong Kong starts with keywords set to data engineer, country set to HK, postedWithinDays at 14 and maxResults at 100, with includeJobDetails on. The dataset returns each listing's title, location, salaryText, salaryMin, salaryMax and jobUrl. They keep rows with a parsed salary range, compare ranges by district and seniority in the title, and share a benchmark sheet with their client. They then schedule the same input weekly and compare new listings to spot teams that are scaling up.

Input

{
"keywords": "data engineer",
"country": "HK",
"location": "Central",
"postedWithinDays": "7",
"sortBy": "date",
"maxResults": 50,
"includeJobDetails": true
}
FieldTypeWhat it controls
keywordsstringJob search text, such as software engineer. Required.
countrystringHK for Hong Kong or TH for Thailand. Default HK.
locationstringCity or region within the market, such as Central or Bangkok.
postedWithinDaysstringany, 1, 3, 7, 14 or 30. Default 7.
sortBystringdate or relevance. Default date.
maxResultsintegerCap on job records saved, from 1 to 500. Default 20.
includeJobDetailsbooleanVisit each job page for a fuller description. Default true.
startUrlsarrayPublic hk.jobsdb.com or th.jobsdb.com search or job pages.

Output

One row per job. Fields the public page leaves out stay null.

FieldWhat it contains
jobId, title, jobUrlJob identity and direct link
location, countryLocation text and market code
salaryTextSalary text as shown on the listing
salaryMin, salaryMax, salaryPeriod, salaryCurrencyParsed salary range when one is listed
descriptionListing teaser or detail-page description
companyName, companyUrlEmployer, when the public page shows it
workType, workArrangementEmployment type and workplace arrangement, when shown
classification, subClassificationJobsDB role category, when shown
postedAt, postedTextPosting date, when shown
sourceUrl, scrapedAtThe search page and collection time

Example row:

{
"jobId": "94983267",
"title": "Fresh Graduate Software Engineer /Electronic Engineering Manager(Urgent )",
"companyName": null,
"companyUrl": null,
"location": "Wong Chuk Hang, Southern District",
"country": "HK",
"salaryText": "$20,000 – $30,000 per month",
"salaryCurrency": null,
"salaryMin": 20000,
"salaryMax": 30000,
"salaryPeriod": "month",
"workType": null,
"workArrangement": null,
"classification": null,
"subClassification": null,
"description": "Embedded Software Engineer (Hong Kong Based), 5 Days, Location Wong Chuk Hang ( Near MTR), Salary ( 20-28K)Nego",
"jobUrl": "https://hk.jobsdb.com/job/94983267",
"postedAt": null,
"postedText": null,
"sourceUrl": "https://hk.jobsdb.com/software-engineer-jobs?sortmode=ListedDate&daterange=7",
"scrapedAt": "2026-10-01T01:33:16.110Z"
}

Each run also writes OUTPUT and RUN_SUMMARY records to the default key-value store with the run outcome and totals.

Pricing

This Actor uses Pay per event plus Apify platform usage. Each job saved is one JobsDB job record scraped event, and each run has one Actor Start event plus the platform and residential proxy usage of the run. For example, a weekly search capped at 50 jobs is up to 50 job events plus the start event and usage. maxResults doubles as a spending limit. The live Pricing tab on this page shows the current event prices.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~jobsdb-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": "accountant", "country": "TH", "location": "Bangkok", "maxResults": 30}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/jobsdb-jobs-scraper").call(run_input={"keywords": "data engineer", "country": "HK", "maxResults": 50})
ranged = [j for j in client.dataset(run["defaultDatasetId"]).iterate_items() if j.get("salaryMin")]
for job in ranged:
print(job["title"], job["salaryMin"], job["salaryMax"], job["salaryPeriod"])

Use with AI agents (MCP)

Connect the Actor to Claude, ChatGPT or Cursor through Apify MCP and ask:

Find up to 40 data engineer jobs posted on JobsDB Hong Kong in the last 14 days and summarize the salary ranges by area, with links.

The agent sets keywords, country, postedWithinDays and maxResults, reads rows with get-dataset-items, groups jobs with a parsed salaryMin by location, and cites each jobUrl. It can check OUTPUT.outcome to tell a quiet search from a full one, and each saved job is one event, so maxResults keeps the cost of the request predictable.

Best results

Starting situationHelpful actionExpected outcome
Testing a new queryStart with maxResults at 20 to 50A quick read on result quality
Salary researchKeep rows where salaryMin is setComparable numeric ranges
A narrow searchAdd location and a specific job titleFocused, relevant listings
Few resultsSet postedWithinDays to any and broaden keywordsMore listings per run
Faster runsSet includeJobDetails to falseSearch-card rows only
A saved browser searchPaste it into startUrlsThe same filters, collected

Builder's note

I built this around the questions recruiters in Hong Kong and Bangkok ask most: who is hiring for this role right now, where, and for how much. I parse salary into numbers only when a real range is listed and keep the original text beside it, so benchmarks are built from listed figures rather than guesses.

FAQ

Which countries does it cover?

Hong Kong and Thailand, set with country.

Why is salaryMin empty on some jobs?

Many employers leave salary off their listings. salaryText keeps whatever the listing shows.

Can I reuse a search I made on the JobsDB website?

Yes. Paste the public search URL into startUrls.

Responsible use

This Actor collects public job-posting data for recruiting, research and analytics. Respect JobsDB's terms and applicable employment and data-protection laws. It collects no candidate, applicant or account data. JobsDB is a trademark of its owner; this independent Actor is not affiliated with or endorsed by JobsDB.