# $0.7💰 Seek AU/NZ Keyword & URL Job Search (`abotapi/seek-scraper`) Actor

From $0.7/1K. Extract job listings from SEEK.com.au and SEEK.co.nz in Australia and New Zealand. Get comprehensive data, including full descriptions, companies, salaries, locations, classifications, and listing dates, for any keyword, location, or filter combination.

- **URL**: https://apify.com/abotapi/seek-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.70 / 1,000 results

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 & New Zealand)

Extract job listings from **SEEK.com.au** and **SEEK.co.nz**, the largest job boards in Australia and New Zealand with hundreds of thousands of live roles. Get comprehensive data including full descriptions, companies, salaries, locations, classifications, and listing dates for any keyword, location, or filter combination.

### What does SEEK Jobs Scraper do?

This Actor collects job data from SEEK in two ways:

1. **Search by filters.** Enter keywords, location, classification, work type, and salary range. Select AU or NZ via the `region` input. The Actor returns every matching job, paginating automatically.
2. **Fetch by URL.** Paste SEEK search URLs directly (e.g. `/software-engineer-jobs/in-Sydney` for AU or `/software-engineer-jobs/in-Auckland` on seek.co.nz for NZ). Region is auto-detected per URL, so you can mix AU and NZ URLs in the same run.

A single toggle switches between fast card-only output and fully-enriched records with the complete HTML job description, company overview, expiry date, and more.

The Apify form groups inputs into two modes: **Option 1: Search by filters** and **Option 2: Paste SEEK URLs** (which overrides Option 1). The relationship is visible at a glance. If you fill both, the actor logs exactly which fields were ignored.

#### Key Features

| Feature | Description |
|---------|-------------|
| **AU + NZ coverage** | `region=AU` → seek.com.au, `region=NZ` → seek.co.nz. URL mode auto-detects per URL. |
| **Structured filters** | Keywords, location, classification (multi-select, 30 options), work type (multi-select, 4 options), salary range, date range |
| **URL mode** | Paste SEEK search URLs; filters parsed automatically; multi-URL supported |
| **Forward pagination** | Walks pages 1→2→3… until the cap is hit or results run out |
| **Mid-URL resume** | URLs with `?page=5` start at page 5 and continue forward |
| **Page-fail tolerance** | If one page fails after retries, the Actor logs it and skips to the next |
| **Full job descriptions** | Optional HTML body + plain text, company overview, expiry, salary, phone |
| **Concurrency control** | Tunable parallelism for detail fetches |
| **Cross-URL dedup** | Same job appearing under two searches is emitted once |
| **Total item cap** | `maxItems` bounds the run across all URLs and pages |
| **Wall-clock cap** | `maxTimeSec` stops pagination after N seconds and flushes partial results |
| **Free-tier friendly** | Auto-falls back to a backup proxy pool when Apify proxy isn't available |

### What data can you extract?

<table>
<tr><td>

**Identity and link**
- Job ID
- Canonical job URL
- Share link
- Job title

</td><td>

**Company**
- Company name and ID
- Company profile URL
- Company overview (paragraphs)
- Advertiser name and ID

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

**Location**
- Location label (e.g. `Kewdale, Perth WA`)
- SEO hierarchy (e.g. `[Kewdale WA 6105, All Perth WA]`)
- Country code

</td><td>

**Classification**
- Classification ID and label
- Subclassification ID and label
- Work types (Full time, Contract, …)
- Work arrangements (Remote, Hybrid, …)

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

**Compensation and dates**
- Salary label (as displayed by SEEK)
- Salary currency
- Listing date (UTC + relative display)
- Expires at (UTC)

</td><td>

**Content and presentation**
- Teaser (short summary)
- Bullet points from the ad
- Full description HTML (with `includeFullDescription`)
- Plain-text description (stripped HTML)
- Branding logo URL

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

### How to use the SEEK Jobs Scraper

#### Search by keywords and location (AU)

```json
{
  "region": "AU",
  "keywords": "software engineer",
  "location": "Sydney",
  "sortmode": "ListedDate",
  "includeFullDescription": true,
  "maxItems": 200
}
````

#### Search in New Zealand

```json
{
  "region": "NZ",
  "keywords": "software engineer",
  "location": "Auckland",
  "includeFullDescription": true,
  "maxItems": 200
}
```

#### Mixed AU + NZ URLs in one run

```json
{
  "urls": [
    { "url": "https://www.seek.com.au/nurse-jobs/in-Sydney" },
    { "url": "https://www.seek.co.nz/software-engineer-jobs/in-Auckland" }
  ],
  "includeFullDescription": false,
  "maxItems": 500
}
```

Region is auto-detected from each URL's host. Output rows carry the correct `countryCode` and canonical `url` for the region.

#### Filter by salary, work type, and recency

```json
{
  "keywords": "data engineer",
  "location": "All Melbourne VIC",
  "classification": ["6281"],
  "workType": ["242"],
  "salaryMin": 120000,
  "salaryMax": 200000,
  "daterange": 7,
  "sortmode": "ListedDate",
  "maxItems": 300
}
```

The Apify UI renders both `classification` and `workType` as multi-select dropdowns with human-readable names, so you don't need to memorize the IDs. When scripting via API, pass the IDs directly (e.g. `"6281"` = Information & Communication Technology, `"242"` = Full time).

#### Fetch specific searches by URL

```json
{
  "urls": [
    { "url": "https://www.seek.com.au/python-jobs/in-Sydney?daterange=14" },
    { "url": "https://www.seek.com.au/golang-jobs/in-Brisbane" }
  ],
  "includeFullDescription": true,
  "maxItems": 300
}
```

Each URL is processed in order. The Actor parses the keyword, location, and query-string filters, then paginates forward.

#### Resume from a specific page

```json
{
  "urls": [
    { "url": "https://www.seek.com.au/software-engineer-jobs/in-Sydney?page=5" }
  ],
  "maxItems": 100
}
```

Pagination starts at page 5 and walks forward until 100 items are collected.

#### Card-only mode (cheapest, fastest)

```json
{
  "keywords": "nurse",
  "location": "Brisbane",
  "includeFullDescription": false,
  "maxItems": 1000
}
```

Skips the per-job detail fetch entirely. Still returns title, company, location, classifications, work types, salary label, listing date, bullet points, and teaser.

#### Time-capped run

```json
{
  "keywords": "software engineer",
  "location": "All-Australia",
  "maxItems": 0,
  "maxTimeSec": 300
}
```

Keeps paginating for at most 5 minutes; partial results are always flushed to the dataset.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `region` | string | `AU` | `AU` (seek.com.au) or `NZ` (seek.co.nz). Auto-detected per URL in URL mode. |
| `keywords` | string | | Job title or keywords (e.g. `software engineer`). Empty = match everything in the location. |
| `location` | string | `All-Australia` | Search location (`Sydney`, `All Melbourne VIC`, `All-Australia`, etc.) |
| `classification` | string\[] | `[]` | Top-level classifications. Multi-select dropdown (30 options) in the UI; accepts raw IDs (e.g. `"6281"` for ICT) via API. |
| `workType` | string\[] | `[]` | Work types. Multi-select dropdown (Full time / Part time / Contract/Temp / Casual/Vacation) in the UI; accepts raw IDs (`"242"`–`"245"`) via API. |
| `salaryMin` | integer | | Minimum annual salary. Rounded down to nearest 10k by SEEK. |
| `salaryMax` | integer | | Maximum annual salary. If set out of order with `salaryMin`, they're auto-swapped with a warning. |
| `daterange` | integer | | Listed within N days. Must be one of `1, 3, 7, 14, 31`. Other values are cleared with a warning. |
| `sortmode` | string | `ListedDate` | `ListedDate` or `KeywordRelevance` |
| `urls` | object\[] | `[]` | SEEK search URLs. When set, the structured filters above are ignored (a warning lists what was dropped). |
| `includeFullDescription` | boolean | `false` | Fetch full HTML body + company overview + expiry per job. Adds one graphql request per job. |
| `detailConcurrency` | integer | `5` | Parallelism for detail fetches (1–20) |
| `maxItems` | integer | `200` | Total cap across ALL URLs and pages. Set `0` for unlimited. |
| `maxTimeSec` | integer | `0` | Global wall-clock cap in seconds. `0` = no limit. |
| `proxyConfiguration` | object | Apify datacenter | Proxy config; auto-falls back to a backup pool if Apify proxy isn't available |

### Output Example

```json
{
  "id": "91574272",
  "url": "https://www.seek.com.au/job/91574272",
  "title": "HV Field Service Technician",
  "teaser": "Seeking an experienced HV Technician to join our operation in Kewdale.",
  "content": "<p><strong>23 + Employee Benefits including: </strong></p><ul>...</ul>",
  "contentText": "23 + Employee Benefits including: Flexible work arrangements …",
  "bulletPoints": [
    "Flexible and family friendly environment",
    "Employee Benefits: Compressed work week, fitness subsidies, health care sub",
    "Be a part of an organisation leading the global energy revolution"
  ],
  "companyName": "Ampcontrol",
  "companyId": "433537",
  "companyUrl": "https://www.seek.com.au/companies/ampcontrol-433537",
  "companyNameSlug": "ampcontrol-433537",
  "companyOverview": "From customised engineering to the fabrication and manufacture of product …",
  "advertiserId": "20135683",
  "advertiserName": "Ampcontrol Limited",
  "locationLabel": "Kewdale, Perth WA",
  "locationSeoHierarchy": ["Kewdale WA 6105", "All Perth WA"],
  "countryCode": "AU",
  "classifications": [
    {
      "id": "1225",
      "label": "Trades & Services",
      "subId": "6230",
      "subLabel": "Electricians"
    }
  ],
  "workTypes": ["Full time"],
  "workArrangements": [],
  "salaryLabel": null,
  "salaryCurrency": null,
  "phoneNumber": null,
  "shareLink": "https://www.seek.com.au/job/91574272?tracking=SHR-WEB-SharedJob-anz-1",
  "listingDate": "2026-04-17T01:53:13Z",
  "listingDateDisplay": "2d ago",
  "expiresAt": "2026-05-14T14:00:00.000Z",
  "branding": {
    "serpLogoUrl": "https://bx-branding-gateway.cloud.seek.com.au/e2715c0c-27cc-4abb-a1fc-0ff559ca56d7.1/jdpLogo"
  },
  "isFeatured": true,
  "displayType": "promoted",
  "adProductType": null,
  "scrapedAt": "2026-04-20T00:40:05.202399+00:00"
}
```

### Tips

- **Pagination is automatic.** The Actor walks pages until `maxItems` is reached or results run out.
- **`maxItems` is a global cap, not per-URL.** With three URLs and `maxItems=50`, URL 1 paginates until the budget is filled; URLs 2 and 3 run only if budget remains.
- **Set `includeFullDescription=false` for high-volume runs.** Skipping the detail fetch halves request count and cuts cost.
- **Region auto-detected in URL mode.** Mixing `seek.com.au` and `seek.co.nz` URLs in the same input is supported. Each URL is routed to the correct endpoint, siteKey, and graphql zone.
- **Datacenter proxy is the default.** SEEK's endpoints don't rate-limit datacenter IPs under normal loads. For 10k+ job runs, switch to `apifyProxyGroups: ["RESIDENTIAL"]` on a paid Apify plan.
- **Skipped pages are logged, not fatal.** If a single page fails after retries, the Actor moves to the next one. Three consecutive failures end the URL's run cleanly.
- **One page fetched, all 22 items kept.** Partial pages (e.g. when `maxTimeSec` fires mid-page) are flushed to the dataset, so no work is lost.
- **Input conflicts surface as warnings, not silent drops.** Out-of-order salary range → auto-swapped. Unsupported `daterange` value → cleared with a warning. URLs set alongside structured filters → filters ignored (listed in a warning). A fully unbounded run (both `maxItems` and `maxTimeSec` = 0) also warns.

# Actor input Schema

## `region` (type: `string`):

Country market to search. AU = seek.com.au, NZ = seek.co.nz.

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

Job title or keywords (e.g. 'software engineer'). Leave empty to match all jobs in the location.

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

Where to search. AU examples: 'Sydney', 'All Melbourne VIC', 'All-Australia', 'Brisbane CBD & Inner Suburbs'. NZ examples: 'Auckland', 'Wellington', 'All-New-Zealand'.

## `classification` (type: `array`):

Filter by one or more top-level classifications. Leave empty for all. Subclassifications can still be used via URL mode.

## `workType` (type: `array`):

Filter by one or more work types. Leave empty for all.

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

Optional minimum annual salary. Rounded down to the nearest 10k by SEEK.

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

Optional maximum annual salary.

## `daterange` (type: `integer`):

Only return jobs listed in the last N days. SEEK only accepts one of: 1, 3, 7, 14, 31. Other values are dropped with a warning.

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

ListedDate = newest first. KeywordRelevance = best match.

## `urls` (type: `array`):

Paste one or more SEEK search URLs (e.g. https://www.seek.com.au/software-engineer-jobs/in-Sydney).

## `includeFullDescription` (type: `boolean`):

If true, fetches the full job HTML body, company overview, expiry date, and phone (when available) via the graphql jobDetails endpoint. Costs one extra request per job (~150ms).

## `detailConcurrency` (type: `integer`):

How many jobDetails requests to run in parallel. Higher = faster, but more likely to trigger rate limits. Only takes effect when 'Fetch full job description' is on.

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

Total cap across ALL URLs and ALL pages (not per-URL). Example: maxItems=50 with 3 URLs paginates URL 1 until the budget is filled; URLs 2 and 3 run only if budget remains. Set to 0 for unlimited.

## `maxTimeSec` (type: `integer`):

Wall-clock cap across ALL URLs and pages. When exceeded, the actor stops paginating, flushes whatever it already fetched to the dataset, and exits cleanly. Set to 0 for no time limit.

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

Defaults to Apify datacenter proxy. If your account can't access it (free tier), the actor falls back to a backup proxy pool automatically. For heavy/production workloads, set apifyProxyGroups to \["RESIDENTIAL"] on an Apify paid plan.

## Actor input object example

```json
{
  "region": "AU",
  "keywords": "software engineer",
  "location": "Sydney",
  "classification": [],
  "workType": [],
  "salaryMin": 100000,
  "salaryMax": 200000,
  "daterange": 7,
  "sortmode": "ListedDate",
  "urls": [],
  "includeFullDescription": false,
  "detailConcurrency": 5,
  "maxItems": 200,
  "maxTimeSec": 300,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# Actor output Schema

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

Dataset items (one per job)

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    } }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "$0.7💰 Seek AU/NZ Keyword & URL Job Search",
        "description": "From $0.7/1K. Extract job listings from SEEK.com.au and SEEK.co.nz in Australia and New Zealand. Get comprehensive data, including full descriptions, companies, salaries, locations, classifications, and listing dates, for any keyword, location, or filter combination.",
        "version": "0.1",
        "x-build-id": "tq1stOehGaAfPhh3K"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~seek-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-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/abotapi~seek-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-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/abotapi~seek-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-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": {
                    "region": {
                        "title": "Region",
                        "enum": [
                            "AU",
                            "NZ"
                        ],
                        "type": "string",
                        "description": "Country market to search. AU = seek.com.au, NZ = seek.co.nz.",
                        "default": "AU"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Job title or keywords (e.g. 'software engineer'). Leave empty to match all jobs in the location."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Where to search. AU examples: 'Sydney', 'All Melbourne VIC', 'All-Australia', 'Brisbane CBD & Inner Suburbs'. NZ examples: 'Auckland', 'Wellington', 'All-New-Zealand'.",
                        "default": "All-Australia"
                    },
                    "classification": {
                        "title": "Classification",
                        "type": "array",
                        "description": "Filter by one or more top-level classifications. Leave empty for all. Subclassifications can still be used via URL mode.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1200",
                                "6251",
                                "6304",
                                "1203",
                                "1204",
                                "7019",
                                "6163",
                                "1206",
                                "6076",
                                "6263",
                                "6123",
                                "1209",
                                "6205",
                                "1210",
                                "1211",
                                "1212",
                                "6317",
                                "6281",
                                "1214",
                                "1216",
                                "6092",
                                "6008",
                                "6058",
                                "1220",
                                "6043",
                                "6362",
                                "1223",
                                "6261",
                                "6246",
                                "1225"
                            ],
                            "enumTitles": [
                                "Accounting",
                                "Administration & Office Support",
                                "Advertising, Arts & Media",
                                "Banking & Financial Services",
                                "Call Centre & Customer Service",
                                "CEO & General Management",
                                "Community Services & Development",
                                "Construction",
                                "Consulting & Strategy",
                                "Design & Architecture",
                                "Education & Training",
                                "Engineering",
                                "Farming, Animals & Conservation",
                                "Government & Defence",
                                "Healthcare & Medical",
                                "Hospitality & Tourism",
                                "Human Resources & Recruitment",
                                "Information & Communication Technology",
                                "Insurance & Superannuation",
                                "Legal",
                                "Manufacturing, Transport & Logistics",
                                "Marketing & Communications",
                                "Mining, Resources & Energy",
                                "Real Estate & Property",
                                "Retail & Consumer Products",
                                "Sales",
                                "Science & Technology",
                                "Self Employment",
                                "Sport & Recreation",
                                "Trades & Services"
                            ]
                        },
                        "default": []
                    },
                    "workType": {
                        "title": "Work type",
                        "type": "array",
                        "description": "Filter by one or more work types. Leave empty for all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "242",
                                "243",
                                "244",
                                "245"
                            ],
                            "enumTitles": [
                                "Full time",
                                "Part time",
                                "Contract / Temp",
                                "Casual / Vacation"
                            ]
                        },
                        "default": []
                    },
                    "salaryMin": {
                        "title": "Minimum salary (annual)",
                        "type": "integer",
                        "description": "Optional minimum annual salary. Rounded down to the nearest 10k by SEEK."
                    },
                    "salaryMax": {
                        "title": "Maximum salary (annual)",
                        "type": "integer",
                        "description": "Optional maximum annual salary."
                    },
                    "daterange": {
                        "title": "Listed within N days",
                        "type": "integer",
                        "description": "Only return jobs listed in the last N days. SEEK only accepts one of: 1, 3, 7, 14, 31. Other values are dropped with a warning."
                    },
                    "sortmode": {
                        "title": "Sort order",
                        "enum": [
                            "ListedDate",
                            "KeywordRelevance"
                        ],
                        "type": "string",
                        "description": "ListedDate = newest first. KeywordRelevance = best match.",
                        "default": "ListedDate"
                    },
                    "urls": {
                        "title": "SEEK search URLs",
                        "type": "array",
                        "description": "Paste one or more SEEK search URLs (e.g. https://www.seek.com.au/software-engineer-jobs/in-Sydney).",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "includeFullDescription": {
                        "title": "Fetch full job description",
                        "type": "boolean",
                        "description": "If true, fetches the full job HTML body, company overview, expiry date, and phone (when available) via the graphql jobDetails endpoint. Costs one extra request per job (~150ms).",
                        "default": false
                    },
                    "detailConcurrency": {
                        "title": "Detail fetch concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many jobDetails requests to run in parallel. Higher = faster, but more likely to trigger rate limits. Only takes effect when 'Fetch full job description' is on.",
                        "default": 5
                    },
                    "maxItems": {
                        "title": "Max items to return",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Total cap across ALL URLs and ALL pages (not per-URL). Example: maxItems=50 with 3 URLs paginates URL 1 until the budget is filled; URLs 2 and 3 run only if budget remains. Set to 0 for unlimited.",
                        "default": 20
                    },
                    "maxTimeSec": {
                        "title": "Max run time (seconds)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Wall-clock cap across ALL URLs and pages. When exceeded, the actor stops paginating, flushes whatever it already fetched to the dataset, and exits cleanly. Set to 0 for no time limit.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Defaults to Apify datacenter proxy. If your account can't access it (free tier), the actor falls back to a backup proxy pool automatically. For heavy/production workloads, set apifyProxyGroups to [\"RESIDENTIAL\"] on an Apify paid plan.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": []
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
