# JobsDB Jobs Scraper - Asia Hiring Data (`benthepythondev/jobsdb-jobs-scraper`) Actor

Scrape JobsDB Hong Kong and Thailand jobs: title, company, location, work type, salary, classification, bullet points and URL.

- **URL**: https://apify.com/benthepythondev/jobsdb-jobs-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## JobsDB Jobs Scraper - Hong Kong & Thailand Hiring Data

Scrape job listings from **JobsDB**, one of the main employment marketplaces in Hong Kong and Thailand. Get job title, hiring company, advertiser ID, location, work type, work arrangement, classification, salary label, bullet points, teaser text, listing date, company logo URL and direct job URL. Export the data to JSON, CSV or Excel, run it on a schedule, call it through the API, or connect it to Make, Zapier, n8n, Airtable, Google Sheets, a recruiting CRM or your own job-board backend.

### What is the JobsDB Jobs Scraper?

JobsDB is a major hiring marketplace for Asian job markets, especially Hong Kong and Thailand. Employers use it to publish roles across software engineering, finance, accounting, hospitality, sales, logistics, operations, customer support, healthcare, education and professional services. For recruiters, staffing agencies, investors and B2B sales teams, JobsDB listings are a live signal of which companies are hiring, what roles they need, and which skills are gaining demand in each market.

This actor extracts JobsDB search results through the public job-search JSON endpoints used by the site. It does not need a browser, proxy, account or paid unblocker. That keeps runs fast, low-cost and reliable on Apify, which matters for scheduled monitoring, daily auto-tests and production workflows.

### What data does it extract?

- **Job title**
- **Hiring company**
- **Advertiser ID**
- **Location**
- **Work type**
- **Work arrangement**
- **Classification and subclassification**
- **Salary label** when shown
- **Bullet points**
- **Teaser / summary text**
- **Listing date**
- **Posted-time label**
- **Promoted listing flag**
- **Tags** such as immediate start when shown
- **Company logo URL**
- **Direct JobsDB job URL**
- **Search URL used**

### Input

| Field | Type | Description |
|-------|------|-------------|
| `keyword` | string | Role, skill or search keyword. |
| `location` | string | Optional location such as Hong Kong, Kowloon, Bangkok or Chon Buri. |
| `countries` | array | `hk` for Hong Kong and `th` for Thailand. |
| `maxResults` | integer | Maximum jobs returned per country. |

### Example input

```json
{
  "keyword": "python",
  "location": "Hong Kong",
  "countries": ["hk"],
  "maxResults": 50
}
````

For Thailand:

```json
{
  "keyword": "data analyst",
  "location": "Bangkok",
  "countries": ["th"],
  "maxResults": 50
}
```

For both markets:

```json
{
  "keyword": "sales manager",
  "countries": ["hk", "th"],
  "maxResults": 100
}
```

### Output

Each dataset item is one JobsDB job:

```json
{
  "job_id": "81234567",
  "title": "Python Developer",
  "company": "Example Company Limited",
  "advertiser_id": "123456",
  "location": "Hong Kong",
  "work_type": "Full time",
  "work_arrangement": "Hybrid",
  "classification": "Information & Communication Technology",
  "subclassification": "Developers/Programmers",
  "salary": "HK$35,000 - HK$50,000 per month",
  "bullet_points": ["Python backend role", "Cloud platform", "Hybrid work"],
  "teaser": "Join a growing engineering team building internal platforms...",
  "listing_date": "2026-07-02T00:00:00Z",
  "listing_date_display": "1d ago",
  "is_promoted": false,
  "tags": [],
  "company_logo_url": "https://...",
  "url": "https://hk.jobsdb.com/job/81234567",
  "search": "https://hk.jobsdb.com/api/jobsearch/v5/search?siteKey=HK-Main&keywords=python&page=1"
}
```

### Use cases

- **Recruiting market intelligence** - monitor hiring demand by role, skill, market and classification.
- **Lead generation** - identify Hong Kong and Thailand companies actively hiring, a strong buying signal for HR software, payroll, staffing, training, SaaS, IT services and outsourcing.
- **Salary research** - collect published salary labels where JobsDB exposes compensation.
- **Job-board aggregation** - feed JobsDB search cards into a niche job board, newsletter or internal talent portal.
- **Market expansion research** - compare hiring activity between Hong Kong and Thailand before opening sales or recruiting campaigns.
- **Competitive hiring alerts** - schedule searches for competitors, industries or role families and send the results to Slack, email or a CRM.

### Why use this actor?

The actor is designed around JobsDB's structured search response instead of brittle browser automation. A plain HTTP engine means lower compute usage, faster runs and fewer moving parts. The output is normalized into consistent columns, so you can filter by company, classification, location, work arrangement or salary label without writing your own parser.

It also supports multiple JobsDB country sites in one run. Use `countries: ["hk"]` for Hong Kong, `countries: ["th"]` for Thailand, or both for regional reporting. Because each result includes the exact source search URL, datasets remain auditable when used for recruiting operations, lead generation or market dashboards.

### Tips

- Use specific role keywords for cleaner datasets, such as `python developer`, `data analyst`, `accountant`, `sales manager`, `engineer` or `customer service`.
- Add a `location` when you care about one city or metro area.
- Use `countries: ["hk", "th"]` to compare Hong Kong and Thailand in one run.
- De-duplicate downstream by `job_id` or `url`.
- Combine this with contact-enrichment actors when building sales outreach lists from hiring signals.

### FAQ

**Does this require a JobsDB account?** No. It reads public search-result data.

**Does it use a browser or proxy?** No. It calls the JSON search endpoint directly.

**Can I scrape both Hong Kong and Thailand?** Yes. Use `hk`, `th`, or both in the `countries` input.

**Does it include salary?** It returns JobsDB's salary label when the listing exposes one.

**Can I export the data?** Yes. Apify supports JSON, CSV, Excel, API access and webhooks.

**Is this useful for lead generation?** Yes. Active job postings are strong buying-signal data for many B2B services.

### You might also like

- [SEEK Jobs Scraper](https://apify.com/benthepythondev/seek-jobs-scraper) for Australia and New Zealand jobs.
- [StepStone Scraper](https://apify.com/benthepythondev/stepstone-scraper) for European jobs.
- [HiringCafe Scraper](https://apify.com/benthepythondev/hiring-cafe-scraper) for enriched global jobs.
- [BuiltIn Jobs Scraper](https://apify.com/benthepythondev/builtin-jobs-scraper) for tech jobs and salary ranges.
- [YC Jobs Scraper](https://apify.com/benthepythondev/yc-jobs-scraper) for startup jobs.

### Keywords

JobsDB scraper, JobsDB jobs scraper, JobsDB Hong Kong jobs API, JobsDB Thailand jobs scraper, Hong Kong jobs data, Thailand jobs data, Asia jobs scraper, recruitment data, hiring signals, scrape JobsDB jobs, export JobsDB jobs to CSV, Apify jobs scraper, Hong Kong job market data, Thailand job market data.

# Actor input Schema

## `keyword` (type: `string`):

Role, skill or search keyword.

## `location` (type: `string`):

Optional JobsDB location filter, such as Hong Kong, Kowloon, Bangkok or Chon Buri.

## `countries` (type: `array`):

JobsDB country sites to query. Use hk for Hong Kong and th for Thailand.

## `maxResults` (type: `integer`):

Maximum jobs returned per country.

## Actor input object example

```json
{
  "keyword": "python",
  "countries": [
    "hk",
    "th"
  ],
  "maxResults": 10
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "python",
    "countries": [
        "hk",
        "th"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/jobsdb-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "python",
    "countries": [
        "hk",
        "th",
    ],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/jobsdb-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "python",
  "countries": [
    "hk",
    "th"
  ],
  "maxResults": 10
}' |
apify call benthepythondev/jobsdb-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/jobsdb-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "JobsDB Jobs Scraper - Asia Hiring Data",
        "description": "Scrape JobsDB Hong Kong and Thailand jobs: title, company, location, work type, salary, classification, bullet points and URL.",
        "version": "1.0",
        "x-build-id": "M6Zg75LAGhOs4WmzM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~jobsdb-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-jobsdb-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~jobsdb-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-jobsdb-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~jobsdb-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-jobsdb-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Role, skill or search keyword.",
                        "default": "python"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional JobsDB location filter, such as Hong Kong, Kowloon, Bangkok or Chon Buri."
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "JobsDB country sites to query. Use hk for Hong Kong and th for Thailand.",
                        "default": [
                            "hk"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results per country",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum jobs returned per country.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
