{
  "openapi": "3.0.1",
  "info": {
    "title": "JobStreet Scraper — JobStreet & JobsDB Jobs, Salary, Companies",
    "description": "JobStreet & JobsDB scraper: export jobs from Malaysia, Singapore, Philippines, Indonesia, Hong Kong and Thailand with full description, parsed salary, work type, classification, applicant count and company profile (industry, size, website, address). Search, filter or export whole sites. No login.",
    "version": "1.0",
    "x-build-id": "cxX73wX5kiMjjWDHk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~jobstreet-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-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/logiover~jobstreet-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-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/logiover~jobstreet-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Job titles, skills or keywords as you would type them on JobStreet or JobsDB, e.g. accountant, software engineer, nurse, sales executive. Put a phrase in double quotes for an exact match. Each term is one search on every chosen site. Leave empty to export every job on the chosen sites (combined with the filters below).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sites": {
            "title": "Sites (countries)",
            "uniqueItems": true,
            "type": "array",
            "description": "Which job sites to search. JobStreet: Malaysia, Singapore, Philippines, Indonesia. JobsDB: Hong Kong, Thailand. Empty = all six. Every job is saved once, labelled with its own country.",
            "items": {
              "type": "string",
              "enum": [
                "MY",
                "SG",
                "PH",
                "ID",
                "HK",
                "TH"
              ],
              "enumTitles": [
                "JobStreet Malaysia (my.jobstreet.com)",
                "JobStreet Singapore (sg.jobstreet.com)",
                "JobStreet Philippines (ph.jobstreet.com)",
                "JobStreet Indonesia (id.jobstreet.com)",
                "JobsDB Hong Kong (hk.jobsdb.com)",
                "JobsDB Thailand (th.jobsdb.com)"
              ]
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Optional. City, state or district as the site knows it: \"Kuala Lumpur\", \"Selangor\", \"Penang\", \"Central Region\" (Singapore), \"Makati City\", \"Metro Manila\", \"Jakarta Selatan\", \"Surabaya\", \"Kowloon\", \"Central and Western District\", \"Bangkok\". Every search term is combined with every location. A location the site does not know returns 0 jobs (it is not widened). Empty = whole country.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "classifications": {
            "title": "Classifications",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. JobStreet / JobsDB job classifications (the \"All classifications\" menu). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "1200",
                "6251",
                "6304",
                "1203",
                "7019",
                "1204",
                "6163",
                "1206",
                "6076",
                "6263",
                "6123",
                "1209",
                "6205",
                "1210",
                "1211",
                "1212",
                "6317",
                "6281",
                "1214",
                "1216",
                "6092",
                "6008",
                "6058",
                "1220",
                "6043",
                "6362",
                "1223",
                "6261",
                "6246",
                "1225"
              ],
              "enumTitles": [
                "Accounting",
                "Administration & Office Support",
                "Advertising, Arts & Media",
                "Banking & Financial Services",
                "CEO & General Management",
                "Call Centre & Customer Service",
                "Community Services & Development",
                "Construction",
                "Consulting & Strategy",
                "Design & Architecture",
                "Education & Training",
                "Engineering",
                "Farming, Animals & Conservation",
                "Government & Defence",
                "Healthcare & Medical",
                "Hospitality & Tourism",
                "Human Resources & Recruitment",
                "Information & Communication Technology",
                "Insurance & Superannuation",
                "Legal",
                "Manufacturing, Transport & Logistics",
                "Marketing & Communications",
                "Mining, Resources & Energy",
                "Real Estate & Property",
                "Retail & Consumer Products",
                "Sales",
                "Science & Technology",
                "Self Employment",
                "Sport & Recreation",
                "Trades & Services"
              ]
            },
            "default": []
          },
          "subClassifications": {
            "title": "Sub-classifications",
            "type": "array",
            "description": "Optional. Narrower classifications by name or id, e.g. \"Developers/Programmers\", \"Process Engineering\", \"Accounts Payable\", \"6281\". Names are matched exactly as the sites write them (391 known).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workTypes": {
            "title": "Work types",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Any of these work types (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract-temp",
                "casual-vacation"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract/Temp",
                "Casual/Vacation"
              ]
            },
            "default": []
          },
          "workArrangements": {
            "title": "Work arrangements",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. On-site, hybrid or remote (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "on-site",
                "hybrid",
                "remote"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote"
              ]
            },
            "default": []
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only jobs listed within this many days (the sites' \"Listed\" filter).",
            "default": "any"
          },
          "salaryMin": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. The sites' own pay filter, in the site's currency (RM, S$, ₱, Rp, HK$, ฿) for the period below. Note: the sites also match jobs whose employer entered a pay range but hides it — those rows come without a salary amount."
          },
          "salaryMax": {
            "title": "Maximum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Upper end of the pay filter (same currency and period)."
          },
          "salaryType": {
            "title": "Salary period for the filter",
            "enum": [
              "monthly",
              "annual",
              "hourly"
            ],
            "type": "string",
            "description": "Period of the minimum / maximum salary above.",
            "default": "monthly"
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Optional. Get one company's open jobs: its name exactly as the job ads show it (\"Grab\", \"Shopee Singapore Private Limited\"), its company page (https://my.jobstreet.com/companies/…-123456789), its \"jobs at this company\" page, or an advertiser id. Combined with the search terms and locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "JobStreet / JobsDB URLs",
            "type": "array",
            "description": "Optional. Paste pages straight from the sites: search results with their filters (https://my.jobstreet.com/engineer-jobs/in-Kuala-Lumpur?daterange=7, https://hk.jobsdb.com/jobs-in-accounting/full-time), single jobs (https://sg.jobstreet.com/job/95385012), company pages or \"jobs at this company\" pages. If you give only URLs, only the URLs are scraped.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Relevance (the sites' default) or newest first. Asking for every result returns the same jobs either way.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many unique jobs across all sites and searches. 0 = no limit (every matching job; the six sites together list about 300,000).",
            "default": 1000
          },
          "includeDetails": {
            "title": "Include job details",
            "type": "boolean",
            "description": "Reads each job's full record: complete description (text and HTML), expiry date, application questions, applicant count, contact e-mails written in the ad, and the company profile (industry, size, website, address, specialities, rating, perks, registration number). Read in batches of 20 jobs per request, so it costs little time. Off = the search card only (title, company, location, salary, teaser, bullet points).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used only as a fallback. The scraper calls JobStreet and JobsDB directly first (no proxy cost); if that is refused it switches to Apify datacenter proxies (a new address per request) and then to the proxy given here.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}