# SEEK Job Scraper (`kinaesthetic_millionaire/seek-job-scraper`) Actor

Scrapes job listings from SEEK, extracting job title, company, location, salary, posted date, and description.

- **URL**: https://apify.com/kinaesthetic\_millionaire/seek-job-scraper.md
- **Developed by:** [Parsedom Inc](https://apify.com/kinaesthetic_millionaire) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

### What does SEEK Job Scraper do?

**SEEK Job Scraper** extracts job listings from [SEEK](https://www.seek.co.nz), one of the largest job boards in New Zealand and Australia. It works with **any SEEK country site** — seek.co.nz, seek.com.au, seek.com.sg, seek.co.th, seek.com.ph, seek.com.mx, seek.com.hk, and more. Give it one or more SEEK search or category URLs and it returns structured data for every listing — job title, company, location, salary, posted date, description, and the listing URL.

Because it runs on the Apify platform, you get automatic proxy rotation, scheduling, webhooks, and integrations with tools like Zapier, Make, and Google Sheets — no infrastructure to maintain.

<img src="https://i.postimg.cc/rsrDcjmH/how-seek-job-scraper-works.png" alt="How the SEEK Job Scraper Apify Actor works: provide input, the actor scrapes the site, get structured output" />

### Why use SEEK Job Scraper?

- **Job market research** — track hiring trends, in-demand roles, and salary ranges across industries and regions.
- **Recruitment and sourcing** — build a feed of new openings matching your criteria without manually browsing SEEK.
- **Lead generation** — identify companies that are actively hiring for staffing agencies or B2B outreach.
- **Competitive intelligence** — monitor how competitors are hiring and what they're paying.

### How to use SEEK Job Scraper

1. Click **Try for free** to open the Actor in Apify Console.
2. Add one or more SEEK search URLs under **Start URLs** (e.g. a search results page or job category page) — from any SEEK country site.
3. Set **Max jobs per start URL** to control how many listings to scrape from each URL.
4. Click **Start** and wait for the run to finish.
5. Download your results from the **Dataset** tab, or connect them to your workflow via webhook or integration.

### Input

The Actor accepts the following input fields (see the **Input** tab for the full schema):

| Field | Type | Description |
|---|---|---|
| `startUrls` | array | SEEK search or category URLs to scrape. |
| `maxItems` | integer | Maximum number of job listings to scrape per start URL. `0` means unlimited. |
| `proxyConfiguration` | object | Proxy settings. Uses Apify Proxy by default. |

#### What to put in each field

- **`startUrls`** — Go to SEEK, search or filter for the jobs you want (by keyword, location, category, salary, etc.), then copy the resulting page URL and paste it here. This must be a search-results or category page, e.g. `https://nz.seek.com/Software-Engineer-jobs` or `https://www.seek.com.au/data-scientist-jobs/in-Sydney-NSW-2000`. Do **not** paste a link to a single job listing — the Actor discovers individual jobs itself from the search results. You can add multiple start URLs to scrape several searches (or SEEK country sites) in one run.
- **`maxItems`** — How many job listings you want, counted separately per start URL. For example, `maxItems: 20` with two start URLs returns up to 40 jobs total (up to 20 from each). Leave it at the default for a quick sample run, raise it for a full export, or set it to `0` to scrape every listing the search returns.
- **`proxyConfiguration`** — Leave this on the default setting (Apify Proxy, Residential group). SEEK blocks Apify's shared datacenter proxy pool, so Residential is required for reliable results.

Example input:

```json
{
    "startUrls": [{ "url": "https://nz.seek.com/Software-Engineer-jobs" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

### Output

Each scraped job listing is stored as a single item in the dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Example output:

```json
{
    "title": "Senior Software Engineer",
    "company": "Example Company Ltd",
    "location": "Auckland",
    "salary": "$120,000 - $140,000",
    "postedDate": "2026-07-15",
    "description": "We are looking for an experienced software engineer...",
    "url": "https://www.seek.co.nz/job/12345678"
}
```

#### Data table

| Field | Description |
|---|---|
| `title` | Job title |
| `company` | Hiring company / advertiser name |
| `location` | Job location |
| `salary` | Salary or pay range, if disclosed |
| `postedDate` | Date the job was posted, converted from SEEK's relative date text |
| `description` | Full job description text |
| `url` | Link to the job listing on SEEK |

### How much does it cost to scrape SEEK data?

This Actor runs on Apify's pay-per-usage pricing based on compute time. A run scraping a few dozen listings typically finishes in a couple of minutes and costs a fraction of a compute unit. Apify's free tier includes monthly platform credits, so light usage can often run at no extra cost. Use **Max jobs per start URL** to control run size and cost.

### Tips and advanced options

- Use narrower SEEK search URLs (e.g. filtered by keyword, location, or category) to scrape more targeted results and reduce run time.
- Lower **Max jobs per start URL** for quick daily monitoring runs; raise it for one-off bulk exports.
- Schedule the Actor on Apify to run daily or weekly and track new listings over time.

### FAQ and disclaimers

This Actor only extracts publicly available job listing data from SEEK. Use it in accordance with SEEK's Terms of Service and applicable laws in your jurisdiction. Website structure changes may occasionally affect scraping — if you notice missing or incorrect data, please report it via the **Issues** tab.

### 🤝 Support

Need help or have questions?

- Email us at <info@parsedom.com>
- Or visit <https://parsedom.com>
- Visit our profile on Fiverr: <https://www.fiverr.com/s/rEmNqEb>
- Apify public page: <https://apify.com/kinaesthetic_millionaire>
- You can also contact us if you want to build a custom actor.

Ready to scrape more listings? Add your URLs and start scraping! 🚀

# Actor input Schema

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

One or more SEEK search-results or job-category page URLs, from any SEEK country site (e.g. seek.co.nz, seek.com.au, seek.com.sg). Copy the URL directly from your browser after applying filters (keyword, location, category) on SEEK — do not paste a single job listing URL here.

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

Maximum number of job listings to scrape, counted separately for each start URL. Set to 0 to scrape every listing found.

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

Proxy used to fetch SEEK pages. SEEK blocks Apify's shared datacenter proxy pool, so Residential proxy is used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://nz.seek.com/Software-Engineer-jobs"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://nz.seek.com/Software-Engineer-jobs"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kinaesthetic_millionaire/seek-job-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 = {
    "startUrls": [{ "url": "https://nz.seek.com/Software-Engineer-jobs" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("kinaesthetic_millionaire/seek-job-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 '{
  "startUrls": [
    {
      "url": "https://nz.seek.com/Software-Engineer-jobs"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call kinaesthetic_millionaire/seek-job-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEEK Job Scraper",
        "description": "Scrapes job listings from SEEK, extracting job title, company, location, salary, posted date, and description.",
        "version": "1.0",
        "x-build-id": "wQrjEETW576Oo4hTh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kinaesthetic_millionaire~seek-job-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kinaesthetic_millionaire-seek-job-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/kinaesthetic_millionaire~seek-job-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kinaesthetic_millionaire-seek-job-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/kinaesthetic_millionaire~seek-job-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kinaesthetic_millionaire-seek-job-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "One or more SEEK search-results or job-category page URLs, from any SEEK country site (e.g. seek.co.nz, seek.com.au, seek.com.sg). Copy the URL directly from your browser after applying filters (keyword, location, category) on SEEK — do not paste a single job listing URL here.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max jobs per start URL",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of job listings to scrape, counted separately for each start URL. Set to 0 to scrape every listing found.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to fetch SEEK pages. SEEK blocks Apify's shared datacenter proxy pool, so Residential proxy is used by default."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
