{
  "openapi": "3.0.1",
  "info": {
    "title": "SEEK, JobStreet & JobsDB Jobs Scraper",
    "description": "Scrape jobs from SEEK (Australia, New Zealand), JobStreet (Malaysia, Singapore, Philippines, Indonesia) and JobsDB (Hong Kong, Thailand): full descriptions, pay as numbers in the right currency, applicant counts and change tracking between runs. No 550-job limit; many searches or links per run.",
    "version": "0.1",
    "x-build-id": "aqqDFqzJQVj7ZQvyZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~seek-jobstreet-jobsdb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-seek-jobstreet-jobsdb-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/akhil_rajesh~seek-jobstreet-jobsdb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-seek-jobstreet-jobsdb-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/akhil_rajesh~seek-jobstreet-jobsdb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-seek-jobstreet-jobsdb-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": {
          "searchQuery": {
            "title": "Keywords",
            "type": "string",
            "description": "Job title, skill or company, as you would type it on SEEK, e.g. 'software engineer', 'registered nurse', 'accountant'. Leave empty to list every job in the location."
          },
          "country": {
            "title": "Country",
            "enum": [
              "AU",
              "NZ",
              "MY",
              "SG",
              "PH",
              "ID",
              "HK",
              "TH"
            ],
            "type": "string",
            "description": "Which SEEK job board to search.",
            "default": "AU"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A city, suburb, region or state in the chosen country, e.g. 'Sydney', 'Melbourne VIC', 'Western Australia', 'Auckland', 'Kuala Lumpur', 'Metro Manila', 'Bangkok'. State abbreviations such as 'NSW' or 'VIC' work. Type 'remote' for remote jobs anywhere in the country. Leave empty for the whole country. If SEEK doesn't recognise the place, a simpler form is tried ('Perth, Western Australia' becomes 'Perth WA'), and the status says so."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop once this many jobs have been collected, across all searches in the run. Each result is charged, so this is also your cost ceiling. One SEEK search shows at most 550 jobs; above that the Actor splits the search by work type and category to reach more.",
            "default": 100
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only jobs listed in this period. 'Today' follows the country's own calendar day, so early in its morning it holds few jobs.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Relevance to your keywords, or newest listings first. Past 550 jobs a search is split into narrower ones, and 'Newest first' then keeps to the fewest recent days that hold enough jobs (the last 1, 3, 7, 14 or 30), rather than a strict order by date.",
            "default": "relevance"
          },
          "extraKeywords": {
            "title": "More keywords",
            "type": "array",
            "description": "Further keywords to search as well as Keywords, e.g. 'data analyst', 'data engineer'.",
            "items": {
              "type": "string"
            }
          },
          "extraLocations": {
            "title": "More locations",
            "type": "array",
            "description": "Further places in the same country, e.g. 'Melbourne', 'Brisbane'. Each is searched with every keyword.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "SEEK, JobStreet or JobsDB links",
            "type": "array",
            "description": "Instead of keywords, paste search result pages (e.g. https://www.seek.com.au/data-analyst-jobs/in-All-Sydney-NSW?daterange=7) or job ads (https://www.seek.com.au/job/12345678), from any of the eight sites. A search link keeps the filters in its address, and the filters below fill in any it doesn't set; job ads are fetched directly. When links are given, Keywords, Location and the two fields above are ignored.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "workTypes": {
            "title": "Work type",
            "type": "array",
            "description": "Only these kinds of employment.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "contract",
                "casual"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract/Temp",
                "Casual/Vacation"
              ]
            }
          },
          "workArrangements": {
            "title": "Work arrangement",
            "type": "array",
            "description": "Only on-site, hybrid or remote jobs, as the employer marked them. When set, this wins over 'remote' typed in Location.",
            "items": {
              "type": "string",
              "enum": [
                "onSite",
                "hybrid",
                "remote"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote"
              ]
            }
          },
          "classifications": {
            "title": "Job category",
            "type": "array",
            "description": "Only jobs in these SEEK categories (the same 30 in every country).",
            "items": {
              "type": "string",
              "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"
              ],
              "enumTitles": [
                "Accounting",
                "Administration & Office Support",
                "Advertising, Arts & Media",
                "Banking & Financial Services",
                "Call Centre & Customer Service",
                "CEO & General Management",
                "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"
              ]
            }
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs paying at least this much, in the country's currency, using SEEK's own salary filter."
          },
          "maxSalary": {
            "title": "Maximum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs paying at most this much, in the country's currency, using SEEK's own salary filter. Leave empty for no upper limit."
          },
          "salaryType": {
            "title": "Salary period",
            "enum": [
              "",
              "annual",
              "monthly",
              "hourly"
            ],
            "type": "string",
            "description": "The period Minimum and Maximum salary are in. Leave on Automatic for yearly pay in Australia and New Zealand and monthly pay elsewhere.",
            "default": ""
          },
          "radiusKm": {
            "title": "Distance from the location",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How far around a town, suburb or city centre to search, 1 to 100 km. SEEK's own default is 50 km. Areas and regions such as 'All Sydney NSW', 'Parramatta & Western Suburbs' or 'Queensland' always cover their whole area."
          },
          "includeKeywords": {
            "title": "Title must include",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words or phrases (whole words, any case), e.g. 'senior', 'lead'. Jobs left out are not charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Title must not include",
            "type": "array",
            "description": "Leave out jobs whose title contains any of these words or phrases, e.g. 'intern', 'junior'. Jobs left out are not charged.",
            "items": {
              "type": "string"
            }
          },
          "keywordsInDescription": {
            "title": "Check the description too",
            "type": "boolean",
            "description": "Apply the two word lists above to each job's full description as well as its title. Needs each job's details, so runs take a little longer.",
            "default": false
          },
          "requireContact": {
            "title": "Only jobs with contact details",
            "enum": [
              "none",
              "any",
              "email",
              "phone"
            ],
            "type": "string",
            "description": "Keep only ads that publish an email address or phone number, and add those details to the output. How many do varies a lot: about a third of Sydney software ads, but only about 1 in 40 in Malaysia and the Philippines, where a run reads many jobs' details to find a few. They can belong to a person, so use them only as privacy and anti-spam laws allow.",
            "default": "none"
          },
          "includeDetails": {
            "title": "Full descriptions and company details",
            "type": "boolean",
            "description": "Fetch each job's full description, expiry date, the currency of its pay, how many people have applied, the employer's screening questions, whether you apply on an external site, and the employer's industry, size, rating, perks and website. SEEK answers about 500 of these a minute, so past 500 jobs a run takes about 12 seconds longer per 100 jobs.",
            "default": true
          },
          "includeContacts": {
            "title": "Contact details from the ad",
            "type": "boolean",
            "description": "Add the email addresses and phone numbers an advertiser published in the job ad, when there are any. These can belong to a person, so use them only as privacy and anti-spam laws allow. Turns on full details.",
            "default": false
          },
          "trackChanges": {
            "title": "Track changes between runs",
            "type": "boolean",
            "description": "Compare each run with the earlier runs of the same search. Every job is marked NEW, UPDATED (with the fields that changed), UNCHANGED or REAPPEARED, and jobs that have closed since are reported as EXPIRED, each one checked with SEEK. Unchanged jobs are left out, and not charged, unless you ask for them below. The first run marks every job NEW.",
            "default": false
          },
          "includeUnchanged": {
            "title": "Also output unchanged jobs",
            "type": "boolean",
            "description": "With change tracking on, also output jobs that haven't changed since the last run, marked UNCHANGED. They are charged like any other result.",
            "default": false
          },
          "includeClosed": {
            "title": "Report jobs that have closed",
            "type": "boolean",
            "description": "With change tracking on, output jobs from earlier runs that have closed since, as EXPIRED rows with the time they closed. Each is checked with SEEK, so a job that only dropped out of the results isn't reported. Checked when the run covers the whole search, not when Max results or the time limit cut it short. Charged like any other result.",
            "default": true
          },
          "skipReposts": {
            "title": "Leave out reposts",
            "type": "boolean",
            "description": "With change tracking on, leave out new jobs that repeat an earlier ad: the same advertiser, title and place under a new job ID. They're recorded, but not output or charged.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only jobs you haven't seen before",
            "type": "boolean",
            "description": "Skip jobs an earlier run with this option already delivered, and don't charge for them. The record lives in a named key-value store in your account and forgets jobs after 60 days. Change tracking does this too, and more: its NEW jobs are the new ones.",
            "default": false
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Name of the key-value store in your account that remembers earlier runs, for change tracking and Only new jobs: lowercase letters, digits and hyphens (anything else becomes a hyphen). Leave empty and each different search (its keywords, locations, links and filters) gets its own history automatically."
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "SEEK answers ordinary requests, so a proxy is optional.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}