# Seek Jobs Scraper - Salary & Descriptions (`thirdwatch/seek-jobs-scraper`) Actor

Scrape job listings from Seek (seek.com.au), Australia's largest job board. Get titles, companies, locations, salary, work types, classifications, work arrangements, teasers, bullet points, and optional full HTML descriptions. Pure HTTP, no API key or proxy needed.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Seek Jobs Scraper - Salary & Descriptions

> Scrape Seek job listings from Australia and New Zealand by keyword and location - titles, companies, salary, work types, classifications, and full descriptions.

Seek is the dominant job board in Australia and New Zealand. This actor turns Seek search results into clean, structured dataset rows so you can build a jobs database, track hiring demand, benchmark salaries, feed an ATS/CRM, or power a recruitment product - without manually copying listings from the site.

### What you get

Search Seek by one or more job titles and a location, and get back a clean row per job. Every listing comes with the company, location, salary (when published), work type, work arrangement, Seek's industry classification, a short teaser, and highlighted bullet points. Turn on full descriptions when you need the complete job posting text. Coverage spans both Australia (seek.com.au) and New Zealand (seek.co.nz), selectable per run.

### Output fields

| Field | Description |
|-------|-------------|
| `id` | Seek job ID |
| `title` | Job title |
| `company` | Advertiser / company name |
| `location` | Primary location label |
| `locations` | All location labels for the listing |
| `salary` | Salary label as displayed (e.g. `$150,000 - $180,000 per year`) when the advertiser publishes it |
| `work_type` | Work type(s), e.g. `Full time`, `Part time`, `Contract/Temp` |
| `work_types` | Work types as a list |
| `work_arrangement` | `On-site`, `Hybrid`, or `Remote` when specified |
| `classification` | Seek industry classification (e.g. `Information & Communication Technology`) |
| `subclassification` | Seek subclassification (e.g. `Engineering - Software`) |
| `teaser` | Short teaser text from the search card |
| `bullet_points` | Highlighted selling points from the listing |
| `listing_date` | ISO listing timestamp |
| `listing_date_display` | Human-readable listing age (e.g. `3d ago`) |
| `is_featured` | Whether the listing is a featured/promoted ad |
| `url` | Link to the job (`https://www.seek.com.au/job/{id}`) |
| `description` | Full job description text (only when **Scrape Full Description** is enabled) |
| `keyword` | The search keyword that produced this result |
| `scraped_at` | UTC timestamp of the run |

### Example output

```json
{
  "id": "78421530",
  "title": "Senior Software Engineer",
  "company": "Canva",
  "location": "Sydney NSW",
  "locations": ["Sydney NSW"],
  "salary": "$150,000 - $180,000 per year",
  "work_type": "Full time",
  "work_types": ["Full time"],
  "work_arrangement": "Hybrid",
  "classification": "Information & Communication Technology",
  "subclassification": "Engineering - Software",
  "teaser": "Join a high-impact platform team building tools used by millions every day.",
  "bullet_points": [
    "Flexible hybrid working",
    "Generous equity and learning budget",
    "Work on a globally loved product"
  ],
  "listing_date": "2026-06-17T23:14:00.000Z",
  "listing_date_display": "3d ago",
  "is_featured": true,
  "url": "https://www.seek.com.au/job/78421530",
  "description": "About the role\nWe're looking for a Senior Software Engineer to join our platform team...",
  "keyword": "software engineer",
  "scraped_at": "2026-06-20T09:42:11.000Z"
}
````

### Input parameters

| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| `keywords` | Yes | `["software engineer"]` | One or more job search terms (e.g. `software engineer`, `data analyst`, `registered nurse`). Each keyword returns up to `maxResults` jobs. |
| `where` | No | `All Australia` | Location filter (e.g. `All Australia`, `Sydney NSW`, `Melbourne VIC`, `Auckland`). |
| `siteKey` | No | `AU-Main` | Which Seek region to search. `AU-Main` for Australia (seek.com.au) or `NZ-Main` for New Zealand (seek.co.nz). |
| `scrapeDescription` | No | `false` | When enabled, fetches the full job description for each listing. Slower but richer. The teaser and bullet points are always returned regardless. |
| `maxResults` | No | `5` | Maximum number of job listings per keyword. Starts low to keep your first run cheap - raise it once the output looks right. |

#### Software engineering jobs across Australia

```json
{
  "keywords": ["software engineer"],
  "where": "All Australia",
  "siteKey": "AU-Main",
  "scrapeDescription": false,
  "maxResults": 5
}
```

#### Nursing jobs in Sydney with full descriptions

```json
{
  "keywords": ["registered nurse"],
  "where": "Sydney NSW",
  "siteKey": "AU-Main",
  "scrapeDescription": true,
  "maxResults": 100
}
```

#### Multiple roles in New Zealand

```json
{
  "keywords": ["data analyst", "accountant", "project manager"],
  "where": "Auckland",
  "siteKey": "NZ-Main",
  "scrapeDescription": false,
  "maxResults": 25
}
```

### Use cases

- **Recruiters & staffing firms:** Build candidate-facing job feeds and keep them fresh by re-running searches on your own schedule.
- **Sourcers & talent teams:** Track which companies are hiring for which roles, in which cities, and how aggressively - competitor hiring intelligence in a spreadsheet.
- **Compensation & people analysts:** Benchmark salaries by role, seniority, and location across the listings that publish pay.
- **Labour-market researchers:** Build repeatable, time-stamped datasets to study hiring demand by role, industry classification, and region.
- **Job-board aggregators & career apps:** Source Australian and New Zealand listings to populate your own product without maintaining a scraper.

### Limitations

- **Coverage is Australia and New Zealand only.** Use the `siteKey` parameter to pick between Australia (`AU-Main`) and New Zealand (`NZ-Main`). There is no other-country coverage.
- **Salary is frequently null.** Seek only shows pay when the advertiser chooses to publish it, and many listings leave it blank. Expect the `salary` field to be empty on a large share of results.
- **Full descriptions only when you ask for them.** The `description` field is populated only when **Scrape Full Description** (`scrapeDescription`) is enabled. With it off, you still get the teaser and bullet points, but not the complete posting text. Enabling it makes runs slower because each job is fetched individually.
- **Search-card data reflects what Seek shows.** Fields like work arrangement, classification, and bullet points are populated only when present on the listing.

### Compared to alternatives

The main alternative on the Apify Store is **websift/seek-job-scraper**. How this actor differs:

- **Australia and New Zealand in one actor.** Switch between seek.com.au and seek.co.nz with a single `siteKey` setting - no separate runs or actors.
- **Optional full descriptions.** Get just the fast search-card fields by default, or flip on complete job descriptions when you need the full text - you control the cost/depth trade-off.
- **Richer structured fields out of the box** - separate work type, work arrangement, classification, subclassification, teaser, and bullet points, rather than a flattened blob.
- **Low-cost first run.** The default result cap is small so your first test run is cheap; raise it once you're happy with the output.

### FAQ

**Do I need a Seek account, API key, or login?**
No. Just provide your search keywords and location and run it.

**Does it cover New Zealand as well as Australia?**
Yes. Set `siteKey` to `NZ-Main` to search seek.co.nz, or leave it as `AU-Main` for seek.com.au.

**Why is the salary field empty on so many jobs?**
Seek only displays salary when the advertiser publishes it. Many advertisers don't, so the field is blank for those listings - this is a limitation of the source data, not the scraper.

**How do I get the full job description text?**
Enable the **Scrape Full Description** option. Runs take longer because each job is fetched individually, but you get the complete posting text in the `description` field.

**How do I search multiple roles at once?**
Add several entries to `keywords`. Each one runs as its own search and returns up to `maxResults` jobs, all written to the same dataset.

**How many results can I get per keyword?**
Set `maxResults` to anything up to 1000 per keyword. It defaults to a small number to keep your first run cheap.

### Related actors

- [Indeed Jobs Scraper](https://apify.com/thirdwatch/indeed-jobs-scraper)
- [LinkedIn Jobs Scraper](https://apify.com/thirdwatch/linkedin-jobs-scraper)
- [Adzuna Jobs Scraper](https://apify.com/thirdwatch/adzuna-jobs-scraper)

Built by [Thirdwatch](https://thirdwatch.dev).

Last verified: 2026-06

# Actor input Schema

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

List of job search terms (e.g. 'software engineer', 'data analyst', 'nurse'). Each keyword returns up to maxResults jobs.

## `where` (type: `string`):

Location filter for the search (e.g. 'All Australia', 'Sydney NSW', 'Melbourne VIC', 'Brisbane QLD').

## `siteKey` (type: `string`):

Seek regional site key. Use 'AU-Main' for Australia or 'NZ-Main' for New Zealand.

## `scrapeDescription` (type: `boolean`):

If enabled, fetches the full job description for each listing. Slower but richer. Disabled by default - the short teaser and bullet points are always returned either way.

## `maxResults` (type: `integer`):

Maximum number of job listings to extract per keyword. Starts low to keep your first run cheap - raise it once you've confirmed the output looks right.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "where": "All Australia",
  "siteKey": "AU-Main",
  "scrapeDescription": false,
  "maxResults": 5
}
```

# Actor output Schema

## `results` (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": [
        "software engineer"
    ],
    "where": "All Australia",
    "siteKey": "AU-Main",
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/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": ["software engineer"],
    "where": "All Australia",
    "siteKey": "AU-Main",
    "maxResults": 5,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "software engineer"
  ],
  "where": "All Australia",
  "siteKey": "AU-Main",
  "maxResults": 5
}' |
apify call thirdwatch/seek-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=thirdwatch/seek-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Seek Jobs Scraper - Salary & Descriptions",
        "description": "Scrape job listings from Seek (seek.com.au), Australia's largest job board. Get titles, companies, locations, salary, work types, classifications, work arrangements, teasers, bullet points, and optional full HTML descriptions. Pure HTTP, no API key or proxy needed.",
        "version": "1.0",
        "x-build-id": "JcMXTHdDFpYhQ2vw2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thirdwatch~seek-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thirdwatch-seek-jobs-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/thirdwatch~seek-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-thirdwatch-seek-jobs-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/thirdwatch~seek-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-thirdwatch-seek-jobs-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",
                "required": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Job Search Keywords",
                        "type": "array",
                        "description": "List of job search terms (e.g. 'software engineer', 'data analyst', 'nurse'). Each keyword returns up to maxResults jobs.",
                        "default": [
                            "software engineer"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "where": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location filter for the search (e.g. 'All Australia', 'Sydney NSW', 'Melbourne VIC', 'Brisbane QLD').",
                        "default": "All Australia"
                    },
                    "siteKey": {
                        "title": "Site Key",
                        "enum": [
                            "AU-Main",
                            "NZ-Main"
                        ],
                        "type": "string",
                        "description": "Seek regional site key. Use 'AU-Main' for Australia or 'NZ-Main' for New Zealand.",
                        "default": "AU-Main"
                    },
                    "scrapeDescription": {
                        "title": "Scrape Full Description",
                        "type": "boolean",
                        "description": "If enabled, fetches the full job description for each listing. Slower but richer. Disabled by default - the short teaser and bullet points are always returned either way.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of job listings to extract per keyword. Starts low to keep your first run cheap - raise it once you've confirmed the output looks right.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
