SEEK Job Scraper - Australia & New Zealand Job Listings avatar

SEEK Job Scraper - Australia & New Zealand Job Listings

Pricing

from $2.00 / 1,000 results

Go to Apify Store
SEEK Job Scraper - Australia & New Zealand Job Listings

SEEK Job Scraper - Australia & New Zealand Job Listings

Scrape seek.com.au and seek.co.nz — SEEK's Australian and New Zealand job boards. Salary data, employer profiles, work type filters, and full job descriptions. Incremental mode detects new and changed listings. Compact output for AI agents and MCP workflows.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(1)

Developer

Black Falcon Data

Black Falcon Data

Maintained by Community

Actor stats

5

Bookmarked

369

Total users

139

Monthly active users

0.71 hours

Issues response

14 hours ago

Last modified

Share

What does SEEK Job Scraper do?

SEEK Scraper extracts structured job data from seek.com.au and seek.co.nz (au.seek.com and nz.seek.com) — SEEK's Australia and New Zealand job boards — including salary data, contact details, company metadata, work-arrangement tags, and full descriptions. It supports keyword search, location filters, classification codes, salary brackets, post-collection keyword and date filters, and controllable result limits, so you can run the same query consistently over time.

New to Apify? Sign up free and use the included $5 monthly platform credit to test this actor.

Key features

  • 🌏 Two-market coverage — one actor covers both APAC markets: seek.com.au (au.seek.com) and seek.co.nz (nz.seek.com). One codebase, one input shape — pick a country per run or schedule parallel runs.
  • ♻️ Incremental mode — recurring runs emit only NEW / UPDATED / REAPPEARED records. First run builds the baseline; subsequent runs emit and charge only for the diff. Saves 80–95% on daily monitoring.
  • 🔔 Notifications out of the box — Telegram, Slack, Discord, WhatsApp Cloud API, generic webhook. Pair with incremental + notifyOnlyChanges for daily "new SEEK jobs" pings.
  • 🔗 Paste-mode URLs — paste any SEEK URL straight from your browser: search-results URLs, category pages, or single job detail URLs. Build the search in SEEK's UI, copy, paste, run.
  • 🎯 Batch searches — pass ["python developer", "data engineer", "ML engineer"] in one run. One dedup state across all queries, single dataset, one Actor-Start charge instead of N.
  • 🔬 Post-filter pipeline — narrow results after collection with includeKeywords, excludeKeywords, fromDate, toDate, and maxAgeMinutes. Filters checked against title, company, description, and bullets.
  • 💰 Structured salarysalaryText parsed into salaryMin / salaryMax / salaryCurrency / salaryType automatically. AUD for AU, NZD for NZ. No regex on your side.
  • 📋 Two-stage detail enrichment — toggle includeDetails: true to fetch each job's full detail page: complete description, structured location (state / suburb / postcode), employer profile, screening questions, work-arrangement tags.
  • 📧 Email + phone extractionextractedEmails[] and extractedPhones[] pulled from each description. Direct-outreach lists ready to ingest.
  • 📌 Change classification — every record carries changeType: NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED. Repost detection flags previously-expired listings that come back under a new jobId.
  • 📦 Compact mode — AI-agent and MCP-friendly payloads with core fields only. Pipe directly into LLM context, your ATS, or salary-benchmarking pipelines without parsing extras.

What data can you extract from seek.co.nz?

Each result includes core listing fields (jobId, seekJobId, title, canonicalUrl, advertiserId, location, locationCountry, locationState, locationSuburb, locationPostcode), salary data (salaryText, salaryMin, salaryMax, salaryCurrency, salaryType), employment metadata (employmentType, workArrangement, category, subCategory, roleId, postedDate, validThrough), detail fields when includeDetails: true (description, descriptionHtml, descriptionMarkdown, bulletPoints, teaser, screeningQuestions), contact and apply info (phoneNumber, applyUrl, applyEmail, contactName, extractedEmails, extractedPhones, extractedUrls, socialProfiles), and company metadata (company, companyUrl, companyIndustry, companySize, companyWebsite). In standard mode, all documented fields are always present — unavailable values return as null, never omitted. In compact mode, only the core subset (jobId, title, company, location, salary, category, URL, dates) is returned for AI-agent and MCP pipelines.

Input

The main inputs are a search keyword, an optional location filter, and a result limit. Additional filters and options are available in the input schema.

Key parameters:

  • query — Job search keywords (e.g. "software engineer", "accountant"). Use JSON array for multi-query.
  • country — Which SEEK market to search. (default: "AU")
  • location — City, state, or region (e.g. "Sydney", "Melbourne VIC"). Use JSON array for multi-location.
  • startUrls — Direct SEEK search or job detail URLs. Added on top of any query/location search (not a replacement) — each URL becomes an additional source in the same run. Detail URLs (/job/<id>) skip SERP entirely; search URLs paginate like a query. For search URLs, searchQuery is derived from keywords or /jobs/<slug>; filter-only URLs without keywords return searchQuery: "".
  • maxResults — Maximum total job listings to emit to the dataset. 0 = unlimited. Applied after post-filters — if you use includeKeywords / excludeKeywords / customFilters / date filters, set this to your final cap, not your collection cap. Memory auto-scales by default (≤100 → 256 MB, ≤200 → 512 MB, 200+ → 1024 MB); override manually in run settings if needed. (default: 50)
  • sortMode — Sort search results by relevance or date. (default: "relevance")
  • dateRange — Filter by posting date (SEEK date range code, e.g. "1" = last 24h, "3" = last 3 days, "7" = last 7 days, "14" = last 14 days, "31" = last 31 days).
  • workType — Filter by employment type.
  • workArrangement — Filter by work arrangement.
  • classification — SEEK job classification ID (e.g. "6281" = Information & Communication Technology, "1203" = Accounting, "6043" = Healthcare & Medical). Find IDs in SEEK category URLs.
  • includeKeywords — Only keep jobs that contain at least one of these keywords anywhere in the listing — title, company, location, category, sub-category, work type, work arrangement, salary text, teaser, bullets, or description. Broad match by design — use exclude keywords below to narrow.
  • excludeKeywords — Drop jobs that contain any of these keywords in title, company, teaser, bullets, or description. Narrow scope by design — does NOT check location, salary text, or employment type, so "remote" won't drop jobs with "remote work allowance" in salary or "not remote" in location.
  • maxAgeMinutes — Only keep jobs posted within this many minutes from the scrape timestamp.
  • incrementalMode — Track changes between runs. Each record carries a changeType of NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED. Default emits NEW + UPDATED + REAPPEARED only; use emitUnchanged / emitExpired to opt into the others. stateKey is optional — when empty, a stable key is auto-derived from your search inputs so different query/filter combinations get isolated state. (default: false)
  • stateKey — Optional stable identifier for the tracked search universe. Leave empty to auto-derive a stable identifier from your search inputs — different keyword/location/filter combinations get isolated state automatically.
  • includeDetails — Fetch each job's detail page for full description, structured location, salary data, company profile, and more. (default: true)
  • compact — Output only core fields (jobId, title, company, location, salary, score, category, URL, dates). Ideal for AI-agent and MCP workflows. (default: false)
  • ...and 30 more parameters

Input examples

Basic AU search — Keyword + location search on seek.com.au with full detail enrichment.

→ Each record carries the full description, structured location (state / suburb / postcode), parsed salary, and employer profile.

{
"query": "software engineer",
"country": "AU",
"location": "Sydney",
"maxResults": 25,
"includeDetails": true
}

Remote/hybrid jobs in New Zealand — Filter NZ market by work arrangement (3 = Remote, 2 = Hybrid, 1 = On-site).

→ All NZ remote IT roles with full details. NZD currency parsed automatically.

{
"query": "IT",
"country": "NZ",
"workArrangement": "3",
"maxResults": 10,
"includeDetails": true
}

Post-filter by keywords and age — Layer includeKeywords / excludeKeywords / maxAgeMinutes on top of any search. Filters check title, company, description, and bullets.

→ Only records that match python or typescript in the description, exclude any senior listings, and were posted in the last 7 days (10080 minutes).

{
"query": "software engineer",
"country": "AU",
"maxResults": 25,
"includeKeywords": [
"python",
"typescript"
],
"excludeKeywords": [
"senior"
],
"maxAgeMinutes": 10080,
"includeDetails": true
}

Incremental tracking — Recurring runs emit only NEW / UPDATED / REAPPEARED records since the previous run.

→ First run builds the baseline state. Subsequent runs emit and charge only for the diff. Set emitUnchanged: true or emitExpired: true for full visibility.

{
"query": "data engineer",
"country": "AU",
"maxResults": 200,
"incrementalMode": true,
"stateKey": "data-engineer-au-tracker"
}

Compact mode for AI agents — Trimmed payload with only core fields. Ideal for piping into LLM context, MCP servers, or downstream automation.

→ Each record carries only jobId, title, company, location, salary fields, category, canonicalUrl, and date fields — no description or HTML bloat.

{
"query": "accountant",
"country": "AU",
"dateRange": "7",
"maxResults": 50,
"compact": true,
"includeDetails": false
}

Paste-mode (direct SEEK URLs) — Pass any SEEK URL — search-results pages or job detail URLs — directly in startUrls. Detail URLs skip SERP entirely.

→ One record per detail URL, fully enriched. Search URLs are paginated like a regular query.

{
"startUrls": [
"https://au.seek.com/job/92084368"
],
"includeDetails": true
}

Output

Each run produces a dataset of structured job records. Results can be downloaded as JSON, CSV, or Excel from the Dataset tab in Apify Console.

Example job record

{
"jobId": "cdce3e87d731956375b8bb69a41dd68c111b49ba0030ef74b0d0502051f7df36",
"seekJobId": "91576706",
"title": "Software Engineer – AWS DevOps",
"canonicalUrl": "https://www.seek.com.au/job/91576706",
"company": "Paperless Warehousing Pty Ltd",
"companyUrl": null,
"advertiserId": "63532852",
"location": "Melbourne VIC",
"locationCountry": "AU",
"locationState": "Victoria",
"locationSuburb": "Melbourne",
"locationPostcode": "3000",
"salaryText": null,
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": "AUD",
"salaryType": null,
"employmentType": "Full time",
"workArrangement": "hybrid",
"category": "Information & Communication Technology",
"subCategory": "Engineering - Software",
"roleId": "software-engineer",
"teaser": "We’re looking for a Software Engineer to build modern, scalable solutions on AWS leveraging AI. Melbourne or Sydney based hybrid Office / WFH.",
"bulletPoints": [
"AWS DevOps",
"AI led Development",
"Python & React.js"
],
"description": "About the Role\n\nUniware Managed Services provides AWS Cloud hosting and web based solutions to customers across the Group who leverage our ERP, WMS and Ecommerce platforms to drive their business.\n\nWe...",
"descriptionHtml": "<p><strong>About the Role</strong></p><p>Uniware Managed Services provides AWS Cloud hosting and web based solutions to customers across the Group who leverage our ERP, WMS and Ecommerce platforms to...",
"descriptionMarkdown": "**About the Role**\n\nUniware Managed Services provides AWS Cloud hosting and web based solutions to customers across the Group who leverage our ERP, WMS and Ecommerce platforms to drive their business....",
"descriptionLength": 1440,
"contentQuality": "full",
"companyIndustry": null,
"companySize": null,
"companyWebsite": null,
"phoneNumber": null,
"screeningQuestions": [
"Which of the following statements best describes your right to work in Australia?",
"How many years' experience do you have as a software engineer?",
"What's your expected annual base salary?"
],
"applyUrl": "https://www.seek.com.au/job/91576706?tracking=SHR-WEB-SharedJob-anz-1",
"postedDate": "2026-04-17T02:57:25.644Z",
"validThrough": "2026-05-17T13:59:59.999Z",
"contentHash": "b30e2ecf6c1d944562ad075f279f8f2f7e0ba186eb3c1ca64c9b2145f7efd16c",
"isSponsored": true,
"sourceUrl": "https://www.seek.com.au/job/91576706",
"sourceCountry": "AU",
"sourceDomain": "www.seek.com.au",
"searchQuery": "software engineer",
"searchUrl": "https://www.seek.com.au/jobs?keywords=software+engineer",
"scrapedAt": "2026-04-18T07:46:39.826Z",
"fetchedAt": "2026-04-18T07:46:39.826Z",
"detailFetched": true,
"extractedEmails": [],
"isRepost": false,
"repostOfId": null,
"repostDetectedAt": null,
"changeType": "NEW",
"trackedHash": "801d82c09771132f52e16126da6e4a5c891727a3b9b410f1333ccc494fd5e075",
"firstSeenAt": "2026-04-18T07:46:39.826Z",
"lastSeenAt": "2026-04-18T07:46:39.826Z",
"previousSeenAt": null,
"expiredAt": null,
"stateKey": "live-verify-1776498392431"
}

Incremental fields

When incremental: true, each record also carries:

  • changeType — one of NEW, UPDATED, UNCHANGED, REAPPEARED, EXPIRED. Default output covers NEW / UPDATED / REAPPEARED; set emitUnchanged: true or emitExpired: true to opt into the others.
  • firstSeenAt, lastSeenAt — ISO-8601 timestamps tracking the listing across runs.
  • isRepost, repostOfId, repostDetectedAt — populated when a new listing matches the tracked content of a previously expired one. Set skipReposts: true to drop detected reposts from the output.

How to scrape seek.co.nz

  1. Go to SEEK Job Scraper in Apify Console.
  2. Enter a search keyword and optional location filter.
  3. Set maxResults to control how many results you need.
  4. Enable includeDetails if you need full descriptions, contact info, company data.
  5. Click Start and wait for the run to finish.
  6. Export the dataset as JSON, CSV, or Excel.

Use cases

  • Extract job data from seek.co.nz for market research and competitive analysis.
  • Track salary trends across regions and categories over time.
  • Monitor new and changed listings on scheduled runs without processing the full dataset every time.
  • Build outreach lists using contact details and apply URLs from listings.
  • Research company hiring patterns, employer profiles, and industry distribution.
  • Feed structured data into AI agents, MCP tools, and automated pipelines using compact mode.
  • Export clean, structured data to dashboards, spreadsheets, or data warehouses.

How much does it cost to scrape seek.co.nz?

SEEK Job Scraper uses pay-per-event pricing. You pay a small fee when the run starts and then for each result that is actually produced.

  • Run start: $0.01 per run
  • Per result: $0.002 per job record

Example costs:

  • 10 results: $0.03
  • 100 results: $0.21
  • 500 results: $1.01

Example: recurring monitoring savings

These examples compare full re-scrapes with incremental runs at different churn rates. Churn is the share of listings that are new or whose tracked content changed since the previous run. Actual churn depends on your query breadth, source activity, and polling frequency — the scenarios below are examples, not predictions.

Example setup: 200 results per run, daily polling (30 runs/month). Event-pricing examples scale linearly with result count.

Churn rateFull re-scrape run costIncremental run costSavings vs full re-scrapeMonthly cost after baseline
5% — stable niche query$0.41$0.03$0.38 (93%)$0.90
15% — moderate broad query$0.41$0.07$0.34 (83%)$2.10
30% — high-volume aggregator$0.41$0.13$0.28 (68%)$3.90

Full re-scrape monthly cost at daily polling: $12.30. First month with incremental costs $1.28 / $2.44 / $4.18 for the 5% / 15% / 30% scenarios because the first run builds baseline state at full cost before incremental savings apply.

FAQ

How many results can I get from seek.co.nz?

The number of results depends on the search query and available listings on seek.co.nz. Use the maxResults parameter to control how many results are returned per run.

Does SEEK Job Scraper support recurring monitoring?

Yes. Enable incremental mode to only receive new or changed listings on subsequent runs. This is ideal for scheduled monitoring where you want to track changes over time without re-processing the full dataset.

Can I integrate SEEK Job Scraper with other apps?

Yes. SEEK Job Scraper works with Apify's integrations to connect with tools like Zapier, Make, Google Sheets, Slack, and more. You can also use webhooks to trigger actions when a run completes.

Can I use SEEK Job Scraper with the Apify API?

Yes. You can start runs, manage inputs, and retrieve results programmatically through the Apify API. Client libraries are available for JavaScript, Python, and other languages.

Can I use SEEK Job Scraper through an MCP Server?

Yes. Apify provides an MCP Server that lets AI assistants and agents call this actor directly. Use compact mode and descriptionMaxLength to keep payloads manageable for LLM context windows.

This actor extracts publicly available data from seek.co.nz. Web scraping of public information is generally considered legal, but you should always review the target site's terms of service and ensure your use case complies with applicable laws and regulations, including GDPR where relevant.

Your feedback

If you have questions, need a feature, or found a bug, please open an issue on the actor's page in Apify Console. Your feedback helps us improve.

You might also like

Getting started with Apify

New to Apify? Create a free account with $5 credit — no credit card required.

  1. Sign up — $5 platform credit included
  2. Open this actor and configure your input
  3. Click Start — export results as JSON, CSV, or Excel

Need more later? See Apify pricing.