JobsDB Job Listings Scraper

Export public JobsDB job listings from Hong Kong and Thailand with job details, company data, salary labels, locations, and apply links.

Data fields

FieldTypeDescription
jobIdstringValue exported as jobId.
sourceUrlstringValue exported as sourceUrl.
titlestringValue exported as title.
companystring | nullValue exported as company.
companyIdstring | nullValue exported as companyId.
companyUrlstring | nullValue exported as companyUrl.
advertiserIdstring | nullValue exported as advertiserId.
locationstring | nullValue exported as location.

Input preview

keywordsJob title or keywords
locationLocation
countryJobsDB market
searchUrlsJobsDB search URLs
maxItemsMaximum listings

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

This JobsDB scraper exports public job listings from Hong Kong and Thailand for recruiting research, salary benchmarking, talent-market monitoring, and repeatable job-search exports. Use this JobsDB jobs scraper to turn a public search into structured listings, and use the JobsDB API-compatible Actor interface in schedules, workflows, or MCP clients.

What this Actor exports

Each result is a public JobsDB listing normalized into a consistent record. It keeps the source URL and search URL alongside the job, company, location, salary, work arrangement, posting date, classifications, public description teaser, requirements bullets, and apply link.

Who is it for?

  • Recruiters building a current shortlist of public openings.
  • Talent teams comparing job titles, locations, and salary labels.
  • Analysts tracking demand by role, company, or market.
  • Operations teams that need a bounded export for a recurring JobsDB search.

Input recipes

Start with a keyword search:

{
  "keywords": "software engineer",
  "country": "HK",
  "maxItems": 10
}

Search Thailand with a location:

{
  "keywords": "data analyst",
  "location": "Bangkok",
  "country": "TH",
  "maxItems": 10
}

Reuse a public JobsDB search URL:

{
  "searchUrls": ["https://hk.jobsdb.com/software-engineer-jobs"],
  "maxItems": 10
}

Input settings

Setting Description
keywords Job title, skill, or other JobsDB search terms.
location Optional city or region filter.
country JobsDB market: HK for Hong Kong or TH for Thailand.
searchUrls Optional public JobsDB search URL. The first URL supplies its search context.
maxItems Maximum listings to export, from 1 to 100.

Output example

{
  "jobId": "12345678",
  "sourceUrl": "https://hk.jobsdb.com/job/12345678",
  "title": "Software Engineer",
  "company": "Example Company",
  "location": "Hong Kong",
  "employmentType": "Full time",
  "salary": "HK$30K–45K",
  "postedDate": "2026-09-03T00:00:00.000Z",
  "category": "Information & Communication Technology",
  "applyUrl": "https://hk.jobsdb.com/job/12345678",
  "searchUrl": "https://hk.jobsdb.com/software-engineer-jobs"
}

Examples and practical use cases

Use the input recipes above to create a small validation export first. Common workflows include weekly role monitoring, company hiring research, location-specific salary reviews, and exporting a saved public JobsDB search to a spreadsheet or database.

Tips for better results

  • Use a specific title or skill phrase for a focused export.
  • Add location when a country-wide result set is too broad.
  • Set country explicitly unless your public search URL already identifies the market.
  • Keep maxItems modest for a first run, then scale a verified query.
  • Preserve searchUrl with downstream exports so the search context remains auditable.

Data availability and limits

The Actor processes anonymous public listings only; it does not require account credentials or collect private job data. JobsDB does not publish every optional field on every listing, so salary, company metadata, classifications, and requirement bullets can be absent. The description field represents the public listing teaser rather than a private or account-only page.

API usage

Node.js

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/jobsdb-jobs-scraper").call({
  keywords: "data analyst",
  country: "TH",
  maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("fetch_cat/jobsdb-jobs-scraper").call(run_input={
    "keywords": "software engineer", "country": "HK", "maxItems": 10
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl "https://api.apify.com/v2/acts/fetch_cat~jobsdb-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":"software engineer","country":"HK","maxItems":10}'

MCP and AI agents

Add this Actor to Claude Code with the scoped CLI command:

claude mcp add --transport http apify-jobsdb "https://mcp.apify.com?tools=fetch_cat/jobsdb-jobs-scraper"

Or add the scoped tools URL to another MCP client:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/jobsdb-jobs-scraper"
    }
  }
}

Example prompts:

  • “Export 20 public Hong Kong software engineer openings from JobsDB.”
  • “Find 10 Thailand data analyst listings on JobsDB and return their salary labels.”
  • “Run this public JobsDB search URL and keep the source URL for each listing.”

Support

Open an Apify issue with the affected public URL, the non-sensitive input, and a short description of the unexpected result. Do not include credentials.

Common questions

Questions and answers reused from the canonical actor README.

Which markets are supported?

Hong Kong (HK) and Thailand (TH).

Can I provide a JobsDB search URL?

Yes. Put public result URLs in searchUrls; the first URL supplies the search context.

Why are some fields empty?

JobsDB may not publish salary, company metadata, classifications, or requirement bullets for every listing.

Does this Actor require a JobsDB account?

No. V1 is limited to anonymous public listing data.

Can I export more than 100 listings?

The current per-run limit is 100. Use multiple focused searches for larger monitoring workflows.