# Seek Jobs Scraper (`automly/seek-jobs-scraper`) Actor

Scrape Seek job listings from seek.com.au and seek.co.nz by keyword, location, classification, work type, salary and date, or from any Seek link: title, company, salary, location, work arrangement, full description, employer questions and company rating.

- **URL**: https://apify.com/automly/seek-jobs-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 jobs

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Seek Jobs Scraper - Australia & NZ Jobs and Salaries

### What is Seek Jobs Scraper?

**Seek Jobs Scraper** is a tool that lets you **scrape job listings from seek.com.au and seek.co.nz**: title, company, location down to suburb and postcode, salary (as written and as numbers), work type, work arrangement, classification, listing and expiry dates, the **full job description**, the **employer's screening questions**, and the **company's rating, review count, industry, size and website**. Type a keyword or paste any Seek link, click **Start**, and download the jobs as Excel, CSV or JSON.

- ⚡ **Fast:** 2,000 jobs with full descriptions in under 30 seconds, and 9,000+ jobs from one keyword across Australia in about 35 seconds (our tests)
- 🔎 **Every filter Seek has:** location, classification and sub-classification, work type, on-site/hybrid/remote, salary range, date listed and company
- 📈 **Past Seek's limit:** Seek shows about 550 jobs for one search; with this scraper big searches still give you all of them
- 🏢 **Company insights:** employee rating, review count, industry, size, website and perks next to every job
- 🔓 **No login:** no Seek account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 3,300 jobs with full details (about 6,200 without)

### What can Seek Jobs Scraper do?

- **Scrape Seek job search results** for any keyword, like `python developer` or `registered nurse`
- **Scrape Seek jobs by location**: a suburb, city, region or state, like `All Sydney NSW`, `Melbourne VIC 3000` or `All Auckland`
- **Filter by classification and sub-classification**, like Information & Communication Technology > Engineering - Software
- **Find remote, hybrid or on-site jobs**, full time, part time, contract or casual
- **Collect salary data**: the advertised salary text plus the minimum, maximum and period read from it
- **Get the full job description** and the **screening questions** applicants are asked
- **Scrape every job from one company**, like `Woolworths` or `Dan Murphy's`
- **Scrape single Seek job pages** from their links
- Works on **seek.com.au (Australia)** and **seek.co.nz (New Zealand)**
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Seek?

| | | |
|---|---|---|
| 💼 Job title and job ID | 🏢 Company and advertiser | 📍 Location, suburb, state, postcode |
| 💰 Salary text, min, max, period, currency | 🕒 Work type | 🏠 On-site, hybrid or remote |
| 🗂️ Classification and sub-classification | 📅 Listed date and expiry date | 📝 Full description (text and HTML) |
| ❓ Employer screening questions | ✨ Key selling points | ⭐ Company rating and review count |
| 🏭 Company industry and size | 🌐 Company website and perks | 🔗 Job link and company profile link |

### How to scrape Seek jobs

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Seek Jobs Scraper**.
3. Enter search keywords and a location, or paste Seek search or job links, one per line.
4. Pick the filters you want (classification, work type, salary, date listed) and how many jobs you need per search.
5. Click **Start**, then download the jobs as Excel, CSV, JSON or HTML.

### How much does it cost to scrape Seek jobs?

You pay only for the jobs you get. A job from the search list is a **job**; a job saved with **Include full job details** turned on (the default), or from a single job link, is a **job with full details**.

| Apify plan | Jobs per 1,000 | Jobs with full details per 1,000 |
|---|---|---|
| Free | **$0.80** | **$1.50** |
| Starter (Bronze) | **$0.70** | **$1.30** |
| Scale (Silver) | **$0.60** | **$1.15** |
| Business (Gold) and higher | **$0.50** | **$1.00** |

Platform usage is included in these prices, so there is nothing else to pay.

Example: 1,000 jobs with full details cost $1.50 on the Free plan and $1.00 on Business. Turn off **Include full job details** and the same 1,000 jobs cost $0.80 on the Free plan.

Every Apify account gets **$5 of free usage each month**, enough for about 6,200 jobs at the Free-plan list price. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search keywords** | Job titles, skills or companies to search for, one per line, like `data analyst` |
| **Location** | Where to search, written the way Seek writes it: `All Sydney NSW`, `Melbourne VIC 3000`, `Victoria VIC`, `All Auckland`. Empty for the whole country |
| **Country** | Australia (seek.com.au) or New Zealand (seek.co.nz) for the keyword searches |
| **Seek links** | Search result pages with any filters you set on Seek, classification pages, company job pages (`/Woolworths-jobs/at-this-company`) and single job pages (`seek.com.au/job/94427773`) |
| **Max jobs per search or link** | How many jobs to save for each keyword or link (default 100). Set 0 for all of them |
| **Include full job details** | Adds the full description, screening questions, expiry date, suburb and postcode, and the company's rating and profile |
| **Classifications / Sub-classifications** | Only jobs in these Seek categories |
| **Work type / Work arrangement** | Full time, part time, contract, casual; on-site, hybrid, remote |
| **Salary from / to / type** | A pay range, a year, a month or an hour |
| **Date listed** | Today, or the last 3, 7, 14 or 30 days |
| **Company** | Only jobs from one company |
| **Sort by** | Relevance or newest first |

Remote software jobs in Australia listed this week, with full details:

```json
{
  "keywords": ["software engineer"],
  "workArrangements": ["remote"],
  "datePosted": "7",
  "maxItems": 200
}
```

Every nursing job in Auckland, list only:

```json
{
  "keywords": ["nurse"],
  "site": "NZ",
  "location": "All Auckland",
  "maxItems": 0,
  "includeDetails": false
}
```

A Seek search you set up on the site, and two single jobs:

```json
{
  "startUrls": [
    "https://www.seek.com.au/python-jobs/in-All-Melbourne-VIC?worktype=242&daterange=7",
    "https://www.seek.com.au/job/94427773",
    "https://www.seek.co.nz/job/94657641"
  ]
}
```

### ⬆️ Output

Every job is one row. A job with full details on:

```json
{
  "jobId": "95022083",
  "url": "https://au.seek.com/job/95022083",
  "title": "Assistant Accountant",
  "companyName": "Grace Worldwide",
  "advertiserName": "Grace Worldwide (Australia) Pty Ltd",
  "advertiserId": "19335794",
  "site": "AU",
  "location": "Seven Hills, Sydney NSW",
  "area": "Parramatta & Western Suburbs",
  "suburb": "Seven Hills",
  "state": "New South Wales",
  "postcode": "2147",
  "classification": "Accounting",
  "classificationId": "1200",
  "subClassification": "Assistant Accountants",
  "subClassificationId": "6142",
  "workType": "Contract/Temp",
  "workArrangements": [
    "On-site"
  ],
  "salaryText": "$80,000 per year (Fixed-Term Contract)",
  "salaryMin": 80000,
  "salaryMax": 80000,
  "salaryPeriod": "year",
  "salaryCurrency": "AUD",
  "listedAt": "2026-10-02T05:13:16Z",
  "listedText": "7h ago",
  "expiresAt": "2026-11-01T12:59:59Z",
  "isExpired": false,
  "teaser": "Join Crown Relocations in Seven Hills as an Accounts Assistant. Build your finance skills, join a global business and enjoy great employee benefits.",
  "bulletPoints": [
    "Perkbox, EAP, personal development & novated leasing benefits",
    "Immediate start available to the right candidate",
    "Work for a company where you are truly valued"
  ],
  "roleTitle": "Assistant Accountant",
  "isFeatured": false,
  "appliesOnExternalSite": false,
  "isVerifiedAdvertiser": true,
  "isPrivateAdvertiser": false,
  "questions": [
    "Which of the following statements best describes your right to work in Australia?",
    "How many years' experience do you have as an assistant accountant?",
    "How much notice are you required to give your current employer?"
  ],
  "videoUrl": null,
  "companyLogo": "https://image-service-cdn.seek.com.au/8960fe9a79c0719e3362f968e42424d2ed4a7699/f3c5292cec0e05e4272d9bf9146f390d366481d0",
  "companyProfileUrl": "https://au.seek.com/companies/grace-worldwide-433897",
  "companyRating": 3,
  "companyReviewCount": 56,
  "companyIndustry": "Transport & Logistics",
  "companySize": "1,001-5,000 employees",
  "companyWebsite": "https://www.grace.com.au/",
  "companyDescription": "Grace has been a trusted name in household moving, commercial project logistics and records management for mor...",
  "companyPerks": [
    "Flexible Working Arrangements",
    "AccessEAP",
    "Career Growth & Development",
    "Rewarding Incentive Program",
    "Formalised Training Program",
    "Purchase More Annual Leave",
    "Service Award and Bonus Day",
    "And much more!"
  ],
  "descriptionText": "Join Crown Relocations and keep the numbers moving!\nCrown Relocations is looking for a detail-focused Accounts...",
  "descriptionHtml": "<p><strong>Join Crown Relocations and keep the numbers moving!</strong></p><p><strong>Crow...",
  "source": "accountant",
  "scrapedAt": "2026-10-02T12:17:39Z"
}
```

The **Overview** tab shows the main columns; every field is in the downloads. The run report lists, for each search, how many jobs Seek lists, how many were saved, and which place Seek matched your location to.

### Which fields come with full details?

| Field | List only | With full details |
|---|---|---|
| Title, company, location, classification, work type, arrangement, salary, listed date, teaser, key selling points, logo | ✅ | ✅ |
| Full description, screening questions, expiry date | | ✅ |
| Suburb, state, postcode, standard role title | | ✅ |
| Company rating, reviews, industry, size, website, perks, profile link | | ✅ (when the company has a Seek profile) |

Salary fields are empty when the advertiser does not show a salary. `salaryMin` and `salaryMax` are filled only when the salary text states a clear amount and period (about half of the shown salaries); `salaryText` always keeps the advertiser's own words.

### How can I use Seek job data?

- **Job market research:** see which roles, skills and locations are hiring across Australia and New Zealand
- **Salary benchmarking:** compare advertised pay by role, classification, city and work type
- **Lead generation for recruiters and B2B sales:** find companies that are hiring, with their website, size and industry
- **Employer branding and competitor tracking:** follow a competitor's open roles and their Seek rating
- **Job boards and aggregators:** feed fresh Seek listings into your own site or alerts
- **Remote work research:** track how many jobs offer remote or hybrid work

### Scrape more job and hiring data

| Actor | What it gets |
|---|---|
| [LinkedIn Jobs Scraper](https://apify.com/automly/linkedin-jobs-scraper) | LinkedIn job listings with salaries, company info and descriptions, filtered by remote or hybrid, salary and experience |
| [HiringCafe Jobs Scraper](https://apify.com/automly/hiringcafe-jobs-scraper) | HiringCafe job listings with companies, locations, apply links, salary ranges and skills |
| [LinkedIn Company Employees Scraper + Emails (No Login)](https://apify.com/automly/linkedin-company-employees-scraper) | The people at a hiring company: name, headline, location and profile link, filtered by job title |
| [LinkedIn People Search Scraper (No Login)](https://apify.com/automly/linkedin-people-search-scraper) | LinkedIn profiles by job title, company, location or keywords |
| [Website Email Scraper](https://apify.com/automly/website-email-scraper) | E-mail addresses from company websites: the start page plus contact, about and team pages |

### How many jobs can I get?

As many as Seek lists. Seek itself shows about 550 jobs for one search; when you ask for more, you still get the rest of the search. A very narrow but crowded search (say, every full-time on-site job in one sub-classification in one city) can still stop at Seek's limit: the run report says so, and adding a keyword or location reaches the rest. A job that appears in two of your searches is saved once.

### ❓FAQ

#### How much does it cost to scrape Seek?

$1.50 per 1,000 jobs with full details (the default) or $0.80 per 1,000 list-only jobs on the Free plan, less on paid plans, with platform usage included. See the cost section above for every plan and price. **Max jobs per search or link** keeps the cost of a run under control, and you can also set a maximum cost per run.

#### How many jobs can I get from one search?

As many as Seek lists, also past the roughly 550 jobs Seek itself shows for one search; the section **How many jobs can I get?** above explains how to reach the rest of a very large search.

#### Can I scrape seek.co.nz as well as seek.com.au?

Yes. Choose **New Zealand** as the country for keyword searches, or paste seek.co.nz links. Each row's `site` field says which country the job is in.

#### Why did my location give jobs somewhere else?

Seek matches the place you type to one of its own places. `Victoria` on its own matches Victoria Park in Western Australia, while `Victoria VIC` is the state. Write places the way Seek's own location box suggests them. The run report shows the place Seek matched, and the log warns when it differs from what you typed.

#### Can I get the employer's phone number or email?

No. Contact details on Seek are shown only on request, so they are not collected. Apply links and company websites are included.

#### Do I need a Seek account?

No. You don't need a Seek account, cookies or an API key: the scraper collects the public job ads anyone can see without signing in.

#### What happens with an expired job or a wrong link?

The run goes on with the other inputs, and the run report lists the jobs that have expired or do not exist. A link that is not a Seek search or job page is named in the error message before the run starts.

#### Can I connect Seek Jobs Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com). For instant answers inside your app, its real-time API returns jobs directly for `/search?q=...&where=...`, without starting a run.

#### Is it legal to scrape Seek?

This scraper only collects public job ads and company profiles that anyone can see on Seek. It does not collect employer phone numbers or emails, or anything about job seekers. Job ads can still mention people by name, which may be protected by laws such as GDPR, so only scrape for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Seek Jobs Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by SEEK Limited.

#### Something isn't working?

Open the **Issues** tab and tell us your input and what you expected, or which field you need. We read every one and usually reply within a day.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If Seek Jobs Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `keywords` (type: `array`):

Job titles, skills or companies to search Seek for, one per line ("python developer", "registered nurse", "electrician"). Each keyword is its own search.

## `location` (type: `string`):

Suburb, city, region or state, written the way Seek writes it: "All Sydney NSW", "Melbourne VIC 3000", "Victoria VIC", "All Auckland". Leave empty for the whole country. The run report says which place Seek matched. Seek links that name their own place keep it.

## `site` (type: `string`):

Which Seek to search with the keywords. Links always use their own country.

## `startUrls` (type: `array`):

Paste Seek links in any mix: search result pages with any filters you set on the site (seek.com.au/python-jobs/in-All-Sydney-NSW?worktype=242), classification pages, company job pages (/Woolworths-jobs/at-this-company) and single job pages (seek.com.au/job/94427773). Both seek.com.au and seek.co.nz work.

## `maxItems` (type: `integer`):

How many jobs to save for each keyword or link. Set 0 for every matching job.

## `includeDetails` (type: `boolean`):

Adds the full description, employer questions, expiry date, suburb and postcode, and the company's rating, review count, industry, size, website and perks. Turn off for a faster, cheaper list with the main fields only.

## `classifications` (type: `array`):

Only jobs in these Seek classifications.

## `subClassifications` (type: `array`):

Only jobs in these sub-classifications, by their name on Seek ("Engineering - Software", "Nursing - Aged Care"). Names used in several classifications, like "Management", need their classification chosen above or written as "Construction > Management".

## `workTypes` (type: `array`):

Only these work types. Leave empty for all.

## `workArrangements` (type: `array`):

Only on-site, hybrid or remote jobs. Leave empty for all.

## `salaryMin` (type: `integer`):

Lowest pay, in the salary type below (for example 100000 a year or 45 an hour).

## `salaryMax` (type: `integer`):

Highest pay, in the salary type below. Leave empty for no upper limit.

## `salaryType` (type: `string`):

How the salary range above is paid.

## `datePosted` (type: `string`):

Only jobs listed in this period.

## `companyName` (type: `string`):

Only jobs from this company, like "Woolworths" or "Dan Murphy's".

## `sortBy` (type: `string`):

Order in which jobs are collected.

## `proxyConfiguration` (type: `object`):

The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "keywords": [
    "python developer"
  ],
  "location": "All Sydney NSW",
  "site": "AU",
  "maxItems": 50,
  "includeDetails": true,
  "salaryType": "annual",
  "datePosted": "any",
  "sortBy": "relevance",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "python developer"
    ],
    "location": "All Sydney NSW",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/seek-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["python developer"],
    "location": "All Sydney NSW",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/seek-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "python developer"
  ],
  "location": "All Sydney NSW",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/seek-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/seek-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XLU0fXfuT9ey0iCzs/builds/WDlsNzXn60LPICzRt/openapi.json
