# $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:** 116 total users, 34 monthly users, 100.0% runs succeeded, 0 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 |
| **Full URL grammar** | Keyword URLs (`/python-jobs`), classification landing pages (`/jobs-in-accounting`), subclassifications (`/jobs-in-accounting/payroll`, 394 known), work-type shortcuts (`/jobs-in-accounting/full-time`), classification + location (`/jobs-in-accounting/in-All-Perth-WA`) |
| **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
- Apply URL
- SEEK role ID
- Share link
- Job title

</td><td>

**Company**
- Company name and ID
- Company profile URL
- Company overview (paragraphs)
- Advertiser name, ID, verification, and registration date
- Company open-jobs URL

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

**Location**
- Location label (e.g. `Suburb, City STATE`)
- SEO hierarchy (e.g. `[Suburb STATE postcode, All City STATE]`)
- 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)
- Verified listing signal

</td><td>

**Content and presentation**
- Teaser (short summary)
- Bullet points from the ad
- Description sections
- Full description HTML (with `includeFullDescription`)
- Plain-text description (stripped HTML)
- Emails and phone numbers parsed from the description
- 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.

#### Supported URL shapes

| Path | Interpretation |
|---|---|
| `/jobs` | All jobs |
| `/jobs/in-<location>` | Filter by location only |
| `/<keyword>-jobs` | Filter by keyword (e.g. `/python-jobs`, `/software-engineer-jobs`) |
| `/<keyword>-jobs/in-<location>` | Keyword + location |
| `/jobs-in-<classification>` | Classification landing page (e.g. `/jobs-in-accounting` → classification=1200) |
| `/jobs-in-<classification>/in-<location>` | Classification + location |
| `/jobs-in-<classification>/<subclassification>` | Classification + subclass (e.g. `/jobs-in-accounting/payroll` → 1200 + 1468) |
| `/jobs-in-<classification>/<work-type>` | Classification + Full time / Part time / Contract-Temp / Casual-Vacation |
| `/jobs-in-<classification>/<work-arrangement>` | On-site / hybrid / remote. Logged as ignored (not exposed by the scraper's API param). |

Query-string filters are honored on top of any of the above: `?classification=6281&subclassification=6290&worktype=242&salaryrange=100000-200000&daterange=7&page=2`.

Unknown classification or subclassification slugs (e.g. `/jobs-in-fake-class`) are rejected with a clear error that lists the valid slugs. Non-search paths like `/job/<id>`, `/companies/<slug>`, `/career-advice/...` are also rejected.

#### 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. Batched per page — one graphql request covers up to 22 jobs. |
| `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 |

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape — the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of each record — not the full JSON. Each item becomes one entry with a **title** and its key fields flattened to plain text. The **complete record always stays in the Apify dataset**.

1. Authorize a connector once under **Apify → Settings → Integrations** (Notion, Linear, Airtable, or Apify).
2. Select it in the **"Pipe results into your apps"** input field. (If the picker is empty, you haven't authorized a connector yet.)
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

### Output Example

```json
{
  "id": "<JOB_ID>",
  "url": "https://www.seek.com.au/job/<JOB_ID>",
  "jobLink": "https://www.seek.com.au/job/<JOB_ID>",
  "applyLink": "https://www.seek.com.au/job/<JOB_ID>/apply",
  "title": "<Job title>",
  "teaser": "<One-line summary of the role.>",
  "jobHook": "<One-line summary of the role.>",
  "content": "<p><strong>About the role</strong></p><ul><li>...</li></ul>",
  "contentText": "About the role …",
  "contentSections": ["About the role", "First requirement", "Second requirement"],
  "bulletPoints": [
    "<Bullet point 1>",
    "<Bullet point 2>",
    "<Bullet point 3>"
  ],
  "companyName": "<Company name>",
  "companyId": "<COMPANY_ID>",
  "companyUrl": "https://www.seek.com.au/companies/<company-slug>-<COMPANY_ID>",
  "companyNameSlug": "<company-slug>-<COMPANY_ID>",
  "companyOverview": "<Company overview paragraphs joined together …>",
  "advertiserId": "<ADVERTISER_ID>",
  "advertiserName": "<Advertiser name>",
  "locationLabel": "<Suburb, City STATE>",
  "locationSeoHierarchy": ["<Suburb STATE postcode>", "All <City> STATE"],
  "countryCode": "AU",
  "classifications": [
    {
      "id": "<CLASS_ID>",
      "label": "<Top-level classification>",
      "subId": "<SUB_ID>",
      "subLabel": "<Subclassification>"
    }
  ],
  "classificationInfo": {
    "classification": "<Top-level classification>",
    "subClassification": "<Subclassification>"
  },
  "workTypes": ["Full time"],
  "workArrangements": [],
  "workArrangementLabels": ["Hybrid"],
  "salaryLabel": null,
  "salary": null,
  "salaryCurrency": null,
  "phoneNumber": null,
  "phoneNumbers": ["0412 345 678"],
  "emails": ["recruiter@example.com"],
  "shareLink": "https://www.seek.com.au/job/<JOB_ID>?tracking=SHR-WEB-SharedJob-anz-1",
  "listingDate": "2026-04-17T01:53:13Z",
  "listingDateDisplay": "2d ago",
  "expiresAt": "2026-05-14T14:00:00.000Z",
  "isVerified": true,
  "roleId": "<ROLE_ID>",
  "tags": [{ "type": "EARLY_APPLICANT", "label": "Be an early applicant" }],
  "jobLocationInfo": {
    "displayLocation": "<Suburb, City STATE>",
    "location": "All <City> STATE",
    "countryCode": "AU",
    "seoHierarchy": ["<Suburb STATE postcode>", "All <City> STATE"]
  },
  "branding": {
    "serpLogoUrl": "https://bx-branding-gateway.cloud.seek.com.au/<asset-id>/jdpLogo"
  },
  "advertiser": {
    "logo": "https://bx-branding-gateway.cloud.seek.com.au/<asset-id>/jdpLogo",
    "id": "<ADVERTISER_ID>",
    "name": "<Advertiser name>",
    "isVerified": true,
    "registrationDate": "2022-04-14T03:02:19.728Z"
  },
  "companyOpenJobs": "https://www.seek.com.au/<Advertiser-Name>-jobs/at-this-company",
  "companyTags": [],
  "advertiserRaw": { "...": "full upstream advertiser block (verbatim)" },
  "employerRaw": { "...": "full upstream employer block (verbatim — all logo/description fields)" },
  "brandingRaw": { "...": "full upstream branding block (verbatim — all logo URLs)" },
  "companyProfileRaw": { "...": "full upstream companyProfile block (verbatim)" },
  "phoneNumbersFromBody": ["0412 345 678", "(02) 9876 5432"],
  "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. Batched per page — one extra request covers up to 22 jobs (~200ms).

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

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

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

# 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.2",
        "x-build-id": "Zg6y96WBEKQjjj4kV"
    },
    "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. Batched per page — one extra request covers up to 22 jobs (~200ms).",
                        "default": true
                    },
                    "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": []
                        }
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
