# SEEK Jobs Scraper — Australia & NZ Job Data (`sian.agency/seek-jobs-scraper`) Actor

SEEK job scraper for Australia & New Zealand. Extract job listings by keyword, location or search URL: title, company, salary, location, work type, classification, posting date and full description — clean JSON/CSV. No code, no SEEK API key needed.

- **URL**: https://apify.com/sian.agency/seek-jobs-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.41 / 1,000 job listing extracteds

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

## SEEK Jobs Scraper — Australia & NZ Job Listings Data 🦘

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Jobs Search API](https://img.shields.io/badge/Store-Jobs%20Search%20API-1AE392)](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) [![Glassdoor Data Scraper](https://img.shields.io/badge/Store-Glassdoor%20Data%20Scraper-0CAA41)](https://apify.com/sian.agency/glassdoor-data-scraper?fpr=sian) [![Upwork Jobs Scraper](https://img.shields.io/badge/Store-Upwork%20Jobs%20Scraper-6FDA44)](https://apify.com/sian.agency/upwork-jobs-scraper?fpr=sian)

#### 🎉 Turn any SEEK search into a clean job dataset — keyword, location & URL search, full descriptions, salaries, and 30+ fields per job
##### Built for recruiters, talent-sourcers, market researchers, and job-aggregator builders across Australia & New Zealand

---

### 📋 Overview

**Need SEEK job data without copy-pasting?** This scraper turns any SEEK (seek.com.au / seek.co.nz) search into a clean, structured dataset — by keyword and location, by a pasted search URL, or by job ID for full detail — exported as JSON, CSV or Excel.

**Why thousands of professionals choose us:**
- ✅ **Every field that matters**: title, company, salary, location, work type, classification, posting date, full description, bullet points, company profile & more
- ⚡ **Two speeds**: fast bulk **Overview** for thousands of listings, or rich **Detail** with the complete job description
- 🎯 **SEEK's own filters**: work type, salary range, classification, work arrangement, sort order — preserved from a pasted search URL or set directly
- 💰 **Pay only for results**: transparent pay-per-job pricing, no charge for invalid input, generous free tier
- 💎 **AU + NZ in one tool**: seek.com.au and seek.co.nz, no account or API key required
- ✨ **Detail extras**: contact phone number (when published), company profile, share link and salary currency

---

### ✨ Features

- 🔍 **Keyword + location search** — search like you would on SEEK ("developer" in "Sydney NSW")
- 🔗 **Paste-a-URL mode** — drop in any SEEK search URL and keep all its filters
- 🆔 **Job-ID mode** — fetch exact jobs by ID or URL for the full description
- ⚡ **Bulk Overview** — thousands of listings, paginated automatically
- 🔎 **Full Detail** — complete HTML job description, salary + currency, company profile
- 🎛️ **Native filters** — work type, salary range, classification, work arrangement, sort order
- 🌏 **AU & NZ** — switch between seek.com.au and seek.co.nz
- 📤 **Clean exports** — JSON, CSV and Excel, ready for analysis or your CRM

---

### 🎬 Quick Start

Provide a keyword and a location, pick a mode, and run. Results stream into your dataset and are ready to download in seconds.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~seek-jobs-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"scrapeMode":"overview","keywords":"developer","where":"Sydney NSW","maxResults":50}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your mode

Pick **Overview** for fast bulk listings or **Detail** for the full job description.

#### Step 2: Tell it what to find

Enter `keywords` + `where`, paste one or more SEEK search URLs, or list job IDs (Detail).

#### Step 3: Run and export

Start the actor and download your results as JSON, CSV or Excel.

**That's it! In under a minute, you'll have:**

- A clean table of SEEK jobs
- Salaries, companies and locations
- Full descriptions ready for analysis

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (bulk) or `detail` (full description) |
| searchMode | string | No | `bySearch`, `bySearchUrl`, or `byJobId` (Detail only) |
| keywords | string | No | Role / skill to search, e.g. `developer` |
| where | string | No | Location, e.g. `Sydney NSW` or `All Australia` |
| country | string | No | `AU` (seek.com.au) or `NZ` (seek.co.nz) |
| searchUrls | array | No | One or more SEEK search URLs (filters preserved) |
| jobIds | array | No | Job IDs or URLs to fetch in Detail mode |
| maxResults | integer | No | Max jobs per run (FREE: 25, PAID: unlimited) |
| worktype, salaryrange, classification, workarrangement, sortmode | string | No | Optional SEEK filters |

**Example — keyword search:**

```json
{
  "scrapeMode": "overview",
  "keywords": "registered nurse",
  "where": "Melbourne VIC",
  "maxResults": 100
}
```

**Example — paste a search URL:**

```json
{
  "scrapeMode": "overview",
  "searchMode": "bySearchUrl",
  "searchUrls": ["https://www.seek.com.au/developer-jobs/in-Sydney-NSW"]
}
```

**Example — full detail by job ID:**

```json
{
  "scrapeMode": "detail",
  "searchMode": "byJobId",
  "jobIds": ["92875670", "https://www.seek.com.au/job/92847923"]
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **30+ fields**, including:

| Field | Type | Description |
|-------|------|-------------|
| propertyTitle | string | Job advertisement title |
| company | string | Hiring company / employer |
| salary | string | Salary label as published |
| currency | string | Salary currency (Detail) |
| location | string | Job location |
| workType | string | Full time, Part time, Contract, Casual |
| workArrangement | string | On-site, Remote, Hybrid |
| classification | string | SEEK industry classification |
| listingDate | string | ISO posting date |
| teaser | string | Short abstract |
| descriptionHtml | string | Full job description HTML (Detail) |
| bulletPoints | array | Highlight bullet points |
| phoneNumber | string | Contact phone, when published (Detail) |
| companyProfileSlug | string | Company profile (Detail) |
| shareLink | string | Shareable job link (Detail) |
| url | string | Canonical SEEK job URL |

**Example:**

```json
{
  "id": "92875670",
  "url": "https://www.seek.com.au/job/92875670",
  "propertyTitle": "System Development Engineer",
  "company": "Protecht Group",
  "location": "Sydney NSW",
  "salary": null,
  "workType": "Full time",
  "workArrangement": "Hybrid",
  "classification": "Information & Communication Technology",
  "listingDate": "2026-06-21T23:40:25Z",
  "teaser": "Design and build scalable APIs and integrations for a global SaaS platform.",
  "bulletPoints": ["Market leader in enterprise risk management", "Hybrid & flexible work"],
  "source": "overview"
}
```

***

### 💼 Use Cases & Examples

#### 1. Recruitment Market Research

**Recruitment agencies tracking demand and competitor hiring across AU & NZ.**

**Input:** keyword + location searches by industry
**Output:** a daily table of open roles, companies and salaries
**Use:** spot hiring trends and pitch the right clients first

#### 2. Salary Benchmarking

**HR and compensation teams setting pay bands.**

**Input:** role keywords with salary-range filters
**Output:** salary labels and currency by role and region
**Use:** build defensible, market-anchored salary bands

#### 3. Talent-Pool & Lead Sourcing

**Sourcers building lists of hiring companies.**

**Input:** classification + location searches
**Output:** companies actively hiring, with profile links and contact details where published
**Use:** target outreach to companies with live demand

#### 4. Job-Aggregator & Job-Board Feeds

**Product teams powering a niche job board.**

**Input:** scheduled keyword searches across categories
**Output:** fresh listings with full descriptions for republishing
**Use:** keep an aggregator current without manual entry

#### 5. Labour-Market & Economic Analytics

**Analysts and researchers studying the job market.**

**Input:** broad searches across classifications and regions
**Output:** structured time-series of postings, work types and arrangements
**Use:** measure demand, remote-work share and regional shifts

#### 6. Competitive Hiring Intelligence

**Strategy teams watching rivals' headcount plans.**

**Input:** company-targeted search URLs
**Output:** every role a competitor is advertising
**Use:** infer roadmap and expansion from hiring signals

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/seek-jobs-scraper').call({
  scrapeMode: 'overview',
  keywords: 'developer',
  where: 'Sydney NSW',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/seek-jobs-scraper').call(
    run_input={'scrapeMode': 'overview', 'keywords': 'developer', 'where': 'Sydney NSW'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~seek-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","keywords":"developer","where":"Sydney NSW"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet, CRM or database, or notify your team

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Up to 25 jobs** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** jobs per run
- Faster processing, no delays
- Pay-per-result: only charged for jobs actually extracted

💰 **Transparent pay-per-job pricing** — no charge for invalid input, and the high-volume Overview event is the cheapest way to pull SEEK data at scale.

🔗 [View current pricing](https://apify.com/sian.agency/seek-jobs-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many jobs can I extract?**
A: FREE tier: 25 per run. PAID tier: unlimited.

**Q: Does it cover New Zealand too?**
A: Yes — set `country` to `NZ` for seek.co.nz, or `AU` for seek.com.au.

**Q: What's the difference between Overview and Detail?**
A: Overview is fast bulk listing data. Detail adds the full HTML job description, salary currency, company profile, share link and phone number (when published).

**Q: Can I use my own SEEK search filters?**
A: Yes — paste a SEEK search URL and its filters are preserved, or set work type, salary range, classification, work arrangement and sort order directly.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Do I need a SEEK account or API key?**
A: No. Just provide your search and run.

**Q: Is this legal?**
A: We only extract publicly available data. See the legal section below.

***

### 🐛 Troubleshooting

**No results returned**

- Check your `keywords` and `where` spelling (use SEEK's own location labels, e.g. "Sydney NSW")
- Broaden the search or set `where` to `All Australia`

**Fewer results than expected**

- FREE tier is capped at 25 jobs per run — upgrade for unlimited
- Lower `maxResults` only limits the run; raise it to get more

**Detail mode returns nothing for an ID**

- The listing may have expired or been removed; verify the job is still live on SEEK

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### ™️ Trademark Disclaimer

SEEK® is a registered trademark of SEEK Limited. This actor is an independent tool and is **not** affiliated with, endorsed by, or sponsored by SEEK Limited. "SEEK", seek.com.au and seek.co.nz are used only to describe the public website this tool helps you collect publicly available data from. All trademarks are the property of their respective owners.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

**Overview** — fast, cheap bulk listings from the search API (title, company, salary label, location, work type, classification, posting date, teaser, bullet points, logo).

**Detail** — richer per-job records (full HTML description, salary + currency, company profile, phone number when published, share link). Detail can read job IDs directly, or auto-discover them from a search.

## `searchMode` (type: `string`):

How the actor finds jobs.

- **By Search** — provide `keywords` and/or a `where` location.
- **By Search URL** — paste one or more seek.com.au search URLs (their filters are preserved).
- **By Job ID** — provide job IDs or job URLs directly (Detail mode only).

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

**KEYWORD SEARCH:** what role / skill to search for, e.g. `developer`, `registered nurse`, `data engineer`.

💡 **TIP:** combine with a `where` location to narrow results. Used by the **By Search** mode.

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

**LOCATION:** free-text locality SEEK understands, e.g. `Sydney NSW`, `Melbourne VIC`, `Brisbane QLD`, or `All Australia` for nationwide.

Used by the **By Search** mode.

## `country` (type: `string`):

**MARKET:** `AU` for seek.com.au (Australia) or `NZ` for seek.co.nz (New Zealand).

## `searchUrls` (type: `array`):

**SEARCH-URL MODE:** paste one or more seek.com.au search URLs — the actor preserves their keywords, location and filters.

📋 Click **Bulk edit** to paste URLs one per line.

Used by the **By Search URL** mode.

## `jobIds` (type: `array`):

**JOB-ID MODE (Detail only):** the SEEK job IDs (e.g. `92875670`) or full job URLs to fetch in detail.

📋 Click **Bulk edit** to paste one per line.

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

Maximum jobs to extract per run.

**TIER LIMITS:** FREE users up to 25 per run · PAID users unlimited. Lower it to keep runs cheap and fast.

## `worktype` (type: `string`):

SEEK work-type filter ID, e.g. `242` (Full time). Comma-separate for multiple. Optional.

## `salaryrange` (type: `string`):

Salary band, e.g. `100000-150000`. Optional.

## `salarytype` (type: `string`):

`annual` or `hourly`. Optional.

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

SEEK industry-classification ID, e.g. `6281` (Information & Communication Technology). Optional.

## `workarrangement` (type: `string`):

`1` On-site · `2` Remote · `3` Hybrid. Comma-separate for multiple. Optional.

## `sortmode` (type: `string`):

`ListedDate` (newest first) or `KeywordRelevance`. Optional.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "bySearch",
  "keywords": "developer",
  "where": "Sydney NSW",
  "country": "AU",
  "searchUrls": [
    "https://www.seek.com.au/developer-jobs/in-Sydney-NSW"
  ],
  "jobIds": [
    "92875670",
    "https://www.seek.com.au/job/92847923"
  ],
  "maxResults": 100
}
```

# Actor output Schema

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

The extracted SEEK job listings dataset (JSON/CSV/Excel).

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/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 '{}' |
apify call sian.agency/seek-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEEK Jobs Scraper — Australia & NZ Job Data",
        "description": "SEEK job scraper for Australia & New Zealand. Extract job listings by keyword, location or search URL: title, company, salary, location, work type, classification, posting date and full description — clean JSON/CSV. No code, no SEEK API key needed.",
        "version": "1.0",
        "x-build-id": "ss2RzfyjOE8fNInFK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~seek-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-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/sian.agency~seek-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-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/sian.agency~seek-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-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",
                "properties": {
                    "scrapeMode": {
                        "title": "🧭 Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "**Overview** — fast, cheap bulk listings from the search API (title, company, salary label, location, work type, classification, posting date, teaser, bullet points, logo).\n\n**Detail** — richer per-job records (full HTML description, salary + currency, company profile, phone number when published, share link). Detail can read job IDs directly, or auto-discover them from a search.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🔀 Search Mode",
                        "enum": [
                            "bySearch",
                            "bySearchUrl",
                            "byJobId"
                        ],
                        "type": "string",
                        "description": "How the actor finds jobs.\n\n- **By Search** — provide `keywords` and/or a `where` location.\n- **By Search URL** — paste one or more seek.com.au search URLs (their filters are preserved).\n- **By Job ID** — provide job IDs or job URLs directly (Detail mode only).",
                        "default": "bySearch"
                    },
                    "keywords": {
                        "title": "🔍 Keywords",
                        "type": "string",
                        "description": "**KEYWORD SEARCH:** what role / skill to search for, e.g. `developer`, `registered nurse`, `data engineer`.\n\n💡 **TIP:** combine with a `where` location to narrow results. Used by the **By Search** mode.",
                        "default": "developer"
                    },
                    "where": {
                        "title": "📍 Where (Location)",
                        "type": "string",
                        "description": "**LOCATION:** free-text locality SEEK understands, e.g. `Sydney NSW`, `Melbourne VIC`, `Brisbane QLD`, or `All Australia` for nationwide.\n\nUsed by the **By Search** mode.",
                        "default": "Sydney NSW"
                    },
                    "country": {
                        "title": "🌏 Country",
                        "enum": [
                            "AU",
                            "NZ"
                        ],
                        "type": "string",
                        "description": "**MARKET:** `AU` for seek.com.au (Australia) or `NZ` for seek.co.nz (New Zealand).",
                        "default": "AU"
                    },
                    "searchUrls": {
                        "title": "🔗 Search URLs (Bulk)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "**SEARCH-URL MODE:** paste one or more seek.com.au search URLs — the actor preserves their keywords, location and filters.\n\n📋 Click **Bulk edit** to paste URLs one per line.\n\nUsed by the **By Search URL** mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobIds": {
                        "title": "🆔 Job IDs or URLs (Bulk, Detail only)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "**JOB-ID MODE (Detail only):** the SEEK job IDs (e.g. `92875670`) or full job URLs to fetch in detail.\n\n📋 Click **Bulk edit** to paste one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum jobs to extract per run.\n\n**TIER LIMITS:** FREE users up to 25 per run · PAID users unlimited. Lower it to keep runs cheap and fast.",
                        "default": 100
                    },
                    "worktype": {
                        "title": "💼 Work Type",
                        "type": "string",
                        "description": "SEEK work-type filter ID, e.g. `242` (Full time). Comma-separate for multiple. Optional."
                    },
                    "salaryrange": {
                        "title": "💰 Salary Range",
                        "type": "string",
                        "description": "Salary band, e.g. `100000-150000`. Optional."
                    },
                    "salarytype": {
                        "title": "💵 Salary Type",
                        "type": "string",
                        "description": "`annual` or `hourly`. Optional."
                    },
                    "classification": {
                        "title": "🗂️ Classification ID",
                        "type": "string",
                        "description": "SEEK industry-classification ID, e.g. `6281` (Information & Communication Technology). Optional."
                    },
                    "workarrangement": {
                        "title": "🏠 Work Arrangement",
                        "type": "string",
                        "description": "`1` On-site · `2` Remote · `3` Hybrid. Comma-separate for multiple. Optional."
                    },
                    "sortmode": {
                        "title": "↕️ Sort Mode",
                        "type": "string",
                        "description": "`ListedDate` (newest first) or `KeywordRelevance`. Optional."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
