{
  "openapi": "3.0.1",
  "info": {
    "title": "Seek & Jobstreet Jobs Scraper (AU, NZ, MY, SG, ID, PH)",
    "description": "Scrape Seek and Jobstreet job ads from the public JSON API: title, company, salary, location, category, work type, description, company profile. No proxy needed. $0.40 per 1,000 jobs.",
    "version": "0.1",
    "x-build-id": "8zFoteXsyHS1aKfCv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/praguedatalab~seek-jobstreet-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-praguedatalab-seek-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/praguedatalab~seek-jobstreet-scraper/runs": {
      "post": {
        "operationId": "runs-sync-praguedatalab-seek-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/praguedatalab~seek-jobstreet-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-praguedatalab-seek-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": {
          "query": {
            "title": "Search term",
            "type": "string",
            "description": "Job title, skill or any words from the ad. Several searches: <code>[\"data engineer\", \"data analyst\"]</code> (a JSON list) or use <code>queries</code>. Empty = all jobs. <code>searchTerm</code> is accepted too."
          },
          "country": {
            "title": "Country",
            "enum": [
              "AU",
              "NZ",
              "MY",
              "SG",
              "ID",
              "PH",
              "HK",
              "TH",
              "australia",
              "new zealand",
              "malaysia",
              "singapore",
              "indonesia",
              "philippines",
              "hongkong",
              "thailand"
            ],
            "type": "string",
            "description": "Which SEEK site to search. The lower-case names are the values used by websift/seek-job-scraper. Several countries: use <code>countries</code>."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, suburb or postcode as SEEK writes it. Examples: <code>All Sydney NSW</code>, <code>Melbourne VIC</code>, <code>Auckland</code>, <code>Kuala Lumpur</code>, <code>Singapore</code>. Empty = the whole country. Several places: a JSON list or use <code>locations</code>."
          },
          "maxResults": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of jobs saved in total (you pay per job). 0 = as many as possible (capped at 5,000). SEEK serves at most 550 jobs per search; use several queries, locations or categories for more. <code>maxItems</code> is accepted too."
          },
          "queries": {
            "title": "Search terms (list)",
            "type": "array",
            "description": "Several search terms, one search each. Jobs found twice are saved once.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (list)",
            "type": "array",
            "description": "Search several SEEK sites in one run. Added to <code>country</code>.",
            "items": {
              "type": "string",
              "enum": [
                "AU",
                "NZ",
                "MY",
                "SG",
                "ID",
                "PH",
                "HK",
                "TH"
              ],
              "enumTitles": [
                "Australia (seek.com.au)",
                "New Zealand (nz.seek.com)",
                "Malaysia (my.jobstreet.com)",
                "Singapore (sg.jobstreet.com)",
                "Indonesia (id.jobstreet.com)",
                "Philippines (ph.jobstreet.com)",
                "Hong Kong (hk.jobsdb.com)",
                "Thailand (th.jobsdb.com)"
              ]
            }
          },
          "locations": {
            "title": "Locations (list)",
            "type": "array",
            "description": "Several places, one search each (for every query and country).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "SEEK, Jobstreet or JobsDB search URLs copied from the browser (<code>https://www.seek.com.au/software-jobs/in-All-Sydney-NSW/full-time?daterange=7</code>) or job URLs (<code>https://nz.seek.com/job/12345678</code>). When set, query, country and location are ignored. <code>searchUrl</code> is accepted too.",
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety bound per search, in pages of about 22 jobs (25 pages = the 550 jobs SEEK serves).",
            "default": 25
          },
          "sortMode": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Most relevant first, or newest first. <code>sortBy</code> (KeywordRelevance, ListedDate) is accepted too."
          },
          "postedWithinDays": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only jobs posted in the last N days. The leaders' <code>dateRange</code> is accepted too, as text (<code>\"7\"</code>) or as a number (<code>7</code>, any number of days up to 365); it is not declared in this form because the two leaders disagree on its type."
          },
          "workType": {
            "title": "Work type",
            "enum": [
              "",
              "242",
              "243",
              "244",
              "245"
            ],
            "type": "string",
            "description": "Employment type. <code>workTypes</code> (a list of fulltime, parttime, contract, casual) is accepted too."
          },
          "workArrangement": {
            "title": "Work arrangement",
            "enum": [
              "",
              "1",
              "2",
              "3"
            ],
            "type": "string",
            "description": "On-site, hybrid or remote. <code>workArrangements</code> (a list of on-site, hybrid, remote) is accepted too."
          },
          "classification": {
            "title": "Category (role family)",
            "enum": [
              "",
              "1200",
              "6251",
              "6304",
              "1203",
              "1204",
              "7019",
              "6163",
              "1206",
              "6076",
              "6263",
              "6123",
              "1209",
              "6205",
              "1210",
              "1211",
              "1212",
              "6317",
              "6281",
              "1214",
              "1216",
              "6092",
              "6008",
              "6058",
              "1220",
              "6043",
              "6362",
              "1223",
              "6261",
              "6246",
              "1225"
            ],
            "type": "string",
            "description": "SEEK role family. The true/false category switches of websift/seek-job-scraper (<code>accounting</code>, <code>accounts-payable</code>…) are accepted too."
          },
          "subClassification": {
            "title": "Sub-category",
            "type": "string",
            "description": "SEEK sub-category id (<code>6286</code> = Database Development & Administration), name or slug (<code>developers-programmers</code>). Pair it with its category."
          },
          "salaryMin": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "SEEK's own salary filter, in the local currency. Annual on Seek, monthly on Jobstreet and JobsDB (<code>salaryType</code>: annual, monthly or hourly). 0 = no limit."
          },
          "salaryMax": {
            "title": "Maximum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Upper end of the salary filter. 0 = no limit."
          },
          "includeKeywords": {
            "title": "Keep only jobs with…",
            "type": "array",
            "description": "Keep a job only if it contains at least one of these words anywhere in the ad.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Drop jobs with…",
            "type": "array",
            "description": "Drop a job if its title, company, teaser, bullet points or description contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "fromDate": {
            "title": "Posted from",
            "type": "string",
            "description": "ISO date or date-time, for example <code>2026-10-01</code>. Empty = no limit."
          },
          "toDate": {
            "title": "Posted until",
            "type": "string",
            "description": "ISO date or date-time. A bare date means that whole day. Empty = no limit."
          },
          "maxAgeMinutes": {
            "title": "Maximum age (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs posted within this many minutes before the run. 0 = no limit."
          },
          "includeDetails": {
            "title": "Include full details",
            "type": "boolean",
            "description": "Read each ad for the full description (text, HTML, Markdown), expiry date and advertiser. Same price either way.",
            "default": true
          },
          "includeCompanyProfile": {
            "title": "Include company profile",
            "type": "boolean",
            "description": "Add industry, size, website, description and review rating when the advertiser has a company profile. Needs full details.",
            "default": true
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "<code>all</code> keeps description (text), descriptionHtml and descriptionMarkdown; the others keep only that one.",
            "default": "all"
          },
          "descriptionMaxLength": {
            "title": "Description max length",
            "minimum": 0,
            "type": "integer",
            "description": "Cut descriptions to this many characters. 0 = keep everything.",
            "default": 0
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Keep only the core fields: id, title, company, location, salary, category, work type, date, link. Good for AI agents.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Drop empty fields",
            "type": "boolean",
            "description": "Remove null, empty text and empty list fields from each row.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: SEEK answers from Apify's datacenter servers. Set a proxy only if your runs get blocked.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}