SEEK Job Scraper (AU & NZ)
Pricing
from $2.00 / 1,000 results
Go to Apify Store
SEEK Job Scraper (AU & NZ)
Scrape job listings from SEEK (seek.com.au & seek.co.nz) by keyword, location, category and more.
SEEK Job Scraper (AU & NZ)
Pricing
from $2.00 / 1,000 results
Scrape job listings from SEEK (seek.com.au & seek.co.nz) by keyword, location, category and more.
You can access the SEEK Job Scraper (AU & NZ) programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for SEEK Job Scraper (AU & NZ) from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: