# SEEK Scraper - Australian Job Listings and Salary Data (`parseforge/seek-scraper`) Actor

Search and extract job listings from SEEK Australia by keyword, location, salary range, and work type. Collect job titles, companies, salaries, descriptions, and screening questions. Download as CSV, JSON, or Excel — no login needed.

- **URL**: https://apify.com/parseforge/seek-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Lead generation, Other
- **Stats:** 133 total users, 23 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

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

## 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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🏢 SEEK Job Scraper

> 🚀 **Collect job listings from Australia's largest job board in minutes.** Search by keyword, location, classification, work type, salary range, and date. Export job titles, companies, salaries, descriptions, and screening questions. No coding, no SEEK account required.

> 🕒 **Last updated:** 2026-04-24 · **📊 25+ fields** per job · **🔍 8 search filters** · **💰 Salary data** · **🚫 No auth** required

The **SEEK Job Scraper** collects job listing data from seek.com.au, returning **25+ fields per job**: title, company, salary range, location, work type, classification, posting date, full job description, screening questions, and application URL. Runs support up to 1,000,000 listings on a paid plan.

The Actor supports two input modes: keyword search with filters and direct SEEK URL mode. Filters include location, job classification and sub-classification, work type (full-time, part-time, contract, casual), salary range, and posting date. Optionally fetch full detail pages with job descriptions and screening questions.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Recruitment agencies, HR teams, career platforms, job seekers, workforce analysts, salary benchmarking firms | Job market monitoring, competitor hiring intelligence, salary analysis, candidate pipeline building, job aggregation |

---

### 📋 What the SEEK Job Scraper does

Two input modes with eight filters:

- 🔍 **Keyword search.** Search by job title, skills, or keywords (e.g. "software engineer", "data analyst").
- 🔗 **URL mode.** Paste any SEEK search URL with filters already applied.
- 📍 **Location filter.** City, state, or region (e.g. "Sydney NSW", "Melbourne VIC", "All Australia").
- 📂 **Classification filter.** Job category and sub-category IDs from SEEK's taxonomy.
- 🏷️ **Work type filter.** Full-time, part-time, contract, casual.
- 💰 **Salary range filter.** Min-max salary (e.g. "50000-80000").
- 📅 **Date range filter.** Filter by posting recency.
- 📝 **Include details toggle.** Fetch full descriptions and screening questions from detail pages.

Each job record includes title, company, location, work area, salary range, work type, classification, posting date, listing URL, and (when details enabled) full description, key responsibilities, screening questions, and contact info.

> 💡 **Why it matters:** manually browsing SEEK for market intelligence means clicking through pages of results and copying data by hand. This Actor exports structured job data at scale, ready for your recruitment dashboard, salary benchmark, or workforce-planning pipeline.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td>keywords</td><td>string</td><td>""</td><td>Job title, skills, or keywords to search for.</td></tr>
<tr><td>maxItems</td><td>integer</td><td>10</td><td>Max jobs. Free: up to 100. Paid: up to 1,000,000.</td></tr>
<tr><td>startUrl</td><td>string</td><td>""</td><td>Direct SEEK search URL. Use this or keyword search, not both.</td></tr>
<tr><td>where</td><td>string</td><td>""</td><td>Location (e.g. "Sydney NSW", "Melbourne VIC").</td></tr>
<tr><td>classification</td><td>string</td><td>""</td><td>SEEK category ID (e.g. "6281" for IT).</td></tr>
<tr><td>subClassification</td><td>string</td><td>""</td><td>Sub-category ID (e.g. "6287" for Developers).</td></tr>
<tr><td>workType</td><td>string</td><td>""</td><td>Full-time, part-time, contract, casual.</td></tr>
<tr><td>salaryRange</td><td>string</td><td>""</td><td>Min-max salary (e.g. "80000-120000").</td></tr>
<tr><td>dateRange</td><td>string</td><td>""</td><td>Posting recency filter.</td></tr>
<tr><td>includeDetails</td><td>boolean</td><td>false</td><td>Fetch full descriptions and screening questions.</td></tr>
</tbody>
</table>

**Example: software engineer jobs in Sydney, $100K+.**

```json
{
    "keywords": "software engineer",
    "where": "Sydney NSW",
    "salaryRange": "100000-200000",
    "includeDetails": true,
    "maxItems": 50
}
````

**Example: all contract data analyst jobs in Melbourne.**

```json
{
    "keywords": "data analyst",
    "where": "Melbourne VIC",
    "workType": "contract",
    "maxItems": 100
}
```

> ⚠️ **Good to Know:** enabling `includeDetails` fetches each job's detail page for full descriptions and screening questions. This is slower (1-2 seconds per job) but returns much richer data. Residential proxies are recommended for detail-page fetching.

***

### 📊 Output

Each job record contains **25+ fields** (with details enabled). Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 📝 `title` | string | `"Senior Software Engineer"` |
| 🏢 `company` | string | `"Atlassian"` |
| 📍 `location` | string | `"Sydney NSW"` |
| 💰 `salary` | string | `"$120,000 - $150,000"` |
| 🏷️ `workType` | string | `"Full-time"` |
| 📂 `classification` | string | `"Information & Communication Technology"` |
| 📂 `subClassification` | string | `"Developers/Programmers"` |
| 📅 `postedDate` | string | `"2026-04-14"` |
| 🔗 `jobUrl` | string | `"https://www.seek.com.au/job/12345678"` |
| 📝 `description` | string | null | `"We're looking for a Senior..."` |
| ❓ `screeningQuestions` | array | null | `["Do you have 5+ years experience?"]` |
| 👤 `contactName` | string | null | `"Jane Smith"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-04-16T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>💼 Full-time engineer with salary and details</strong></summary>

```json
{
    "title": "Senior Software Engineer",
    "company": "Atlassian",
    "location": "Sydney NSW",
    "salary": "$120,000 - $150,000",
    "workType": "Full-time",
    "classification": "Information & Communication Technology",
    "subClassification": "Developers/Programmers",
    "postedDate": "2026-04-14",
    "jobUrl": "https://www.seek.com.au/job/12345678",
    "description": "We're looking for a Senior Software Engineer to join our Cloud Platform team...",
    "screeningQuestions": ["Do you have 5+ years of professional experience?", "Are you eligible to work in Australia?"],
    "contactName": "Jane Smith",
    "scrapedAt": "2026-04-16T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>📋 Contract data analyst without salary</strong></summary>

```json
{
    "title": "Data Analyst",
    "company": "Government Agency",
    "location": "Canberra ACT",
    "salary": null,
    "workType": "Contract",
    "classification": "Information & Communication Technology",
    "subClassification": "Business/Systems Analysts",
    "postedDate": "2026-04-12",
    "jobUrl": "https://www.seek.com.au/job/87654321",
    "description": null,
    "screeningQuestions": null,
    "contactName": null,
    "scrapedAt": "2026-04-16T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🏗️ Part-time role in a different sector</strong></summary>

```json
{
    "title": "Retail Sales Associate",
    "company": "JB Hi-Fi",
    "location": "Melbourne VIC",
    "salary": "$28 - $32 per hour",
    "workType": "Part-time",
    "classification": "Retail & Consumer Products",
    "subClassification": "Sales Assistants",
    "postedDate": "2026-04-15",
    "jobUrl": "https://www.seek.com.au/job/11223344",
    "description": null,
    "screeningQuestions": null,
    "contactName": null,
    "scrapedAt": "2026-04-16T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🔍 | **Eight search filters.** Keyword, location, classification, sub-classification, work type, salary, date, and detail toggle. |
| 💰 | **Salary data.** Salary ranges when published by the employer. |
| 📝 | **Full descriptions.** Optional detail-page fetching for descriptions and screening questions. |
| 📂 | **SEEK taxonomy.** Classification and sub-classification for structured job categorization. |
| 🔗 | **Two input modes.** Keyword search or direct SEEK URL. |
| ⚡ | **Scalable.** From quick 10-job samples to full market sweeps. |
| 🚫 | **No authentication.** No SEEK account or API key needed. |

> 📊 SEEK lists over 80,000 active jobs across Australia and New Zealand. Structured access to this data powers every recruitment, salary-benchmarking, and workforce-planning workflow in the ANZ market.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ SEEK Job Scraper** *(this Actor)* | $5 free credit, then pay-per-use | All SEEK listings | **Live per run** | keyword, location, classification, salary, work type | ⚡ 2 min |
| SEEK API (employer access) | Paid, employer-only | Job posting API | Real-time | Many | 🐢 Weeks |
| Paid job intelligence platforms | $200-1,000/month | Multi-board | Varies | Many | ⏳ Days |
| Manual SEEK browsing | Free | Manual | Manual | SEEK UI | 🕒 Hours per search |

Pick this Actor when you want SEEK data on demand, with classification and salary filters, without employer API access.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the SEEK Job Scraper page on the Apify Store.
3. 🎯 **Set input.** Enter keywords and location, pick a classification, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🏢 Recruitment Agencies

- Monitor job market trends by classification
- Track competitor employer hiring activity
- Build candidate pipeline with salary benchmarks
- Identify skill-demand shifts by region

</td>
<td width="50%" valign="top">

#### 📊 HR & Workforce Planning

- Benchmark salaries against market rates
- Analyze job posting volume by location
- Track hiring patterns across industries
- Build workforce supply-demand models

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 💻 Career Platforms & Aggregators

- Aggregate SEEK listings into custom job boards
- Enrich job recommendations with SEEK data
- Build salary comparison tools
- Power job-alert features with fresh data

</td>
<td width="50%" valign="top">

#### 🎓 Job Seekers & Career Advisors

- Research salary ranges before negotiations
- Monitor new postings in target roles daily
- Compare job requirements across employers
- Track which skills are in demand

</td>
</tr>
</table>

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🔌 Automating SEEK Job Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Daily pulls keep your job-market dashboard in sync automatically.

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20SEEK%20SCRAPER%20-%20AUSTRALIAN%20JOB%20LISTINGS%20AND%20SALARY%20DATA%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20SEEK%20SCRAPER%20-%20AUSTRALIAN%20JOB%20LISTINGS%20AND%20SALARY%20DATA%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20SEEK%20SCRAPER%20-%20AUSTRALIAN%20JOB%20LISTINGS%20AND%20SALARY%20DATA%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20SEEK%20SCRAPER%20-%20AUSTRALIAN%20JOB%20LISTINGS%20AND%20SALARY%20DATA%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Enter keywords, location, and filters in the input form (or paste a SEEK URL), click Start, and the Actor collects job listings from SEEK's search results, optionally fetches detail pages, and returns one structured record per job.

#### 📏 How accurate is the data?

The data is collected from SEEK's public listing pages. Job details, salaries, and posting dates reflect the state at the time of the run. Jobs can be updated or removed on SEEK after scraping.

#### 💰 Does it include salary data?

Yes, when employers publish salary ranges. Not all SEEK listings include salary information. The `salary` field will be null for listings without published pay.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor daily or weekly and keep your recruitment intelligence fresh.

#### ⚖️ Is this data legal to use?

This Actor collects publicly listed job postings from seek.com.au. Review SEEK's terms of service for your specific downstream use case.

#### 💼 Can I use this data commercially?

Yes, for analytics, recruitment, and internal dashboards. For republication of job listing content, review SEEK's terms of service.

#### 💳 Do I need a paid Apify plan?

No. The free plan is enough for testing (up to 100 jobs per run). A paid plan lifts the limit.

#### 🔁 What happens if a run fails?

Apify automatically retries transient errors. Partial datasets are preserved.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

SEEK Job Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get alerts on new matching jobs
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe job data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

***

### 🔗 Recommended Actors

- [**💼 LinkedIn Jobs Scraper**](https://apify.com/parseforge/linkedin-jobs-scraper) - Job listings from LinkedIn
- [**🔐 ClearedJobs Scraper**](https://apify.com/parseforge/clearedjobs-scraper) - Security-cleared job listings
- [**🏢 Indeed Scraper**](https://apify.com/parseforge/indeed-scraper) - Job listings from Indeed
- [**📊 Glassdoor Jobs Scraper**](https://apify.com/parseforge/glassdoor-scraper-jobs) - Jobs with salary and company data
- [**🎉 Eventbrite Scraper**](https://apify.com/parseforge/eventbrite-scraper) - Event listings and organizer data

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more job and employment data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by SEEK Limited or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. Only publicly available job listing data is collected.

# Actor input Schema

## `keywords` (type: `string`):

Job title, skills or keywords to search for (e.g. 'software engineer', 'nurse', 'project manager'). If omitted, returns all jobs.

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

Free users: Limited to 100. Paid users: Optional, max 1,000,000.

## `startUrl` (type: `string`):

SEEK search URL to scrape (e.g. https://www.seek.com.au/software-engineer-jobs/in-All-Australia). If provided, Keywords and Filters below are ignored.

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

Location to search in (e.g. 'Sydney NSW', 'Melbourne VIC', 'All Australia'). Defaults to All Australia.

## `classification` (type: `string`):

Job category ID from SEEK (e.g. '6281' for Information & Communication Technology, '1200' for Accounting).

## `subClassification` (type: `string`):

Sub-category ID (e.g. '6287' for Developers/Programmers). Use together with Classification.

## `workType` (type: `string`):

Filter by work type.

## `dateRange` (type: `string`):

Filter by how recently jobs were posted.

## `salaryRange` (type: `string`):

Filter by salary range (e.g. '50000-80000'). Provide as min-max annual.

## `sortMode` (type: `string`):

How to sort the results.

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

Fetch full job description, screening questions, and contact details for each listing. Slower but returns much more data.

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

Proxy settings used when fetching full job detail pages. Residential proxies are recommended for bypassing Cloudflare on individual job pages.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests (only applies when Include Full Job Details is enabled). Lower this if you get rate-limited.

## `requestDelayMs` (type: `integer`):

Milliseconds to wait between page requests. Increase if the site rate-limits you.

## Actor input object example

```json
{
  "keywords": "software engineer",
  "maxItems": 10,
  "sortMode": "KeywordRelevance",
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 10,
  "requestDelayMs": 0
}
```

# Actor output Schema

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

Dataset with all scraped items

# 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",
    "maxItems": 10,
    "includeDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/seek-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",
    "maxItems": 10,
    "includeDetails": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/seek-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",
  "maxItems": 10,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parseforge/seek-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEEK Scraper - Australian Job Listings and Salary Data",
        "description": "Search and extract job listings from SEEK Australia by keyword, location, salary range, and work type. Collect job titles, companies, salaries, descriptions, and screening questions. Download as CSV, JSON, or Excel — no login needed.",
        "version": "1.0",
        "x-build-id": "QHiOMfVp67bIdtdks"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~seek-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-seek-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~seek-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-seek-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~seek-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-seek-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Job title, skills or keywords to search for (e.g. 'software engineer', 'nurse', 'project manager'). If omitted, returns all jobs."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 100. Paid users: Optional, max 1,000,000."
                    },
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "SEEK search URL to scrape (e.g. https://www.seek.com.au/software-engineer-jobs/in-All-Australia). If provided, Keywords and Filters below are ignored."
                    },
                    "where": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location to search in (e.g. 'Sydney NSW', 'Melbourne VIC', 'All Australia'). Defaults to All Australia."
                    },
                    "classification": {
                        "title": "Classification",
                        "type": "string",
                        "description": "Job category ID from SEEK (e.g. '6281' for Information & Communication Technology, '1200' for Accounting)."
                    },
                    "subClassification": {
                        "title": "Sub-Classification",
                        "type": "string",
                        "description": "Sub-category ID (e.g. '6287' for Developers/Programmers). Use together with Classification."
                    },
                    "workType": {
                        "title": "Work Type",
                        "enum": [
                            "",
                            "full time",
                            "part time",
                            "contract temp",
                            "casual vacation"
                        ],
                        "type": "string",
                        "description": "Filter by work type."
                    },
                    "dateRange": {
                        "title": "Date Posted",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "14",
                            "31"
                        ],
                        "type": "string",
                        "description": "Filter by how recently jobs were posted."
                    },
                    "salaryRange": {
                        "title": "Salary Range",
                        "type": "string",
                        "description": "Filter by salary range (e.g. '50000-80000'). Provide as min-max annual."
                    },
                    "sortMode": {
                        "title": "Sort By",
                        "enum": [
                            "KeywordRelevance",
                            "ListedDate"
                        ],
                        "type": "string",
                        "description": "How to sort the results.",
                        "default": "KeywordRelevance"
                    },
                    "includeDetails": {
                        "title": "Include Full Job Details",
                        "type": "boolean",
                        "description": "Fetch full job description, screening questions, and contact details for each listing. Slower but returns much more data.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings used when fetching full job detail pages. Residential proxies are recommended for bypassing Cloudflare on individual job pages."
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of parallel requests (only applies when Include Full Job Details is enabled). Lower this if you get rate-limited.",
                        "default": 10
                    },
                    "requestDelayMs": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Milliseconds to wait between page requests. Increase if the site rate-limits you.",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
