SEEK Scraper | Australia & NZ Job Listings with Salary
Pricing
from $1.50 / 1,000 results
SEEK Scraper | Australia & NZ Job Listings with Salary
SEEK job scraper & API for Australia & New Zealand: search jobs by keyword, location & category and export title, company, salary, work type, classification, posting date, description and apply URL. Recruitment, salary benchmarking and job-board market data — fast, no login.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
11
Monthly active users
2 days ago
Last modified
Categories
Share
SEEK Jobs Scraper — Australia & NZ Listings with Salary, Super & Visa Sponsorship
Extract live job listings from seek.com.au and seek.co.nz with structured salary parsing, superannuation detection, visa sponsorship signals, and full classification data. The most complete SEEK scraper on Apify — no login, no browser, no residential proxy required.
Quick Start
{"country": "au","keyword": "software engineer","location": "sydney","maxRecords": 100}
👉 100 Sydney software engineer jobs in ~30 seconds. Salary, super, visa sponsorship included.
3 Input Modes
| Mode | Input | Best For |
|---|---|---|
| Keyword + Location | keyword, location, country | Targeted job searches |
| Start URLs | startUrls: paste SEEK search URLs | Pre-filtered results, multi-city fan-out |
| Direct Job URLs | startUrls: paste SEEK job URLs | Enrich known listings with detail data |
What Makes This Different
Structured Salary Parsing
SEEK displays salary as free-form text. This actor normalizes it:
salaryMin/salaryMax— numeric bounds extracted from text ($120k–$150k→120000/150000)salaryPeriod—annual,hourly,daily, ormonthlysalaryHasSuper—trueif salary is plus/inclusive of superannuation (11.5% SG in Australia)salaryRaw— original text string preserved
Visa Sponsorship Detection
Three-tier keyword cascade from job descriptions:
| Level | Example Triggers |
|---|---|
explicit_sponsorship | 482 visa, will sponsor, sponsorship provided |
open_to_sponsorship | may consider sponsorship, PR pathway, international candidates |
no_sponsorship | Australian citizens only, must hold a valid visa |
Resilient Architecture
SEEK is a Next.js app that rotates its __NEXT_DATA__ JSON schema. This actor tries five internal data paths plus a DOM fallback parser — so it survives SEEK's frequent structure changes without breaking.
Data Fields
Core Listing Fields
| Field | Type | Description |
|---|---|---|
jobId | string | SEEK job identifier |
title | string | Job title |
company | string | Employer or agency name |
listingUrl | string | Job detail URL on SEEK |
listedAt | string | Posting age (e.g. 2d ago) |
isFeatured | boolean | Premium/featured listing |
agentName | string | Recruiter name (if via agency) |
Location
| Field | Type | Description |
|---|---|---|
location | string | Raw location string |
city | string | Parsed city |
state | string | AU state code (NSW/VIC/QLD/WA/SA/TAS/ACT/NT) — null for NZ |
postcode | string | 4-digit AU postcode |
Classification
| Field | Type | Description |
|---|---|---|
classification | string | Top-level 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 |
Compensation
| Field | Type | Description |
|---|---|---|
salaryRaw | string | Original salary text |
salaryMin | number | Lower bound in dollars |
salaryMax | number | Upper bound in dollars |
salaryPeriod | string | annual / hourly / daily / monthly |
salaryHasSuper | boolean | true if plus/inclusive of super, false if excluded, null if silent |
Detail Enrichment (scrapeDetails: true)
| Field | Type | Description |
|---|---|---|
visaSponsorship | string | explicit_sponsorship / open_to_sponsorship / no_sponsorship |
description | string | Full job description (HTML stripped) |
bullets | array | Listing card bullet points |
skills | array | Structured skills list |
screeningQuestions | array | Pre-screening questions |
scrapedAt | string | ISO-8601 scrape timestamp |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country | select | au | au (seek.com.au) or nz (seek.co.nz) |
keyword | string | — | Job title or keyword. Spaces become hyphens in URL |
location | string | — | City, state, region, or remote. Empty = nationwide |
startUrls | array | [] | SEEK search or job URLs. Overrides keyword/location |
workType | select | all | full-time / part-time / contract / casual |
workArrangement | select | all | onsite / hybrid / remote (post-filtered) |
dateRange | select | 0 | Only last N days: 0=all, 1, 3, 7, 14, 31 |
scrapeDetails | boolean | false | Visit each job detail page for full description, skills, visa detection |
maxRecords | integer | 0 | Maximum jobs. 0=unlimited. SEEK caps ~550 per search facet |
maxPages | integer | 0 | Maximum result pages. 0=unlimited. ~22 jobs per page |
requestDelay | integer | 1000 | Milliseconds between requests. 1000-2000ms recommended |
proxyConfiguration | proxy | Datacenter ON | Datacenter proxy is sufficient — residential NOT required |
Example Output
{"jobId": "78234511","title": "Senior Software Engineer (Backend Go/Rust)","company": "Atlassian","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,"listingUrl": "https://au.seek.com/job/78234511","listedAt": "2d ago","scrapedAt": "2026-06-22T03:14:22.481Z"}
Use Cases
Recruitment & Talent Intelligence
Build live talent-pool maps by city × classification. Benchmark posting velocity. Track competitor hiring strategy — when companies shift to remote-first, SEEK postings reflect it within days.
Compensation Benchmarking
Price open roles against live market medians by classification, city, and seniority. Model super-inclusive vs exclusive compensation. Quantify remote-pay premiums by comparing on-site vs remote salary distributions.
Visa & Immigration Research
Identify Subclass 482/TSS/186 sponsor employers by filtering visaSponsorship: explicit_sponsorship. Build sponsor lists by occupation. Demonstrate genuine market demand for skilled-migration visa applications.
Workforce Planning
Quantify skills gaps by counting openings vs estimated supply. Map regional demand heatmaps. Track classification rotation year-over-year. Power workforce-planning dashboards for government skills initiatives.
Sales & B2B Lead Generation
Identify companies actively hiring for buyer-persona roles. Enrich CRM with current hiring-volume signals. Time outreach to companies posting 5+ roles per month.
Equity Research & Macro Signals
Use job-posting velocity as a high-frequency leading indicator for corporate earnings. Track sector contraction/expansion ahead of ASX-listed tech prints. Build cross-sector hiring indices.
Example Recipes
All Sydney tech jobs posted this week
{"country": "au","keyword": "software engineer","location": "sydney","workType": "full-time","dateRange": "7","scrapeDetails": true,"maxRecords": 200}
Every visa-sponsorship role across NSW
{"country": "au","keyword": "","location": "all-nsw","scrapeDetails": true,"maxRecords": 500}
Then filter: items.filter(j => j.visaSponsorship === 'explicit_sponsorship')
NZ registered nurse market scan
{"country": "nz","keyword": "registered nurse","location": "","workType": "full-time","dateRange": "31","scrapeDetails": true}
Contract/day-rate roles only
{"country": "au","keyword": "project manager","location": "all-vic","workType": "contract","dateRange": "7"}
Then filter: items.filter(j => j.salaryPeriod === 'daily')
Multi-city fan-out via Start URLs
{"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"],"scrapeDetails": false,"maxRecords": 0}
Integration
JavaScript / TypeScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('haketa/seek-scraper').call({country: 'au', keyword: 'data engineer', location: 'melbourne',scrapeDetails: true, maxRecords: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient(token='YOUR_TOKEN')run = client.actor('haketa/seek-scraper').call(run_input={'country': 'au', 'keyword': 'data engineer', 'location': 'melbourne','scrapeDetails': True, 'maxRecords': 200,})for job in client.dataset(run['defaultDatasetId']).iterate_items():print(job['title'], '|', job['company'], '|', f"${job.get('salaryMin',0):,.0f}")
CLI
apify call haketa/seek-scraper \--input '{"country":"au","keyword":"software engineer","location":"sydney","maxRecords":100}'
Google Sheets / Make / Zapier / n8n
Use Apify's native integrations to schedule daily runs → auto-save to Google Sheets or trigger Slack notifications for new sponsored roles.
Performance
| Mode | Speed | Memory | Proxy |
|---|---|---|---|
Search only (scrapeDetails: false) | ~50 jobs/sec | 128 MB | Datacenter OK |
Search + details (scrapeDetails: true) | ~5-8 jobs/sec | 256 MB | Datacenter OK |
| Direct job URLs | ~5-8 jobs/sec | 256 MB | Datacenter OK |
Typical cost: 500 listings with detail pages = ~8-15 minutes, under $0.10 in Apify credits.
AU State Reference
| Code | State |
|---|---|
| NSW | New South Wales |
| VIC | Victoria |
| QLD | Queensland |
| WA | Western Australia |
| SA | South Australia |
| TAS | Tasmania |
| ACT | Australian Capital Territory |
| NT | Northern Territory |
NZ listings return state: null — use city for regional segmentation.
FAQ
Do I need a SEEK login or API key? No. SEEK search and detail pages are publicly accessible. You only need an Apify account.
Does SEEK block scrapers? SEEK occasionally returns 429 rate-limits. The actor handles these with exponential backoff and session rotation. Residential proxies are NOT required — datacenter is sufficient.
How many results can I get per search? SEEK caps at ~550 results per search facet (~22 jobs/page × 25 pages). For larger datasets, fan out across multiple cities or classifications.
What's the difference between salaryHasSuper values?
true = salary includes or is plus superannuation. false = explicitly excludes super. null = silent on super. For total-comp in AU, multiply base by 1.115 when super is excluded.
Can I search both AU and NZ in one run?
Use startUrls with URLs from both domains. Or run twice (au + nz) and merge datasets.
Does scrapeDetails: true slow things down?
Yes — each detail page requires its own HTTP request. 500 listings: ~30 seconds without details, ~8-15 minutes with. Only enable it when you need full descriptions, skills, or visa-sponsorship detection.
What formats can I export? JSON, CSV, Excel (XLSX), HTML, XML, RSS — all from the Apify dataset view. API also supports JSON Lines for streaming.
Can I schedule this to run automatically? Yes — Apify Scheduler with any cron expression. Daily 8am AEST is common for recruitment dashboards.
Legal & Responsible Use
This actor extracts publicly available job postings from SEEK. It does NOT scrape candidate profiles, résumés, or any personal information. Users are responsible for complying with SEEK's Terms of Service and applicable privacy laws (Australian Privacy Act, NZ Privacy Act, GDPR). Data is intended for legitimate business intelligence, market research, and talent analytics.
The most reliable SEEK scraper on Apify — structured salary + super parsing, visa sponsorship detection, and full classification data for Australia and New Zealand.