{
  "openapi": "3.0.1",
  "info": {
    "title": "JobStreet & JobsDB Jobs Scraper (Asia)",
    "description": "Scrape JobStreet (Malaysia, Singapore, Philippines, Indonesia) and JobsDB (Hong Kong, Thailand) jobs: title, company, location, salary text, dates, optional full ad. Reads every list version it finds across visitors, not just one. Pay per job.",
    "version": "0.1",
    "x-build-id": "aoSt6NkAttVu9aVDd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hexagone-data~jobstreet-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hexagone-data-jobstreet-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/hexagone-data~jobstreet-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hexagone-data-jobstreet-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/hexagone-data~jobstreet-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hexagone-data-jobstreet-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "JobStreet or JobsDB search results URLs exactly as your browser shows them, filters included (e.g. https://my.jobstreet.com/nurse-jobs/in-Kuala-Lumpur, https://sg.jobstreet.com/accountant-jobs/full-time?daterange=7, https://th.jobsdb.com/th/sales-jobs, https://hk.jobsdb.com/zh/accountant-jobs), or job URLs (https://ph.jobstreet.com/job/<id>). When given, keyword and its filters are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keyword": {
            "title": "Keyword (if no start URL)",
            "type": "string",
            "description": "Job search keywords, e.g. nurse, data analyst."
          },
          "location": {
            "title": "Location (keyword mode)",
            "type": "string",
            "description": "Where, as the site writes it: 'Kuala Lumpur', 'Cebu', 'Bangkok', 'Kowloon'. The site decides what the text means; the run summary tells which place was searched."
          },
          "country": {
            "title": "Country (keyword mode)",
            "enum": [
              "MY",
              "SG",
              "PH",
              "ID",
              "HK",
              "TH"
            ],
            "type": "string",
            "description": "MY, SG, PH, ID = JobStreet; HK, TH = JobsDB.",
            "default": "MY"
          },
          "language": {
            "title": "Language (keyword mode)",
            "enum": [
              "en",
              "id",
              "th",
              "zh"
            ],
            "type": "string",
            "description": "en = English on every site; id only on Indonesia, th only on Thailand, zh only on Hong Kong. It changes translated labels (work type, location, classification), not the list of jobs.",
            "default": "en"
          },
          "workTypes": {
            "title": "Work types (keyword mode)",
            "type": "array",
            "description": "Any of: full-time, part-time, contract-temp, casual-vacation.",
            "items": {
              "type": "string"
            }
          },
          "workArrangements": {
            "title": "Work arrangements (keyword mode)",
            "type": "array",
            "description": "Any of: on-site, hybrid, remote.",
            "items": {
              "type": "string"
            }
          },
          "classification": {
            "title": "Classification (keyword mode)",
            "type": "string",
            "description": "Classification id or slug as in the site URLs, e.g. 6281 or information-communication-technology."
          },
          "dateRange": {
            "title": "Listed in the last N days (keyword mode)",
            "minimum": 0,
            "type": "integer",
            "description": "1, 3, 7, 14 or 31 like the site; empty = any time."
          },
          "salaryMin": {
            "title": "Minimum salary (keyword mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs paying at least this (site filter salaryrange=<min>-)."
          },
          "salaryType": {
            "title": "Salary type (keyword mode)",
            "enum": [
              "annual",
              "monthly",
              "hourly"
            ],
            "type": "string",
            "description": "Period of the minimum salary (monthly is the site's default in Asia).",
            "default": "monthly"
          },
          "sortBy": {
            "title": "Sort (keyword mode)",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "relevance (site default) or date (newest first).",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Maximum number of jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Stops after this many unique jobs across all start URLs. 0 = no limit. You pay per delivered job.",
            "default": 500
          },
          "includeDetails": {
            "title": "Read each job's details",
            "type": "boolean",
            "description": "Off by default. When on, each delivered job's details are read once (the site's own job details API): full ad (HTML and text), status and expiry, apply type, employer questions, contacts found in the ad, video and branding, company profile (industry, size, website, rating, reviews, perks), suburb, state and postcode. Details are included in the price per job: no extra charge ($1.50 per 1,000 jobs with or without details).",
            "default": false
          },
          "allVersions": {
            "title": "Read every list version",
            "type": "boolean",
            "description": "On by default. The site serves different lists to different visitors (measured: 69 or 95 jobs for the same search, 122 together). When on, 9 other visitors are checked and every version with another total or jobs never seen is read, so you get more jobs for the same search, each one once, and pay for each. Field listVersion tells which version brought a job (1 = the first visitor). Off: one visitor only.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy by default: enough for the site's search and job details APIs on all 6 sites (measured 2026-11-02). A refused or timed-out request is retried with a new IP, up to 4 times.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}