SEEK Scraper | Australia & NZ Job Listings with Salary
Pricing
from $1.50 / 1,000 results
SEEK Scraper | Australia & NZ Job Listings with Salary
Scrape seek.com.au & seek.co.nz jobs. Salary + super parsing, visa sponsorship flag, work arrangement, classification & company hiring intelligence. 157K+ active listings.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
8
Monthly active users
4 days ago
Last modified
Categories
Share
SEEK Scraper — Australia & New Zealand Job Listings with Salary, Super, Visa Sponsorship & Classification Data
The most complete SEEK jobs data extraction tool on Apify. Scrape live job listings from seek.com.au and seek.co.nz with structured salary parsing (base + 11.5% super), visa sponsorship detection (482 / TSS / 186 / ENS), work arrangement (on-site / hybrid / remote), and full classification taxonomy — ready for recruiter intelligence, HR market pricing, candidate offer prep, ANZ talent supply/demand analytics, and equity research on labour markets.
What This Actor Does
The SEEK Scraper is a production-ready Apify Actor that extracts the live public job-listings database from SEEK — the dominant employment marketplace across Australia and New Zealand. SEEK hosts a daily-changing inventory of roughly 150,000–200,000 active vacancies spanning every industry classification, from entry-level retail in regional Queensland through to senior FAANG-tier engineering roles in Sydney, Melbourne and Auckland.
In a single run the actor returns structured JSON records for each listing, including:
- Job identity —
jobId,title, listing URL, posting age, featured/premium flag - Employer —
company,companyLogo, recruiter / agent name (when listed via agency) - Location — full
locationstring + parsedcity,state(NSW / VIC / QLD / WA / SA / TAS / ACT / NT), postcode - Classification taxonomy — SEEK
classification+subClassification(e.g. Information & Communication Technology → Developers / Programmers) - Compensation — raw salary string + parsed
salaryMin,salaryMax,salaryPeriod(annual / hourly / daily / monthly), and a criticalsalaryHasSuperboolean flagging whether the figure is inclusive of, exclusive of, or plus superannuation - Work arrangement — on-site, hybrid, or remote
- Work type — Full Time, Part Time, Contract / Temp, Casual
- Visa sponsorship signal —
explicit_sponsorship,open_to_sponsorship, orno_sponsorship(derived from description text, 482 / TSS / 186 / ENS detection, citizenship requirements) - Description, bullets, skills, screening questions — when detail-page scraping is enabled
- Provenance —
scrapedAtISO-8601 timestamp on every record
This is the fastest path to populate or refresh an ANZ jobs / salary dataset for recruitment platforms, talent intelligence dashboards, RPO operations, equity-research labour-market models, and immigration-pathway research.
Why scrape SEEK yourself when this exists?
SEEK is a server-rendered Next.js application that ships a large __NEXT_DATA__ JSON blob and falls back to React-hydrated DOM cards. Most teams who try to build this in-house run head-first into the same wall:
- Pagination caps out around 22 listings per page and ~550 results per search facet — you have to fan out queries across keyword × location × work-type combinations to escape the cap
- The
__NEXT_DATA__shape is not stable — SEEK rotates betweenpageProps.jobListings,pageProps.data.jobs,pageProps.searchResults,pageProps.initialResults, and a nesteddehydratedState.queries[0].state.data.datastructure - Salary is a free-text field; one in three listings hides the figure inside the description body and the rest mix
$120k–$150k + super,$60/hr,$850 per dayand$8,000 per monthin the same dataset - The superannuation modifier is the single most important compensation signal in Australia (current SG rate 11.5%, rising to 12% in 2025) and there is no structured field for it — you have to regex
plus supervsinclusive of supervs+ supervsexcl. super - Visa sponsorship status is buried in long-form description prose using inconsistent phrasing (
482 visa,TSS visa,186 nomination,will sponsor,PR pathway, vsmust hold valid working rights,Australian citizens only) - Hybrid / remote tags appear inline as
(Hybrid)/(Remote)parentheticals rather than a structured field - AU and NZ live on separate origin domains (
au.seek.comvswww.seek.co.nz) with subtly different markup, currency assumptions, and state taxonomy (AU states vs NZ regions) - Rotating Cloudflare-style protections occasionally throw 429s — naive scrapers crash; serious ones must back off, rotate sessions, and retry idempotently
- Daily changes invalidate any cached snapshot — recruiters need today's inventory, not last week's
This actor solves all of that: it downloads, parses both __NEXT_DATA__ and DOM-fallback cards, normalises every salary into machine-readable numbers, derives the super flag, detects visa sponsorship language, splits location into city / state / postcode, and pushes ready-to-use JSON — no headless browser, no Playwright budget, no schema babysitting.
Quick Start
One-Click Run
- Click "Try for free" on the Apify Store page
- Enter a
keyword(e.g.software engineer) and alocation(e.g.sydney) - Set
countrytoau(default) ornz, leave everything else at default - Hit Start — your dataset of structured jobs is ready in under a minute
API Run (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/seek-scraper").call(run_input={"country": "au","keyword": "data engineer","location": "melbourne","workType": "full-time","workArrangement": "hybrid","dateRange": "7","scrapeDetails": True,"maxRecords": 200,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"],"|", job["company"],"|", job["city"], job.get("state") or "","|", f"${job['salaryMin']:,.0f}–${job['salaryMax']:,.0f}"if job.get("salaryMin") else "(salary hidden)","+ super" if job.get("salaryHasSuper") else "","|", job.get("visaSponsorship") or "—",)
API Run (Node.js / TypeScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/seek-scraper').call({country: 'au',keyword: 'registered nurse',location: 'all-nsw',workType: 'full-time',dateRange: '14',maxRecords: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Pulled ${items.length} NSW nursing jobs from SEEK`);const sponsored = items.filter(j => j.visaSponsorship === 'explicit_sponsorship');console.log(`${sponsored.length} explicitly offer visa sponsorship`);
API Run (cURL)
curl -X POST "https://api.apify.com/v2/acts/haketa~seek-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"country": "nz","keyword": "civil engineer","location": "auckland","workType": "full-time","scrapeDetails": true,"maxRecords": 100}'
API Run (Direct Start URLs)
If you already have SEEK search URLs in your stack, pass them as startUrls and skip filter assembly entirely:
{"startUrls": ["https://au.seek.com/software-engineer-jobs/in-sydney","https://au.seek.com/data-analyst-jobs/in-melbourne?worktype=242","https://www.seek.co.nz/marketing-manager-jobs/in-auckland"],"scrapeDetails": true,"maxRecords": 0}
How It Works
SEEK's public search pages are Next.js server-rendered. Each page ships a giant <script id="__NEXT_DATA__"> JSON blob containing the same listings React hydrates from. This actor:
- Builds canonical search URLs from your
keyword/location/workType/dateRangeinputs (or accepts your ownstartUrls) - Issues HTTPS GETs via
got-scrapingwith realistic browser headers anden-AUaccept-language — no Puppeteer, no Playwright, no Chromium overhead - Parses
__NEXT_DATA__first — trying five known result paths so the parser survives SEEK's silent schema rotations - Falls back to DOM regex parsing of
article/[data-testid*="job-card"]/a[href*="/job/"]selectors when__NEXT_DATA__is empty or restructured - Salary parsing — three-tier strategy: structured field → super-flag regex (
plus super,inclusive of super,excl. super) → description body fallback ($120k–$150k pa,up to $180,000) - Location parser — splits
"Surry Hills, Sydney NSW 2010"intocity: "Sydney",state: "NSW",postcode: "2010"with regex covering all eight AU state abbreviations - Visa sponsorship detection — three-tier keyword cascade:
explicit_sponsorship(482 visa,will sponsor,sponsorship provided) →open_to_sponsorship(may consider sponsorship,PR pathway) →no_sponsorship(Australian citizens only,must hold a valid visa) - Pagination — increments
?page=Nuntil the page returns zero listings, untilmaxPagesis hit, or untilmaxRecordsis reached - Optional detail-page enrichment — when
scrapeDetails: true, each job URL is fetched for fulldescription,skills, screening questions, and a second-pass salary / visa parse from the long-form body - Deduplication —
jobId(or listing URL fallback) is tracked in-memory so cross-page duplicates are dropped before being pushed to the dataset - Resilient retries — 429 rate-limit responses trigger exponential back-off (5s, 10s, 15s); transient 5xxs retry up to 3× with proxy session rotation
- Datacenter proxy by default — SEEK does not require residential IPs; the Apify
SHADER(datacenter) pool is sufficient and dramatically cheaper
Source endpoints
| Surface | URL pattern | Engine | Auth |
|---|---|---|---|
| AU search results | https://au.seek.com/{keyword}-jobs/in-{location}?page=N | HTTP + Cheerio | None |
| NZ search results | https://www.seek.co.nz/{keyword}-jobs/in-{location}?page=N | HTTP + Cheerio | None |
| AU job detail | https://au.seek.com/job/{jobId} | HTTP + Cheerio | None |
| NZ job detail | https://www.seek.co.nz/job/{jobId} | HTTP + Cheerio | None |
| Hydration payload | inline <script id="__NEXT_DATA__"> | JSON parse | None |
Internal work-type code map
SEEK's search URL accepts numeric work-type codes — the actor handles translation:
| Input value | SEEK code | Meaning |
|---|---|---|
full-time | 242 | Full-time permanent |
part-time | 243 | Part-time permanent |
contract | 244 | Contract / Temp |
casual | 245 | Casual / Vacation |
all | (omitted) | All work types |
Input Parameters
{"country": "au","keyword": "software engineer","location": "sydney","workType": "full-time","workArrangement": "hybrid","dateRange": "7","scrapeDetails": false,"maxRecords": 200,"maxPages": 0,"requestDelay": 1000,"proxyConfiguration": { "useApifyProxy": true }}
Parameter reference
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array<string> | [] | Direct SEEK search URLs (e.g. https://au.seek.com/software-engineer-jobs/in-sydney). When provided, overrides all other filters. |
country | string | au | SEEK market: au (seek.com.au) or nz (seek.co.nz). |
keyword | string | "" | Job title or free-text keyword. Examples: software engineer, registered nurse, data analyst, civil engineer, accountant. Spaces auto-converted to hyphens. |
location | string | "" | City, state, region or remote. Examples: sydney, melbourne, brisbane, perth, adelaide, auckland, wellington, all-nsw, all-vic, all-qld, all-wa, remote. Empty = nationwide. |
workType | string | all | full-time, part-time, contract, casual, or all. |
workArrangement | string | all | onsite, hybrid, remote, or all. Filtered post-fetch from listing card text. |
dateRange | string | 0 | Only listings from the last N days. Valid: 0 (all time), 1, 3, 7, 14, 31. |
scrapeDetails | boolean | false | When true, the actor fetches each job detail page for the full description, skills list, screening questions, visa-sponsorship inference, and a second-pass salary extraction from description text. ~3-4× slower but unlocks the richest fields. |
maxRecords | integer | 0 | Cap on total jobs returned. 0 = unlimited. SEEK caps any single search facet at ~550 results — for larger pulls, fan out multiple runs by city or classification. |
maxPages | integer | 0 | Cap on pagination depth. 0 = unlimited. ~22 results per page. |
requestDelay | integer | 1000 | Milliseconds between requests. 1000–2000 ms recommended; raise to 3000+ if you hit 429s. |
proxyConfiguration | object | { useApifyProxy: true } | Apify proxy settings. Datacenter (SHADER) is sufficient — residential is not required for SEEK. |
Output Schema
Every record is a flat JSON object using the same shape regardless of country (AU or NZ), so a single downstream consumer can ingest both markets without per-country branching.
Core listing fields
| Field | Type | Description |
|---|---|---|
jobId | string | SEEK's internal job identifier (numeric, 6+ digits) |
title | string | Job title as posted (e.g. Senior Software Engineer) |
company | string | Employer or recruiting agency name |
companyLogo | string | URL to advertiser branding image (when present) |
listingUrl | string | Canonical job-detail URL on SEEK |
listedAt | string | Posting age string as displayed (e.g. 2d ago, Listed 14 hours ago) |
isFeatured | boolean | true for premium / featured / sponsored placements |
agentName | string | Recruiter / agent name when listed via agency (else null) |
scrapedAt | string | ISO-8601 UTC timestamp the record was extracted |
Location fields
| Field | Type | Description |
|---|---|---|
location | string | Raw location string as posted (e.g. Surry Hills, Sydney NSW) |
city | string | Parsed city (e.g. Sydney, Melbourne, Auckland) |
state | string | Parsed AU state code (NSW, VIC, QLD, WA, SA, TAS, ACT, NT) — null for NZ regions |
postcode | string | 4-digit AU postcode when present in the location string |
Classification fields
| Field | Type | Description |
|---|---|---|
classification | string | Top-level SEEK industry (e.g. Information & Communication Technology) |
subClassification | string | Second-level taxonomy (e.g. Developers/Programmers) |
workType | string | Full time, Part time, Contract/Temp, Casual |
workArrangement | string | On-site, Hybrid, Remote, or null |
Compensation fields
| Field | Type | Description |
|---|---|---|
salaryRaw | string | Original salary text as posted (e.g. $120,000 – $150,000 + super) |
salaryMin | number | Parsed lower bound in dollars |
salaryMax | number | Parsed upper bound in dollars |
salaryPeriod | string | annual, hourly, daily, or monthly |
salaryHasSuper | boolean | true if salary is plus / inclusive of / explicitly mentions superannuation; false if explicitly excluded; null if unspecified |
Sponsorship & content fields (populated when scrapeDetails: true)
| Field | Type | Description |
|---|---|---|
visaSponsorship | string | explicit_sponsorship, open_to_sponsorship, no_sponsorship, or null |
description | string | Full job description with HTML stripped |
bullets | array<string> | Selling-point bullets shown on the listing card |
skills | array<string> | Structured skills list when SEEK exposes one |
screeningQuestions | array | Pre-screening questions when present |
Example: AU software-engineering listing
{"jobId": "78234511","title": "Senior Software Engineer (Backend Go/Rust)","company": "Atlassian","companyLogo": "https://image-service-cdn.seek.com.au/logo/atlassian.png","location": "Sydney NSW","city": "Sydney","state": "NSW","postcode": "2000","classification": "Information & Communication Technology","subClassification": "Developers/Programmers","workType": "Full time","workArrangement": "Hybrid","salaryRaw": "$170,000 – $200,000 + super","salaryMin": 170000,"salaryMax": 200000,"salaryPeriod": "annual","salaryHasSuper": true,"visaSponsorship": "explicit_sponsorship","bullets": ["Greenfield platform team","Hybrid: 2 days in Sydney CBD office","Visa sponsorship available for the right candidate"],"description": "We're hiring a senior backend engineer to join our platform team in Sydney…","skills": ["Go", "Rust", "PostgreSQL", "Kafka", "AWS"],"isFeatured": true,"agentName": null,"listingUrl": "https://au.seek.com/job/78234511","listedAt": "2d ago","scrapedAt": "2026-05-16T03:14:22.481Z"}
Example: NZ healthcare listing (no salary disclosed)
{"jobId": "78219003","title": "Registered Nurse — ICU (Night Shifts)","company": "Auckland District Health Board","companyLogo": null,"location": "Auckland","city": "Auckland","state": null,"postcode": null,"classification": "Healthcare & Medical","subClassification": "Nursing - Critical Care & Emergency","workType": "Full time","workArrangement": "On-site","salaryRaw": null,"salaryMin": null,"salaryMax": null,"salaryPeriod": null,"salaryHasSuper": null,"visaSponsorship": "open_to_sponsorship","bullets": ["Aotearoa's largest tertiary hospital","Relocation support for international candidates","12-hour rotating shift roster"],"description": "Auckland DHB is recruiting experienced ICU RNs…","skills": null,"isFeatured": false,"agentName": null,"listingUrl": "https://www.seek.co.nz/job/78219003","listedAt": "5h ago","scrapedAt": "2026-05-16T03:14:22.481Z"}
Reference Tables
Visa sponsorship signal levels
| Value | Trigger phrases (excerpt) | Meaning |
|---|---|---|
explicit_sponsorship | visa sponsorship, 482 visa, TSS visa, 186 visa, ENS nomination, will sponsor, sponsorship provided, offering sponsorship, sponsor the right candidate | Employer explicitly states sponsorship is on offer |
open_to_sponsorship | sponsorship considered, may consider sponsorship, open to sponsorship, international candidates, overseas candidates welcome, PR pathway, permanent residency pathway, skilled migration | Employer signals openness — candidate-specific decision |
no_sponsorship | Australian citizens only, must have working rights, no sponsorship, not able to sponsor, will not sponsor, Australian or New Zealand citizen, must hold a valid visa | Employer rules out sponsorship — local working rights required |
null | (no signal detected) | Description is silent on sponsorship — use cautiously |
Salary period values
| Value | Meaning | Detection patterns |
|---|---|---|
annual | Per annum (default) | Default when no other period detected; pa, p.a., per annum, annually |
hourly | Per hour | per hour, /hr, p.h., hourly |
daily | Per day | per day, /day, daily |
monthly | Per month | per month, /month, monthly |
Australian state codes returned in state
| Code | State / Territory |
|---|---|
NSW | New South Wales |
VIC | Victoria |
QLD | Queensland |
WA | Western Australia |
SA | South Australia |
TAS | Tasmania |
ACT | Australian Capital Territory |
NT | Northern Territory |
New Zealand listings return
state: nulland rely oncity(e.g.Auckland,Wellington,Christchurch,Hamilton,Tauranga,Dunedin) for regional segmentation.
SEEK top-level classifications (sample of the most populous)
| Classification | Sub-classifications include |
|---|---|
| Information & Communication Technology | Developers/Programmers, Engineering - Software, Architects, Database Dev/Admin, Help Desk & IT Support |
| Healthcare & Medical | Nursing, Medical Specialists, General Practitioners, Allied Health, Aged Care |
| Trades & Services | Electricians, Plumbers, Carpentry & Cabinet Making, Air Cond/Refrig, Automotive Trades |
| Construction | Project Management, Estimating, Foreperson/Supervisor, Surveying, Health & Safety |
| Mining, Resources & Energy | Mining Operations, Oil & Gas Engineering, Mining Engineering, Mining Health & Safety |
| Education & Training | Childcare & Outside School Hours Care, Teaching - Primary, Teaching - Secondary, Tertiary Education |
| Hospitality & Tourism | Chefs/Cooks, Front Office & Guest Services, Bar & Beverage Staff, Management |
| Sales | Account & Relationship Management, Sales Representatives/Consultants, New Business Development |
| Engineering | Civil/Structural Engineering, Electrical/Electronic Engineering, Mechanical Engineering, Project Engineering |
| Banking & Financial Services | Banking - Business, Banking - Retail/Branch, Financial Planning, Mortgages, Risk Management |
Use Cases
Recruiter Intelligence & Talent Sourcing
In-house TA teams and external agencies use SEEK data to:
- Build live talent-pool maps by city × classification × work-arrangement (e.g. every hybrid backend engineer role in Sydney posted in the last 7 days)
- Benchmark posting velocity — how many ICU RN jobs went live this week vs last across Greater Melbourne hospital networks
- Reverse-engineer competitor hiring strategy — when Atlassian, Canva, or Xero pivot to remote-first, the change appears in SEEK postings within days
- Pre-qualify candidates with current advertised salary ranges so offers don't anchor to outdated data
- Identify net-new employers entering a market by diffing this week's
companylist against last week's
HR Market Pricing & Compensation Benchmarking
Compensation teams, total-rewards consultants, and HRIS analysts use the structured salaryMin / salaryMax / salaryHasSuper fields to:
- Price open roles against live ANZ market medians by classification × city × seniority
- Validate vendor surveys (Mercer, Aon, Korn Ferry, Hays Salary Guide) against real-time SEEK postings
- Model super-inclusive vs exclusive comp — Australia's 11.5% SG modifier materially shifts apples-to-apples comparisons
- Quantify the remote-pay-premium by comparing on-site vs remote vs hybrid salary distributions for the same role
- Track wage inflation quarter-over-quarter using archived scheduled runs
Candidate Offer Prep & Career Coaching
Career coaches, exec-search consultants, and individual candidates use SEEK data to:
- Anchor a counter-offer with 50–200 comparable listings showing current market range
- Identify negotiation leverage — roles paying
+ supervsinclusive of superdiffer by ~10% in take-home - Decide between cities — pre-move comp comparisons (Sydney vs Melbourne vs Brisbane vs Perth)
- Target sponsorship-friendly employers by filtering for
visaSponsorship: explicit_sponsorship
Talent Supply & Demand Analytics
Workforce-strategy consultancies, government economic-development agencies, and academic labour-economists use SEEK to:
- Quantify skills gaps — count Cybersecurity Engineer openings nationally vs estimated supply from university completions
- Map regional demand — heatmap construction PM vacancies across Perth vs Brisbane vs the regional WA mining belt
- Track classification rotation — measure the year-on-year shift from on-site retail to fulfilment / logistics
- Power workforce-planning dashboards for state government skills initiatives (Jobs and Skills Australia, NZ MBIE)
- Detect emerging job titles before they appear in BLS-equivalent taxonomies
Immigration & PR-Pathway Research
Migration agents, immigration lawyers, education agents, and prospective migrants use SEEK to:
- Identify Subclass 482 / TSS / 186 ENS sponsor employers filtered by
visaSponsorship: explicit_sponsorship - Build sponsor lists by ANZSCO occupation code (approximated via SEEK
subClassification) - Demonstrate genuine market demand for skilled-migration visa applications
- Advise on regional Designated Area Migration Agreements by querying postings in Adelaide / Darwin / Tasmania / regional NSW
- Match study-visa graduates with TSMIT-compliant graduate roles
Journalism & Data-Driven Reporting
Business-news desks (AFR, Sydney Morning Herald, NZ Herald, ABC News) and freelance data journalists use SEEK data to:
- Cover labour-market stories with live numbers — "ICT job openings drop 23% QoQ across Sydney" with primary-source data
- Quantify return-to-office trends — measure the on-site / hybrid / remote mix month-over-month
- Investigate wage stagnation by classification and metro
- Report on visa-sponsorship availability during immigration policy debates
Equity Research & Labour-Market Macro Signals
Sell-side equity analysts, hedge-fund alt-data teams, and macro researchers use ANZ job-posting velocity as a high-frequency leading indicator:
- Read corporate hiring intent — Wesfarmers, Woolworths, Telstra, BHP, Rio Tinto, Fortescue, CBA, Westpac, NAB, ANZ posting velocity is a forward-earnings signal
- Detect M&A integration signals post-deal close
- Track tech-sector contraction / expansion ahead of ASX-listed tech earnings prints
- Build cross-sector hiring indices to validate ABS Labour Force Survey releases
- Compare ANZ momentum vs US (Levels.fyi / Salary.com) to isolate currency / sovereign risk
Vendor Sales & B2B Lead Generation
SaaS sales teams selling into HR, recruitment, and people-ops use SEEK data to:
- Identify accounts actively hiring for the buyer-persona role their software solves (e.g. companies hiring DevOps engineers → infrastructure-monitoring SaaS prospect list)
- Time outreach — companies posting 5+ engineering roles per month are pre-qualified expansion accounts
- Enrich CRM (Salesforce, HubSpot, Pipedrive) with current
classificationand hiring-volume signals - Build territory plans keyed on company hiring activity per metro
Sample Queries & Recipes
Recipe 1: All Sydney tech jobs posted in the last 7 days
{"country": "au","keyword": "software engineer","location": "sydney","workType": "full-time","dateRange": "7","scrapeDetails": true,"maxRecords": 500}
Recipe 2: Every visa-sponsorship-explicit role across all of NSW
Pull broadly, then filter downstream on visaSponsorship:
{"country": "au","keyword": "","location": "all-nsw","dateRange": "14","scrapeDetails": true,"maxRecords": 1000}
sponsored = [j for j in items if j["visaSponsorship"] == "explicit_sponsorship"]
Recipe 3: Hybrid data-analytics roles across all five mainland AU capitals
Run the actor five times in parallel, varying the location:
{"country": "au","keyword": "data analyst","location": "melbourne","workArrangement": "hybrid","workType": "full-time","dateRange": "7"}
Repeat with location of sydney, brisbane, perth, adelaide.
Recipe 4: New Zealand registered-nurse market scan
{"country": "nz","keyword": "registered nurse","location": "","workType": "full-time","dateRange": "31","scrapeDetails": true}
Recipe 5: Contract / day-rate roles only (consultancy / IT contractor market)
{"country": "au","keyword": "project manager","location": "all-vic","workType": "contract","dateRange": "7"}
Then filter for daily-rate postings:
day_rates = [j for j in items if j.get("salaryPeriod") == "daily"]
Recipe 6: Remote-only ANZ roles for compensation benchmarking
{"country": "au","keyword": "","location": "remote","workArrangement": "remote","scrapeDetails": true,"maxRecords": 500}
Recipe 7: Direct-URL fan-out (advanced)
Pre-build your own faceted SEEK URL list (city × classification) and process the lot in one run:
{"startUrls": ["https://au.seek.com/jobs/in-sydney?classification=6281","https://au.seek.com/jobs/in-melbourne?classification=6281","https://au.seek.com/jobs/in-brisbane?classification=6281","https://au.seek.com/jobs/in-perth?classification=6281","https://www.seek.co.nz/jobs/in-auckland?classification=6281"],"scrapeDetails": false,"maxRecords": 0}
Integration Examples
Google Sheets (via Apify Integration)
- Set up an Apify Schedule to run this actor every morning at 8:00 AEST
- Add the "Save to Google Sheets" integration to the schedule
- Wake up to a refreshed ANZ jobs sheet — pivot by
city,classification,salaryMinand share across your TA / comp team
Make.com / Zapier / n8n
Use the native Apify connector on any major automation platform. Useful triggers:
- New listings (today's run minus yesterday's run) → Slack channel
- New
explicit_sponsorshippostings → Slack channel for migration-agent team - Salary outliers (top decile for a
subClassification) → spreadsheet + Slack alert - Specific company starting to hire (e.g.
company == "Canva") → CRM task
Power BI / Tableau / Looker
Connect the Apify REST API as a live data source. Refresh nightly. Build dashboards covering:
- Active job count per AU state / NZ region
- Median salary by
classification×city× month - Visa-sponsorship availability heatmap
- On-site vs hybrid vs remote distribution by metro
- Top-50 employers by posting volume per quarter
Postgres / Snowflake / BigQuery
Use the Apify webhook integration to POST run results directly to your warehouse ingestion endpoint after every scheduled run. Suggested table partitioning: scrapedAt date + country + state for AU, scrapedAt + country + city for NZ.
Salesforce / HubSpot CRM Enrichment
Run nightly, then upsert against Account records keyed on company. Trigger workflow actions on:
- Posting count surge (5+ new openings in a week) → assign SDR
- New office in a new metro → re-territory the account
- Specific
subClassificationpostings matching ICP → create Opportunity
ATS / Recruiting Platforms (Greenhouse, Lever, Workable, JobAdder)
Bulk-import live SEEK postings as competitive intelligence; tag each company so recruiters see "this company also has 12 open roles on SEEK" alongside their internal pipeline.
Webhooks → custom services
Configure an Apify webhook to POST the dataset URL to your own service on ACTOR.RUN.SUCCEEDED. Pair with the Apify Dataset SDK for streaming reads.
Major ANZ Markets & Regional Coverage
| Metro / Region | Country | Approx. metro pop. | Why it matters |
|---|---|---|---|
| Sydney | AU | 5.4M | Largest tech, finance and professional-services hub — Atlassian, Canva, CBA, Macquarie, Westpac |
| Melbourne | AU | 5.2M | Tech, healthcare, education and culture capital — REA Group, MYOB, Telstra, NAB |
| Brisbane | AU | 2.6M | Mining HQs, infrastructure, Olympics 2032 build-out — BHP, Rio, Suncorp |
| Perth | AU | 2.2M | Mining and resources epicentre — Fortescue, Woodside, South32 |
| Adelaide | AU | 1.4M | Defence, space, advanced manufacturing — BAE, ASC, Naval Group |
| Canberra | AU | 0.5M | Federal government, defence, public-service consulting |
| Darwin | AU | 0.15M | Defence, energy, regional designated migration area |
| Newcastle | AU | 0.5M | Heavy industry, energy transition, Hunter Valley wine |
| Auckland | NZ | 1.7M | Largest NZ city — finance, tech, healthcare, supply-chain HQs |
| Wellington | NZ | 0.4M | Capital — government, film/VFX (Weta), tech (Xero) |
| Christchurch | NZ | 0.4M | Rebuild-era construction, agritech, aerospace (Rocket Lab) |
| Hamilton | NZ | 0.18M | Agritech, dairy science, regional health |
| Tauranga | NZ | 0.16M | Bay of Plenty horticulture, port logistics |
| Dunedin | NZ | 0.13M | Otago University, healthcare, biotech |
Cost & Performance
| Metric | Value |
|---|---|
| Engine | got-scraping + Cheerio (HTTP, no headless browser) |
| Runtime (50 listings, no detail pages) | 30–60 seconds |
| Runtime (500 listings + detail pages) | 8–15 minutes |
| Cost per run (default Apify proxy) | Pay-per-event, typically under $0.10 for a 500-listing scrape |
| Pricing model | Pay-per-event — actor-start + per-dataset-item |
| Data freshness | Live at run time (SEEK is a live marketplace) |
| Auth required | None — no SEEK login, no API key |
| Proxy required | Datacenter sufficient (Apify SHADER pool); residential not required |
| Concurrency | Safe to run multiple parallel jobs across different country × location × keyword facets |
| Memory footprint | 128–512 MB sufficient (1024 MB cap configured) |
| Rate-limit handling | Exponential back-off on 429, up to 3 retries per page with session rotation |
| Pagination ceiling | ~22 listings/page × ~25 pages = ~550 results per search facet (SEEK platform cap — fan out by location / keyword to escape) |
Compliance, Privacy & Legal Notes
- Public data only — every field in this dataset is published by SEEK at seek.com.au and seek.co.nz and is publicly accessible without authentication
- No PII / no candidate data — this actor scrapes employer-published job postings, not candidate profiles or résumés
- No emails / no phone numbers are returned by default — SEEK does not surface recruiter contact info on listings
- Salary figures are employer-published advertised ranges — they are not employee compensation records
- GDPR / Australian Privacy Act / NZ Privacy Act compliance for downstream use is the consumer's responsibility, particularly around any subsequent merging with candidate-side data
- The actor honours
requestDelaydefaults to avoid imposing meaningful load on SEEK's infrastructure - ToS deference — SEEK's Terms of Use prohibit certain commercial uses; review SEEK's terms and consult counsel for your specific use case. This actor exists to make public data engineering tractable; it does not authorise any specific downstream application
- No CAPTCHA solving / no auth bypass — the actor uses only publicly-served HTML pages; if SEEK introduces auth walls on a surface, the actor will return empty for that surface rather than circumventing protection
- Cross-border data transfers (e.g. AU listing data ingested into US-based warehouses) should be reviewed under the consumer's data-residency policy
Important: This actor extracts public job-posting data. It is not a tool for harvesting candidate personal information, sending unsolicited contact, or any application prohibited by SEEK's Terms of Use or applicable spam / consumer-protection law (Spam Act 2003, NZ Unsolicited Electronic Messages Act 2007, CAN-SPAM, TCPA, GDPR, CCPA).
Frequently Asked Questions
How fresh is the data?
Live at run time. SEEK is a real-time job marketplace — every actor run hits today's inventory. Postings can appear or disappear between consecutive runs on the same day.
How many records can I expect per run?
It depends entirely on your filter combination. A broad query (keyword: "", location: "") can saturate the ~550-result SEEK per-facet cap quickly. A narrow query (software engineer in adelaide) might return 40–80 listings. Across all classifications, AU + NZ combined currently host 150,000–200,000 active listings at any time.
Does this actor require a SEEK login or API key?
No. SEEK's search and detail pages are publicly accessible. You only need an Apify account.
Does the actor work on the Apify Free Plan?
Yes — full functionality on the free tier for small runs. Pay-per-event pricing means a 50-listing test run costs pennies.
Can I scrape both Australia and New Zealand in one run?
Not in a single run — country is a per-run parameter. Run twice (one with country: "au", one with country: "nz") and merge downstream. Or pass mixed startUrls from both domains directly.
Why does SEEK cap results around 550 per search?
That's SEEK's platform-side pagination ceiling, not an actor limit. To exceed it, fan out across multiple narrower queries (by city, suburb, classification, or keyword variation) and merge the resulting datasets. Deduplication on jobId is handled within each run; across runs, dedupe in your downstream pipeline.
Does SEEK block scrapers or require CAPTCHA?
SEEK uses standard anti-abuse measures (occasional 429 rate-limits, IP reputation checks). The actor handles these with exponential back-off and session rotation via Apify's datacenter proxy pool. Residential proxies are not required.
Does scrapeDetails: true slow things down a lot?
Yes — every job's detail page requires its own HTTP request plus the configured requestDelay. A 500-listing run with detail pages takes roughly 8–15 minutes vs 30–60 seconds without. Only enable it when you need the full description, skills list, or accurate visa-sponsorship inference.
What if salary isn't in the listing card?
The actor's three-tier salary parser tries: (1) structured fields, (2) regex on the listing-card text, (3) regex on the long-form description body (when scrapeDetails: true). Many AU/NZ employers still don't disclose salary publicly; for those, all salary* fields will be null.
What does salaryHasSuper actually tell me?
In Australia, employer superannuation (currently 11.5%, rising to 12% in 2025) is a material modifier. Three states:
true— salary is plus / inclusive of / explicitly mentions super (readsalaryRawto disambiguate)false— salary explicitly excludes supernull— silent on super (assume base-only for AU listings)
For total-comp comparisons, multiply base by 1.115 (AU) when salaryHasSuper is false or null to estimate super-inclusive equivalent.
Can I filter by NZ region (Auckland, Wellington, Canterbury)?
Yes — pass country: "nz" and location: "auckland" / "wellington" / "christchurch" / "all-canterbury" etc. NZ doesn't use AU-style state codes, so state will be null and you rely on city for segmentation.
Can the actor detect ANZSCO occupation codes?
Not directly — SEEK exposes its own classification / subClassification taxonomy, not ANZSCO. You can build a mapping table downstream (ANZSCO 261313 Software Engineer ↔ SEEK Developers/Programmers, etc.) for migration / visa workflows.
Can I run this on a schedule automatically?
Yes — use Apify's built-in Scheduler with any cron expression. Daily 8am Sydney time is a common cadence for recruitment-intel dashboards. Combine with the Webhook integration for fully automated pipelines.
What formats can I export the data in?
JSON, CSV, Excel (XLSX), HTML, XML, RSS — all directly from the Apify dataset view. The API also supports JSON Lines for streaming consumers.
How do I handle SEEK schema changes?
The actor already attempts five different __NEXT_DATA__ paths plus DOM fallback parsing. If SEEK ships a breaking change, open an issue on the actor's Apify Store page — schema-drift fixes are typically shipped within 24–48 hours.
Can I get historical SEEK listings?
Not from SEEK directly — SEEK doesn't expose an archive. To build a longitudinal dataset, schedule this actor daily and archive each dataset run; Apify retains run datasets on most plans.
How do I report a bug or request a feature?
Open an issue on the Apify Store actor page or contact the developer directly through the Apify Console. Schema-drift bugs are prioritised.
Does this work for SEEK regional sites in Asia (Indonesia / Philippines / Malaysia)?
No — this actor targets seek.com.au and seek.co.nz only. SEEK has divested most of its Asian properties (JobStreet / JobsDB) into separate brands; coverage for those markets is on the roadmap as a separate actor.
Related Apify Actors by Haketa
If you need adjacent labour-market, ANZ-geographic, or vertical data sources, these sibling actors pair naturally with the SEEK Scraper:
Jobs, Salary & Careers (direct siblings)
- H1B Visa Database Scraper — US compensation benchmarking by job × city × experience; pair with SEEK for AU-vs-US comp comparisons
- Levels.fyi Scraper — Big Tech total-compensation data (base + stock + bonus); the canonical reference for FAANG / unicorn pay
- ProductHunt Launches & Makers Scraper — daily startup launches, makers, votes & reviews — VC/founder/recruiter intel
Australia / New Zealand adjacents
- Domain.com.au Property Scraper (Australia) — AU residential property listings; combine with SEEK salary data for cost-of-living models
- TradeMe Scraper (New Zealand) — NZ's largest classifieds marketplace (property, motors, marketplace); the NZ counterpart for cross-vertical research
Other employer-research / B2B data sources
- BBB Business Scraper — Better Business Bureau company profiles for US-employer due diligence
- SAM.gov Federal Contractor Entity Scraper — US federal contractor entities
- TTB Alcohol Permittee Scraper — US TTB permittee universe
Global marketplace siblings (for multi-market research)
- Kleinanzeigen.de Scraper (Germany)
- Marktplaats.nl Scraper (Netherlands)
- Kijiji.ca Scraper (Canada)
- OfferUp Scraper (US)
Comparison vs. Alternatives
| Approach | Setup time | Data freshness | Salary parsing | Visa-sponsorship signal | Cost (500 listings) |
|---|---|---|---|---|---|
| This actor | < 1 minute | Live at run | Three-tier + super flag | Three-tier text inference | Under $0.10 |
| Manual SEEK browsing + copy-paste | Hours | Live | None | None | Free + your time |
| Custom Playwright scraper | 2–5 days dev | Live | DIY | DIY | Free + infra + maintenance |
| Custom Cheerio + got scraper | 1–2 days dev | Live | DIY | DIY | Free + infra + maintenance |
| Paid recruitment-data API (e.g. LinkUp, Adzuna, Greenhouse Job Board partners) | Hours setup | Daily / weekly | Sometimes | Rarely | $500–5,000+/month minimums |
| SEEK Recruiter native tools | Account setup | Live | Aggregated | None | Paid SEEK Recruiter subscription |
Why Pay-Per-Event Pricing?
Most data scrapers either charge a flat monthly subscription (you pay even when idle) or per-Compute-Unit (unpredictable). This actor uses pay-per-event, which means:
- You only pay when the actor runs and produces data
- Charges scale linearly with how many job records you actually consume
- Transparent line-item billing inside the Apify Console
- No monthly minimums — sample with
maxRecords: 20for pennies before committing - Predictable unit economics for downstream products that bill per job-record consumed
Changelog
| Version | Date | Notes |
|---|---|---|
| 1.0.0 | 2026-05 | Initial public release — AU + NZ coverage, __NEXT_DATA__ + DOM fallback parsing, three-tier salary parser, super-flag detection, three-tier visa-sponsorship inference, optional detail-page enrichment, datacenter-proxy support |
Keywords
SEEK scraper · SEEK jobs data · SEEK Australia scraper · SEEK New Zealand scraper · seek.com.au scraper · seek.co.nz scraper · Australia job listings API · NZ jobs scraper · Sydney Melbourne salary data · SEEK salary scraper · ANZ recruitment data · SEEK API alternative · Australian job market data · NZ job market data · Sydney jobs scraper · Melbourne jobs scraper · Brisbane jobs scraper · Perth jobs scraper · Adelaide jobs scraper · Auckland jobs scraper · Wellington jobs scraper · Christchurch jobs scraper · 482 visa sponsor list · TSS visa employer scraper · 186 ENS sponsor list · PR pathway employer data · Australian salary benchmark · NZ salary benchmark · Australian compensation data · ANZ HR market pricing · ANZSCO occupation data · SEEK classification taxonomy · Australia hybrid jobs data · Australia remote jobs data · superannuation salary parser · plus super vs inclusive super · SEEK job board API · Australia recruitment intelligence · NZ recruitment intelligence · Apify SEEK actor · SEEK data extraction · SEEK lead generation · ANZ workforce planning data · skilled migration sponsor list · candidate offer benchmark Australia · talent supply demand ANZ · equity research labour market Australia · job posting velocity alt-data · SEEK competitor intelligence · TA market intelligence ANZ
Support
- Bug reports: Use the Issues tab on the Apify Store page
- Feature requests: Same place — please describe your use case and target market (AU / NZ / both)
- Direct contact: Through the Apify developer profile
If this actor saves your recruiting, HR, comp, or research team time, a 5-star rating on the Apify Store helps other ANZ-focused operators discover it. Thank you!