{
  "openapi": "3.0.1",
  "info": {
    "title": "SEEK Job Scraper (AU & NZ)",
    "description": "Scrape job listings from SEEK (seek.com.au & seek.co.nz) by keyword, location, category and more.",
    "version": "1.0",
    "x-build-id": "XuOtBn5eO1BdAOmeR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/corvuslab~seek-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-corvuslab-seek-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/corvuslab~seek-scraper/runs": {
      "post": {
        "operationId": "runs-sync-corvuslab-seek-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/corvuslab~seek-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-corvuslab-seek-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 query 🔍",
            "type": "string",
            "description": "Keywords to search for, e.g. \"python\" or \"registered nurse\". Leave blank to browse all jobs in the chosen country/location."
          },
          "queries": {
            "title": "Search queries 📑",
            "type": "array",
            "description": "Run several keyword searches in one run. Results are deduplicated by job ID across all queries.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country 🌏",
            "enum": [
              "AU",
              "NZ"
            ],
            "type": "string",
            "description": "Which SEEK market to search: Australia (seek.com.au) or New Zealand (seek.co.nz).",
            "default": "AU"
          },
          "startUrls": {
            "title": "Start URLs 🔗",
            "type": "array",
            "description": "Optional: paste SEEK search-results URLs or single job-detail URLs straight from your browser. Used in addition to the keyword search above.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location 📍",
            "type": "string",
            "description": "Optional location to filter by, e.g. \"Sydney NSW\", \"Melbourne VIC\", \"Auckland\". Leave blank to search the whole country."
          },
          "classification": {
            "title": "Classification ID 🗂️",
            "type": "string",
            "description": "Optional SEEK job-category ID. Examples: 6281 = Information & Communication Technology, 6317 = Healthcare & Medical, 6164 = Engineering. Find IDs in the URL when you pick a category on SEEK."
          },
          "subClassification": {
            "title": "Sub-classification ID 🗂️",
            "type": "string",
            "description": "Optional SEEK sub-category ID. Requires a parent Classification ID."
          },
          "workType": {
            "title": "Work type 💼",
            "type": "array",
            "description": "Filter by employment type. Select one or more; leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "contract",
                "casual"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract/Temp",
                "Casual/Vacation"
              ]
            }
          },
          "workArrangement": {
            "title": "Work arrangement 🏠",
            "type": "array",
            "description": "Filter by where the work is done. Select one or more; leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "hybrid",
                "remote"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Remote"
              ]
            }
          },
          "dateRange": {
            "title": "Listed in last 🗓️",
            "enum": [
              "1",
              "3",
              "7",
              "14",
              "31"
            ],
            "type": "string",
            "description": "Only include jobs listed within this period. Leave empty for any time."
          },
          "sortMode": {
            "title": "Sort by ↕️",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order results by SEEK relevance or by listing date (newest first).",
            "default": "relevance"
          },
          "salaryMin": {
            "title": "Minimum salary 💰",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional minimum salary in local currency (AUD/NZD). Requires Maximum salary to be set as well."
          },
          "salaryMax": {
            "title": "Maximum salary 💰",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional maximum salary in local currency (AUD/NZD). Requires Minimum salary to be set as well."
          },
          "includeKeywords": {
            "title": "Include keywords ✅",
            "type": "array",
            "description": "Keep only jobs that contain at least one of these terms. Leave empty to keep all.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords 🚫",
            "type": "array",
            "description": "Drop any job that contains one of these terms.",
            "items": {
              "type": "string"
            }
          },
          "keywordMatchTitle": {
            "title": "Match in title",
            "type": "boolean",
            "description": "Match keywords against the job title. If none of these 'Match in …' toggles are on, keywords are matched across all fields.",
            "default": false
          },
          "keywordMatchCompany": {
            "title": "Match in company",
            "type": "boolean",
            "description": "Match keywords against the company name.",
            "default": false
          },
          "keywordMatchDescription": {
            "title": "Match in description",
            "type": "boolean",
            "description": "Match keywords against the job teaser/summary.",
            "default": false
          },
          "keywordMatchCategory": {
            "title": "Match in category",
            "type": "boolean",
            "description": "Match keywords against the job category and sub-category.",
            "default": false
          },
          "keywordMatchBulletPoints": {
            "title": "Match in bullet points",
            "type": "boolean",
            "description": "Match keywords against the job's key bullet points.",
            "default": false
          },
          "fromDate": {
            "title": "Posted from date 📅",
            "type": "string",
            "description": "Keep only jobs posted on or after this date (YYYY-MM-DD)."
          },
          "toDate": {
            "title": "Posted to date 📅",
            "type": "string",
            "description": "Keep only jobs posted on or before this date (YYYY-MM-DD, inclusive)."
          },
          "maxAgeMinutes": {
            "title": "Max age (minutes) ⏱️",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs posted within this many minutes before the run. Handy for frequent monitoring runs."
          },
          "customFilters": {
            "title": "Custom filters 🧩",
            "type": "array",
            "description": "Advanced rules applied to output fields. Each rule is {\"field\": \"<output field>\", \"operator\": \"<op>\", \"value\": <value>}. Operators: includes, notIncludes, equals, notEquals, gt, gte, lt, lte. All rules must pass (AND). Example: [{\"field\":\"salaryMin\",\"operator\":\"gte\",\"value\":100000}]"
          },
          "maxResults": {
            "title": "Max results per query 🔢",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of jobs to return per query. Use 0 for unlimited (hard-capped at 5000).",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages per query 📄",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of search-result pages to fetch per query (a safety cap on cost). SEEK returns roughly 22 organic jobs per page.",
            "default": 25
          },
          "includeDetails": {
            "title": "Include job details 📄",
            "type": "boolean",
            "description": "Open each job's detail page to add the full description, company profile and salary. Slower and uses more requests.",
            "default": true
          },
          "descriptionMaxLength": {
            "title": "Description max length ✂️",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate the description text to this many characters. Use 0 for no limit. Only applies when 'Include job details' is enabled.",
            "default": 0
          },
          "descriptionFormat": {
            "title": "Description format 📝",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Which description representations to include (only with 'Include job details'): all, plain text, HTML, or Markdown.",
            "default": "all"
          },
          "compact": {
            "title": "Compact output 📦",
            "type": "boolean",
            "description": "Return only core fields (title, company, location, salary, dates, URLs) — handy for AI/agent workflows.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields 🧹",
            "type": "boolean",
            "description": "Remove fields that are null or empty from each output record.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental mode 🔁",
            "type": "boolean",
            "description": "Classify each job as NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED against the previous run and, by default, emit only NEW/UPDATED/REAPPEARED.",
            "default": false
          },
          "stateKey": {
            "title": "State key 🔑",
            "type": "string",
            "description": "Optional stable name for the tracking state so separate schedules don't clash. Leave blank to derive it automatically from the search parameters."
          },
          "emitUnchanged": {
            "title": "Emit unchanged 🔂",
            "type": "boolean",
            "description": "Also output jobs that haven't changed since the last run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired 🗑️",
            "type": "boolean",
            "description": "Also output jobs that were tracked before but have now disappeared from the search (changeType = EXPIRED).",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposts ♻️",
            "type": "boolean",
            "description": "Detect and drop reposts — the same job (same company, title and location) re-listed under a new ID. Cross-run detection uses incremental state; kept jobs are tagged with isRepost / repostOfId.",
            "default": false
          },
          "telegramToken": {
            "title": "Telegram bot token ✈️",
            "type": "string",
            "description": "Bot token from @BotFather. Leave blank to skip Telegram."
          },
          "telegramChatId": {
            "title": "Telegram chat ID ✈️",
            "type": "string",
            "description": "Chat or channel ID to send to (e.g. from @userinfobot). Required with the bot token."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL 💬",
            "type": "string",
            "description": "Slack Incoming Webhook URL (https://hooks.slack.com/services/...). Leave blank to skip Slack."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL 🎮",
            "type": "string",
            "description": "Discord channel webhook URL. Leave blank to skip Discord."
          },
          "webhookUrl": {
            "title": "Generic webhook URL 🪝",
            "type": "string",
            "description": "POST a structured JSON payload (run metadata + job records) here — handy for n8n, Make or Zapier. Leave blank to skip."
          },
          "webhookHeaders": {
            "title": "Generic webhook headers",
            "type": "object",
            "description": "Optional custom HTTP headers for the generic webhook, e.g. {\"Authorization\": \"Bearer ...\"}."
          },
          "notificationLimit": {
            "title": "Max jobs per notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many jobs to list in the message (the message also reports the total matched).",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "Notify only on changes",
            "type": "boolean",
            "description": "Only notify about NEW/UPDATED/REAPPEARED jobs. Requires Incremental mode; ignored otherwise.",
            "default": false
          },
          "includeRunSummary": {
            "title": "Include run summary",
            "type": "boolean",
            "description": "Prepend a one-line summary (country, match count, query) to each notification.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency ⚡",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many requests to run in parallel. The actor uses geo-targeted residential proxies automatically, so raising this mainly trades speed for cost.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}