SEEK.com.au Scraper
Pricing
from $0.45 / 1,000 job scrapeds
SEEK.com.au Scraper
Scrape 150k+ SEEK.com.au Australian job listings: titles, companies, salaries, descriptions & classifications. $0.65/1,000 results. Deduplication, daysOld filtering, 5,000 results/min.
Pricing
from $0.45 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
2
Bookmarked
97
Total users
13
Monthly active users
2 days ago
Last modified
Categories
Share

Extract structured job listings from SEEK.com.au — Australia's largest job board with 150,000–200,000 active listings. 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, salary, work type, remote/hybrid arrangements, classifications and full job descriptions.
💰 Structured salary data
Raw salary label plus parsed salaryMin, salaryMax, salaryPeriod (YEAR / HOUR) and currency — ready for analysis without string parsing.
🔍 Powerful filters
Filter by keyword, location, work type, category, sub-category, salary range, and listing age. Combine filters for precise results.
⚡ Fast detail fetching
Full job descriptions fetched via 5 concurrent workers — 4× faster than sequential fetching.
🔄 Incremental feeds
Skip already-seen jobs with the built-in 90-day deduplication store. Run daily and only get new listings.
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 | (empty) | Location label as used on SEEK, e.g. 'Sydney NSW', 'Melbourne VIC', 'All Australia'. |
workType | string | "Full time" | Filter by employment type. |
classificationId | integer | (empty) | SEEK category ID, e.g. 1209 for ICT, 6317 for Sales. Leave empty for all categories. |
subClassificationId | integer | (empty) | SEEK sub-category ID for drilling down within a classification, e.g. Software Engineering within ICT. Requires classificationId to be set. |
salaryMin | integer | (empty) | Filter jobs with salary at or above this value. Units depend on listing (annual or hourly). Leave empty for no minimum. |
salaryMax | integer | (empty) | Filter jobs with salary at or below this value. Units depend on listing (annual or hourly). Leave empty for no maximum. |
daysOld | integer | 0 | Only return jobs listed within this many days. E.g. 7 = last week. Leave empty for all time. |
sortMode | string | "ListedDate" | Sort results by date listed or keyword relevance. |
fetchDetails | boolean | false | If enabled, fetches the full HTML job description from SEEK's GraphQL API. Slower but provides complete job details. Adds ~4× runtime. |
startUrls | array | (empty) | Optional list of direct SEEK job URLs (e.g. https://www.seek.com.au/job/12345678). Bypasses search — fetches details for these specific listings only. Requires fetchDetails to be set if description is needed. |
skipReposts | boolean | false | Skip jobs that were returned in a previous run (uses a 90-day deduplication store). Useful for daily incremental feeds. |
country | string | "AU" | Which SEEK site to scrape. AU = seek.com.au (default), NZ = seek.co.nz. |
includeKeywords | array | (empty) | Only keep jobs whose title, company or description contains at least one of these words (case-insensitive). |
excludeKeywords | array | (empty) | Remove jobs whose title, company or description contains any of these words (case-insensitive). |
fromDate | string | (empty) | Only keep jobs listed on or after this date. ISO format: 2026-06-01. |
toDate | string | (empty) | Only keep jobs listed on or before this date. ISO format: 2026-06-08. |
fetchCompanyProfile | boolean | false | Fetch each employer's SEEK company page for rating, review count, recommended %, industry, size and website. One extra request per unique company. |
maxItems | integer | 100 | Maximum number of job listings to return. Default 100, max 200,000. |
Output schema
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 | Location label, e.g. Sydney NSW |
workType | string | Work type, e.g. Full time or Contract/Temp |
workArrangement | string | Remote / hybrid arrangement label, e.g. Hybrid remote |
classification | string | Top-level SEEK category |
subClassification | string | SEEK sub-category |
salaryLabel | string | Raw salary string, e.g. $80,000 – $90,000 per year |
salaryMin | number | Parsed minimum salary (AUD) |
salaryMax | number | Parsed maximum salary (AUD) |
salaryPeriod | string | YEAR or HOUR |
currency | string | Always AUD |
teaser | string | 1–2 sentence job preview |
bulletPoints | array | Key bullet points (premium listings only) |
isFeatured | boolean | Whether the listing is featured/promoted |
publishDateISO | string | Listing date in Sydney timezone, YYYY-MM-DD |
source | string | Always seek.com.au |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
description | string | Full HTML job description |
contactEmail | string | Contact email address (sparse — most employers omit) |
contactPhone | string | Contact phone number (sparse) |
isExpired | boolean | Whether the listing has expired |
Example output
{"id": "79834521","url": "https://www.seek.com.au/job/79834521","title": "Senior Software Engineer","company": "Atlassian","location": "Sydney NSW","workType": "Full time","workArrangement": "Hybrid remote","classification": "Information & Communication Technology","subClassification": "Software Engineering","salaryLabel": "$140,000 – $180,000 per year","salaryMin": 140000,"salaryMax": 180000,"salaryPeriod": "YEAR","currency": "AUD","teaser": "Join our platform team building the next generation of developer tooling.","bulletPoints": ["Flexible hybrid work", "Equity and bonuses", "Global team"],"isFeatured": false,"publishDateISO": "2026-05-30","source": "seek.com.au","description": null,"contactEmail": null,"contactPhone": null,"isExpired": null}
Examples
Search by keyword and location
{"searchQuery": "data engineer","location": "Melbourne VIC","maxResults": 50}
Filter by salary range and work type
{"searchQuery": "product manager","location": "Sydney NSW","workType": "Full time","salaryMin": 120000,"salaryMax": 200000,"maxResults": 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,"maxResults": 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 ~60% of SEEK listings include salary data.
salaryMin,salaryMax, andsalaryPeriodwill benullfor listings where the employer did not disclose salary. ThesalaryMin/salaryMaxsearch filters also only apply to listings with salary data. - Contact details — most employers do not include direct contact details in listings.
contactEmailandcontactPhoneare null for the majority of results even withfetchDetails: true. - Apply URL — SEEK does not expose application URLs via their API. The listing URL itself is the entry point for applying.
bulletPoints— only sponsored/premium listings include bullet points; standard listings return an empty array.
Related scrapers
Other scrapers in our Jobs — Australia & New Zealand collection:
Frequently asked questions
Can I search SEEK without signing in?
Yes — the actor pulls public SEEK listings directly, no account needed. You pass the search terms and it returns the full set of matching jobs.
What data does it return per job?
Title, company, location, work type, salary where listed, posting date, and the apply URL. Everything comes back as a structured dataset.
Can I filter for a specific state, city, or job type?
Yes. Pass location and keyword filters in the input and the actor returns only matching listings. Run multiple searches in one go and they merge into one dataset.
How do I keep the data current?
Schedule a daily or weekly run. Each run is timestamped, so isolating new listings against your previous pull is straightforward.
Run it on a schedule
This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.
- Schedule runs — open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
- Connect it to your stack — push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
- Pull results via API — every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.
Set it once and it runs on its own.
Technical details
- 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
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