# JobsDB Job Listings Scraper (x402)

> JobsDB Job Listings Scraper (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes structured job listings from JobsDB in Hong Kong or Thailand, returning filtered job data with titles, companies, apply URLs, and optional job details.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/jobsdb?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/jobsdb-job-listings-scraper-x402-b0caa723
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_dbawqnnxsvfQXPSger2O6

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability jobsdb-job-listings-scraper-x402-b0caa723 -d '<json body>'
```

Example prompt: Search JobsDB Hong Kong for software engineer jobs posted in the last 7 days, sorted by date, full-time only, and return up to 50 results with full job descriptions.

## When to prefer this

Use this endpoint when you need structured, filterable job listing data from JobsDB specifically (Hong Kong or Thailand markets), especially when you want salary filtering, keyword inclusion/exclusion, or full job description text. Prefer this over generic web scrapers when you need normalized job fields (title, company, applyUrl) rather than raw HTML, and when you only want to pay for successful, non-empty scrapes.

## Known failure modes

- Empty result set if keywords return no matches (not charged)
- Failed scrape due to JobsDB site changes or blocking (not charged)
- Invalid country code returns validation error
- salaryMin/salaryMax filters exclude all jobs if salary data is absent from listings
- Overly restrictive keyword filters (includeKeywords + excludeKeywords) yielding zero results
- maxPages set too low cutting off relevant results
- Rate limiting or connectivity issues with the upstream JobsDB site

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched jobs and an array of job items, each containing jobId, title, company, applyUrl, sourceUrl, canonicalUrl, sourceDomain, seekJobId, and optionally full description HTML, description text, and contact strings when includeDetails is true.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "query": {
   "type": "string",
   "description": "Job keywords, such as software engineer. A JSON-encoded list runs several searches."
  },
  "country": {
   "enum": [
    "HK",
    "TH"
   ],
   "type": "string",
   "default": "HK",
   "description": "JobsDB market to search."
  },
  "location": {
   "type": "string",
   "description": "Optional city, district, or region passed to the search endpoint."
  },
  "maxPages": {
   "type": "integer",
   "default": 5,
   "minimum": 0,
   "description": "Maximum search pages per source. Each page contains up to 20 jobs; 0 follows all available pages."
  },
  "sortMode": {
   "enum": [
    "",
    "ListedDate",
    "Relevance"
   ],
   "type": "string",
   "description": "Search ordering. Leave empty for the site's default ranking."
  },
  "workType": {
   "type": "string",
   "description": "Optional JobsDB work type code, such as 242 for full time."
  },
  "dateRange": {
   "enum": [
    "",
    "1",
    "3",
    "7",
    "14",
    "31"
   ],
   "type": "string",
   "description": "Limit listings by posting age using the site's date range code."
  },
  "salaryMax": {
   "type": "integer",
   "minimum": 0,
   "description": "Keep jobs whose advertised lower salary does not exceed this amount. Jobs without a numeric salary are excluded."
  },
  "salaryMin": {
   "type": "integer",
   "minimum": 0,
   "description": "Keep jobs whose advertised upper salary reaches this amount. Jobs without a numeric salary are excluded."
  },
  "startUrls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Optional JobsDB search URLs from the Hong Kong or Thailand site. Added to the keyword search."
  },
  "maxResults": {
   "type": "integer",
   "default": 25,
   "minimum": 0,
   "description": "Maximum jobs to save across all searches. 0 removes this cap."
  },
  "classification": {
   "type": "string",
   "description": "Optional JobsDB job classification ID."
  },
  "includeDetails": {
   "type": "boolean",
   "default": true,
   "description": "Fetch the public job detail query for description HTML, text, and contact strings."
  },
  "excludeKeywords": {
   "type": "string",
   "description": "Comma-separated terms; omit jobs containing any of them."
  },
  "includeKeywords": {
   "type": "string",
   "description": "Comma-separated terms that must all appear in the job fields. Full description is searched when enabled."
  },
  "workArrangement": {
   "ty
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "jobId": null,
    "title": null,
    "company": null,
    "applyUrl": null,
    "seekJobId": null,
    "sourceUrl": null,
    "canonicalUrl": null,
    "sourceDomain": null
   }
  ],
  "product": "jobsdb"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/jobsdb-job-listings-scraper-x402-b0caa723/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
