SEEK Scraper — Australia & NZ Jobs with Salary Data
Pricing
from $0.45 / 1,000 job scrapeds
SEEK Scraper — Australia & NZ Jobs with Salary Data
Scrape SEEK.com.au & seek.co.nz job listings: titles, companies, salaries, categories, full descriptions, geo-coordinates and company ratings. Filter by keyword, location, radius, salary range and category. $0.65/1,000 results. Deduplication and daily incremental feeds built in.
Pricing
from $0.45 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
2
Bookmarked
102
Total users
16
Monthly active users
9 days ago
Last modified
Categories
Share
SEEK.com.au Scraper

Extract structured job listings from SEEK.com.au — Australia's largest job board with 150,000–200,000 active listings. Search by keyword, location, salary, category and more. No API key required. Pay per result at $0.65/1,000 listings — no monthly fees, no minimums.
Why this scraper?
📋 Complete job data
Title, company, location, work type, remote/hybrid arrangement, categories and — with detail fetching — the full job description in HTML, plain text and Markdown.
💰 Structured salary
Raw salary label plus parsed salaryMin, salaryMax, salaryPeriod and currency. Filter results by a salary range (annual or hourly) directly at the source.
🔍 Precise filters
Filter by keyword, location, radius, work type, category, sub-category, salary range and listing age. Every filter is applied server-side by SEEK, so you only pay for matching results.
📍 Enriched output
Geo-coordinates for each location, structured location and category hierarchies, employer profile links, and optional company ratings and review data.
🔄 Incremental feeds
Skip already-seen jobs with the built-in 90-day deduplication store. Run daily and only collect new listings, with repost detection built in.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "developer" | Keywords to search for, e.g. software engineer or nurse. Leave empty to browse all jobs. |
location | string | All Australia | Location label as used on SEEK, e.g. Sydney NSW, Melbourne VIC, All Australia. |
radiusKm | integer | (empty) | Include jobs within this many km of the location. Requires a specific location (not All Australia). |
workType | string | (empty) | Employment type: Full time, Part time, Contract/Temp or Casual/Vacation. |
classificationId | integer | (empty) | SEEK category ID, e.g. 1223 for ICT. Leave empty for all categories. |
subClassificationId | integer | (empty) | SEEK sub-category ID. Requires classificationId to be set. |
salaryMin | integer | (empty) | Only return jobs with a listed salary at or above this value. |
salaryMax | integer | (empty) | Only return jobs with a listed salary at or below this value. |
salaryType | string | annual | Whether salaryMin/salaryMax are annual or hourly amounts. |
daysOld | integer | (empty) | Only return jobs listed within this many days. E.g. 7 = last week. |
sortMode | string | ListedDate | Sort by ListedDate (most recent) or KeywordRelevance. |
fetchDetails | boolean | false | Fetch the full job description and detail-only fields. Slower but complete. |
fetchCompanyProfile | boolean | false | Fetch each employer's SEEK company page for rating, reviews, industry, size and website. One extra request per unique company. |
startUrls | array | (empty) | Direct SEEK job or search URLs to scrape instead of running a search. |
skipReposts | boolean | false | Skip jobs already returned in a previous run (90-day deduplication store). |
country | string | AU | Which SEEK site to scrape: AU (seek.com.au) or NZ (seek.co.nz). |
includeKeywords | array | (empty) | Post-filter: keep only jobs whose text contains at least one of these words. |
excludeKeywords | array | (empty) | Post-filter: drop jobs whose text contains any of these words. |
fromDate | string | (empty) | Post-filter: keep jobs listed on or after this date (YYYY-MM-DD). |
toDate | string | (empty) | Post-filter: keep jobs listed on or before this date (YYYY-MM-DD). |
maxItems | integer | 5 | Maximum number of listings to return. |
Output schema
Fields the source does not provide for a given job are returned as null (or an empty array), never omitted.
Always present
| Field | Type | Description |
|---|---|---|
id | string | SEEK job ID |
url | string | Full URL to the job listing |
title | string | Job title |
company | string | Advertiser / company name |
location | string | Primary location label, e.g. Sydney NSW |
locations | array | All location labels for the listing |
salaryLabel | string | null | Raw salary string, e.g. $80,000 – $90,000 per year (null if not disclosed) |
salaryMin | number | null | Parsed minimum salary (null if not disclosed) |
salaryMax | number | null | Parsed maximum salary (null if not disclosed) |
salaryPeriod | string | null | YEAR, MONTH, WEEK, DAY or HOUR |
currency | string | AUD (or NZD for country: NZ) |
workType | string | Work type, e.g. Full time |
workArrangement | string | null | Remote/hybrid arrangement, e.g. Hybrid |
classifications | array | Category and sub-category labels |
classificationStructured | array | Category/sub-category IDs and labels |
teaser | string | null | Short job preview |
bulletPoints | array | Highlight bullet points (premium listings only) |
isFeatured | boolean | Whether the listing is featured/promoted |
advertiser | object | { id, name, isVerified, registrationDate } (last two require fetchDetails) |
employer | object | { id, name, companyId, companyUrl } — company profile link |
roleId | string | null | SEEK role slug |
tags | array | Listing tags, e.g. Early applicant |
locationHierarchy | array | Structured location hierarchy per location |
displayType | string | SEEK display type, e.g. standard or promoted |
listingDateDisplay | string | Human-readable listing age, e.g. 3d ago |
jobScore | number | Quality/relevance score 0–3 |
jobScoreReasons | array | Reasons behind the score, e.g. salary_disclosed, full_description, recent_7d |
latitude | number | null | Geocoded latitude of the location |
longitude | number | null | Geocoded longitude of the location |
publishDate | string | Listing date (Sydney timezone), YYYY-MM-DD |
publishDateISO | string | Same as publishDate |
listingDateRaw | string | Raw ISO listing timestamp from the source |
contentHash | string | Content fingerprint for change detection |
changeStatus | string | null | NEW, UPDATED or null across runs |
isRepost | boolean | Whether this job was seen in a previous run |
originalPublishDate | string | null | First-seen date (populated when isRepost is true) |
originalUrl | string | null | First-seen URL (populated when isRepost is true) |
summary | string | One-line title — company — location summary |
source | string | seek.com.au (or seek.co.nz) |
scrapedAt | string | ISO timestamp of extraction |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
description | string | null | Full HTML job description |
descriptionText | string | null | Plain-text description |
descriptionMarkdown | string | null | Markdown description |
isExpired | boolean | Whether the listing has expired |
status | string | null | Listing lifecycle status, e.g. Active |
isLinkOut | boolean | null | Whether applying links out to an external site |
expiresAtUtc | string | null | Listing expiry timestamp (UTC) |
With fetchCompanyProfile: true
| Field | Type | Description |
|---|---|---|
companyProfile | object | null | { name, isClaimed, website, industry, size, rating, reviewCount, recommendedPct, workLifeBalance, careerOpportunity, executiveMgmt, diversity } |
Example record
{"id": "79834521","url": "https://www.seek.com.au/job/79834521","title": "Registered Nurse","company": "St Vincent's Health","location": "Sydney NSW","locations": ["Sydney NSW"],"salaryLabel": "$80,000 – $95,000 per year","salaryMin": 80000,"salaryMax": 95000,"salaryPeriod": "YEAR","currency": "AUD","workType": "Full time","workArrangement": "On-site","classifications": ["Nursing - General Medical & Surgical (Healthcare & Medical)"],"classificationStructured": [{ "id": "1211", "label": "Healthcare & Medical", "subId": "6342", "subLabel": "Nursing - General Medical & Surgical" }],"teaser": "Join our surgical ward team in a permanent full-time role.","bulletPoints": ["Permanent full-time", "Salary packaging available", "Career development"],"isFeatured": false,"advertiser": { "id": "60069543", "name": "St Vincent's Health", "isVerified": true, "registrationDate": "2014-03-01T00:00:00Z" },"employer": { "id": "3037601", "name": "St Vincent's Health", "companyId": "3037601", "companyUrl": "https://www.seek.com.au/companies/..." },"roleId": "Registered-Nurse","tags": ["Early applicant"],"jobScore": 3,"jobScoreReasons": ["salary_disclosed", "full_description", "recent_7d"],"latitude": -33.8688,"longitude": 151.2093,"publishDateISO": "2026-07-05","status": "Active","isLinkOut": false,"expiresAtUtc": "2026-08-04T13:59:59Z","isRepost": false,"source": "seek.com.au"}
Examples
Search by keyword and location
{"searchQuery": "data engineer","location": "Melbourne VIC","maxItems": 50}
Filter by salary range and work type
{"searchQuery": "product manager","location": "Sydney NSW","workType": "Full time","salaryMin": 120000,"salaryMax": 200000,"salaryType": "annual","maxItems": 100}
Get full descriptions for specific listings
{"startUrls": [{ "url": "https://www.seek.com.au/job/79834521" },{ "url": "https://www.seek.com.au/job/79801234" }],"fetchDetails": true}
Daily incremental feed (new listings only)
{"searchQuery": "nurse","location": "All Australia","daysOld": 1,"sortMode": "ListedDate","skipReposts": true,"maxItems": 10000}
💰 Pricing
$0.65 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.07 |
| 1,000 | ~$0.65 |
| 10,000 | ~$6.50 |
| 100,000 | ~$65.00 |
Volume discounts apply automatically on higher-tier Apify plans.
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Use the Max results cap in the input to control your spend exactly.
Performance
| Mode | Results/min |
|---|---|
Search only (fetchDetails: false) | ~5,000 |
With full descriptions (fetchDetails: true) | ~1,300 |
Known limitations
- Salary availability — only ~30% of SEEK listings publicly display salary figures, so
salaryLabel,salaryMin,salaryMaxandsalaryPeriodarenullfor most results. ThesalaryMin/salaryMaxfilter still works on the employer's entered range even when the figure is hidden. - Push notifications: get new results delivered to Telegram, Discord, Slack, WhatsApp or any webhook the moment a scheduled run finds them
- Contact details — SEEK does not expose recruiter names, emails or phone numbers, and this scraper never collects personal contact data.
- Applicant counts — SEEK does not expose applicant numbers through its public API, so applicant-count data is not available.
- Apply URL — SEEK does not expose a separate application URL; the listing URL is the entry point for applying. The
isLinkOutflag indicates when applying redirects to an external site. - Company profile data —
fetchCompanyProfilefields are only available for employers with a claimed SEEK company page.
Technical details
- Source: seek.com.au and seek.co.nz — Australia & New Zealand job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
- Formats: results export to JSON, CSV and Excel from the dataset
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl