{
  "openapi": "3.0.1",
  "info": {
    "title": "JobsDB Jobs Scraper — HK & Thailand Hiring Data",
    "description": "Scrape public JobsDB listings in Hong Kong and Thailand for recruiting and hiring research. Returns validated jobs with employer, location, salary, classification, description, dates, and apply URL. Not for private candidate or applicant data. /bin/zsh.00375 per persisted job plus platform usage.",
    "version": "1.3",
    "x-build-id": "twR5fj8jGEQnXa6Qz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~jobsdb-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-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/khadinakbar~jobsdb-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-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/khadinakbar~jobsdb-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Job search keywords",
            "type": "string",
            "description": "Use this when you need a public JobsDB keyword search, for example 'senior data engineer'. Enter ordinary job-search text up to 120 characters. The default is 'software engineer'. This is not a JobsDB URL or applicant name.",
            "default": "software engineer"
          },
          "country": {
            "title": "JobsDB country",
            "enum": [
              "HK",
              "TH"
            ],
            "type": "string",
            "description": "Use this when choosing the public JobsDB market to search. Select HK for Hong Kong or TH for Thailand, for example 'HK'. The default is HK. This is not a city or an all-country mode.",
            "default": "HK"
          },
          "location": {
            "title": "Location filter",
            "type": "string",
            "description": "Use this when narrowing a JobsDB search to a city or region, for example 'Central' or 'Bangkok'. Leave it empty to search the selected country. The default is empty. This is not a country code; choose country separately.",
            "default": ""
          },
          "postedWithinDays": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Use this when you need recent JobsDB listings. Select a number of days such as '7', or 'any' to retain every listing returned by the target. The default is 7 days. Listings without an exposed timestamp are retained because the actor cannot truthfully infer their age.",
            "default": "7"
          },
          "sortBy": {
            "title": "Sort preference",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Use this when choosing JobsDB's public keyword order. Select 'date' for newest available listings or 'relevance' for the target's keyword ordering. The default is date. This is a search preference, not a guarantee that the target exposes all ranking signals.",
            "default": "date"
          },
          "maxResults": {
            "title": "Maximum job records",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Use this when capping returned records and Pay per event charges. Enter an integer from 1 to 500, for example 50. The default is 20 and the maximum event charge is displayed at run start. This is not a page count and cannot return over 500 rows.",
            "default": 20
          },
          "includeJobDetails": {
            "title": "Include job details",
            "type": "boolean",
            "description": "Use this when you want the actor to visit each selected public job page for a fuller description. Set true for richer records or false for faster search-result records. The default is true. This does not bypass a login wall or retrieve applicant information.",
            "default": true
          },
          "startUrls": {
            "title": "Public JobsDB search URLs",
            "type": "array",
            "description": "Use this when you need to scrape one or more known public JobsDB pages instead of generating a keyword search. Each entry must be an hk.jobsdb.com or th.jobsdb.com URL, for example 'https://hk.jobsdb.com/software-engineer-jobs'. Leave empty to use keywords, country, and location. This is not for job-board URLs from other sites.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "JobsDB URL",
                  "type": "string",
                  "description": "Public JobsDB search or vacancy URL on an allowed Hong Kong or Thailand host."
                }
              },
              "required": [
                "url"
              ]
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}