SEEK Scraper | Australia & NZ Job Listings with Salary avatar

SEEK Scraper | Australia & NZ Job Listings with Salary

Pricing

from $1.50 / 1,000 results

Go to Apify Store
SEEK Scraper | Australia & NZ Job Listings with Salary

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

11

Monthly active users

2 days ago

Last modified

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

ModeInputBest For
Keyword + Locationkeyword, location, countryTargeted job searches
Start URLsstartUrls: paste SEEK search URLsPre-filtered results, multi-city fan-out
Direct Job URLsstartUrls: paste SEEK job URLsEnrich 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–$150k120000 / 150000)
  • salaryPeriodannual, hourly, daily, or monthly
  • salaryHasSupertrue if 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:

LevelExample Triggers
explicit_sponsorship482 visa, will sponsor, sponsorship provided
open_to_sponsorshipmay consider sponsorship, PR pathway, international candidates
no_sponsorshipAustralian 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

FieldTypeDescription
jobIdstringSEEK job identifier
titlestringJob title
companystringEmployer or agency name
listingUrlstringJob detail URL on SEEK
listedAtstringPosting age (e.g. 2d ago)
isFeaturedbooleanPremium/featured listing
agentNamestringRecruiter name (if via agency)

Location

FieldTypeDescription
locationstringRaw location string
citystringParsed city
statestringAU state code (NSW/VIC/QLD/WA/SA/TAS/ACT/NT) — null for NZ
postcodestring4-digit AU postcode

Classification

FieldTypeDescription
classificationstringTop-level industry (e.g. Information & Communication Technology)
subClassificationstringSecond-level taxonomy (e.g. Developers/Programmers)
workTypestringFull time / Part time / Contract/Temp / Casual
workArrangementstringOn-site / Hybrid / Remote

Compensation

FieldTypeDescription
salaryRawstringOriginal salary text
salaryMinnumberLower bound in dollars
salaryMaxnumberUpper bound in dollars
salaryPeriodstringannual / hourly / daily / monthly
salaryHasSuperbooleantrue if plus/inclusive of super, false if excluded, null if silent

Detail Enrichment (scrapeDetails: true)

FieldTypeDescription
visaSponsorshipstringexplicit_sponsorship / open_to_sponsorship / no_sponsorship
descriptionstringFull job description (HTML stripped)
bulletsarrayListing card bullet points
skillsarrayStructured skills list
screeningQuestionsarrayPre-screening questions
scrapedAtstringISO-8601 scrape timestamp

Input Parameters

ParameterTypeDefaultDescription
countryselectauau (seek.com.au) or nz (seek.co.nz)
keywordstringJob title or keyword. Spaces become hyphens in URL
locationstringCity, state, region, or remote. Empty = nationwide
startUrlsarray[]SEEK search or job URLs. Overrides keyword/location
workTypeselectallfull-time / part-time / contract / casual
workArrangementselectallonsite / hybrid / remote (post-filtered)
dateRangeselect0Only last N days: 0=all, 1, 3, 7, 14, 31
scrapeDetailsbooleanfalseVisit each job detail page for full description, skills, visa detection
maxRecordsinteger0Maximum jobs. 0=unlimited. SEEK caps ~550 per search facet
maxPagesinteger0Maximum result pages. 0=unlimited. ~22 jobs per page
requestDelayinteger1000Milliseconds between requests. 1000-2000ms recommended
proxyConfigurationproxyDatacenter ONDatacenter 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 ApifyClient
client = 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

ModeSpeedMemoryProxy
Search only (scrapeDetails: false)~50 jobs/sec128 MBDatacenter OK
Search + details (scrapeDetails: true)~5-8 jobs/sec256 MBDatacenter OK
Direct job URLs~5-8 jobs/sec256 MBDatacenter OK

Typical cost: 500 listings with detail pages = ~8-15 minutes, under $0.10 in Apify credits.


AU State Reference

CodeState
NSWNew South Wales
VICVictoria
QLDQueensland
WAWestern Australia
SASouth Australia
TASTasmania
ACTAustralian Capital Territory
NTNorthern 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.


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.