SEEK Jobs Scraper

Scrape public SEEK Australia and New Zealand job listings by keyword and location for recruiting, lead generation, and labor-market research.

Data fields

FieldTypeDescription
jobIdstring | nullValue exported as jobId.
urlstringValue exported as url.
titlestring | nullValue exported as title.
companyNamestring | nullValue exported as companyName.
locationstring | nullValue exported as location.
salaryTextstring | nullValue exported as salaryText.
classificationstring | nullValue exported as classification.
shortDescriptionstring | nullValue exported as shortDescription.

Input preview

queryKeyword
locationLocation
countryCountry site
queriesMultiple searches
maxItemsMaximum jobs

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public job listings from SEEK search results in Australia and New Zealand. The actor saves structured job data such as title, company, location, salary text, classification, job URL, and source search metadata.

Value proposition / what it does

SEEK Jobs Scraper turns SEEK search pages into structured datasets for recruiting, labor-market analysis, and automation. What data it returns: job titles, companies, locations, salary text, classifications, job URLs, and source search metadata.

  • Searches SEEK Australia or SEEK New Zealand by keyword and location.
  • Accepts one search, multiple keyword/location searches, or direct SEEK search URLs.
  • Returns clean dataset items for job market research, lead sourcing, recruitment analytics, and role monitoring.
  • Stops at your maxItems limit to keep runs predictable.

Who uses it and use cases

Recruiters, hiring teams, labor-market researchers, sales teams, and automation builders use this actor to monitor role demand, collect hiring leads, and feed job listings into spreadsheets, CRMs, or AI workflows.

Input example

{
  "query": "software engineer",
  "location": "Sydney",
  "country": "au",
  "maxItems": 10
}

Multiple searches

{
  "queries": [
    { "query": "software engineer", "location": "Sydney", "country": "au" },
    { "query": "accountant", "location": "Auckland", "country": "nz" }
  ],
  "maxItems": 20
}

Input settings

Field Type Description
query string Keyword or phrase to search for when queries is not provided.
location string City, region, or suburb, such as Sydney or Auckland.
country string SEEK site: au for Australia or nz for New Zealand.
queries array Optional list of searches or direct SEEK search URLs. Overrides the single search fields.
maxItems integer Maximum number of job listings to save, from 1 to 50.

Output example

{
  "jobId": "123456789",
  "url": "https://www.seek.com.au/job/123456789",
  "title": "Software Engineer",
  "companyName": "Example Company",
  "location": "Sydney NSW",
  "salaryText": "$120k - $140k",
  "classification": "Information & Communication Technology",
  "shortDescription": "Build and maintain production systems...",
  "sourceUrl": "https://www.seek.com.au/jobs?keywords=software+engineer&where=Sydney",
  "sourceQuery": "software engineer",
  "sourceLocation": "Sydney",
  "scrapedAt": "2026-07-15T08:37:26.614Z"
}

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/seek-jobs-scraper').call({
  query: 'software engineer',
  location: 'Sydney',
  country: 'au',
  maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/seek-jobs-scraper').call(run_input={
    'query': 'software engineer',
    'location': 'Sydney',
    'country': 'au',
    'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~seek-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"query":"software engineer","location":"Sydney","country":"au","maxItems":10}'

MCP and AI agents

Use this actor from Apify MCP or other AI-agent tools when you need fresh SEEK job listings as structured data. Provide a concise keyword, location, country, and max item limit to keep responses focused.

Claude CLI add command

claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/seek-jobs-scraper

JSON config block

{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/seek-jobs-scraper"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Example prompts

  • "Find recent software engineer jobs in Sydney on SEEK and summarize the hiring companies."
  • "Collect 10 accountant roles in Auckland from SEEK and return title, company, location, and URL."
  • "Monitor SEEK for data analyst roles in Melbourne and save the dataset for spreadsheet export."

Input recipes

  • Sydney software hiring: query="software engineer", location="Sydney", country="au".
  • Auckland finance roles: query="accountant", location="Auckland", country="nz".
  • Multi-city monitoring: use queries with several keyword/location objects and one shared maxItems cap.

Support

If a run does not return the jobs you expected, include the run ID or run URL, the input JSON, expected output, actual output, and a reproducible public URL such as https://www.seek.com.au/jobs?keywords=software+engineer&where=Sydney when contacting support.

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape both Australia and New Zealand?

Yes. Set country to au or nz, or provide per-search country values in queries.

Why are some fields null?

SEEK does not show every field on every listing. Missing salary, classification, or company values are returned as null.

Can I use direct SEEK search URLs?

Yes. Add objects with a url field inside queries.