SEEK Job Scraper — Australia & New Zealand
Pricing
from $3.00 / 1,000 validated seek job returneds
SEEK Job Scraper — Australia & New Zealand
Search public SEEK Australia and New Zealand jobs. Returns normalized job listings with company, location, salary text, work type, descriptions, and source URLs for recruitment and market research.
Pricing
from $3.00 / 1,000 validated seek job returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
What is SEEK Job Scraper — Australia & New Zealand?
SEEK Job Scraper is an Apify Actor for recruiters, job-market analysts, and HR teams who need public SEEK Australia and New Zealand job listings as structured data. Search by keyword and location, or paste a filtered SEEK results page, and get one validated record per job with title, company, location, salary text, classification, work type, listing age, the full public description, and the job URL. It is usable through Apify MCP, so an AI agent can pull current SEEK roles and summarise them on request.
Best fit and connected workflows
This Actor fits well when you want to:
- monitor new roles for a skill or job title in one Australian or New Zealand city
- track which companies are hiring in a classification such as healthcare, IT, or construction
- compare advertised salary ranges across locations
- feed fresh SEEK listings into a CRM, spreadsheet, job board, or alerting workflow
- give an AI agent a bounded, structured view of today's SEEK market
Every record keeps the SEEK job ID and source URL, so scheduled runs can be de-duplicated and every row can be traced back to the original listing.
Practical scenario
Aroha runs a small recruitment agency in Auckland that places practice staff in medical clinics. Each morning she runs the Actor with keywords set to medical receptionist, country set to NZ, location set to Auckland, and sortBy set to date. The dataset lists every new role with the clinic name, suburb, pay text, and how long ago it was listed. She filters to roles listed in the last day, reads the descriptions for shift patterns, and contacts the clinics that match the candidates she already represents.
Input fields
| Field | Use it for |
|---|---|
keywords | Role or skill search text, such as software engineer or data analyst. |
location | A SEEK place name, such as Melbourne VIC or Auckland. |
country | AU for seek.com.au or NZ for seek.co.nz. |
searchUrls | Public SEEK results pages you already filtered on the site. |
sortBy | relevance or date for keyword searches. |
maxResults | Cap on validated job records written, from 1 to 200. |
includeDetails | Open each job page for the full description and detail fields. |
proxyCountry | Residential proxy country for the browser session: AU or NZ. |
Focused JSON input example
{"keywords": "medical receptionist","location": "Auckland","country": "NZ","sortBy": "date","maxResults": 25,"includeDetails": true,"proxyCountry": "NZ"}
Output fields
| Field | Meaning |
|---|---|
jobId | SEEK job identifier, stable across runs. |
title, company, location | Role title, advertiser, and listed location. |
salaryText | Pay text exactly as the listing shows it. |
listedAtText | Listing age as SEEK displays it, such as "2h ago". |
teaser | The short summary from the search card. |
classification, subClassification | SEEK job category and sub-category. |
workType | Full time, part time, contract, or casual when shown. |
description | The full public job description when includeDetails is on. |
jobUrl, applyUrl, sourceUrl | Links to the listing and its apply page. |
country, scrapedAt | SEEK site searched and collection time. |
Illustrative dataset record
{"jobId": "95044187","title": "Medical Receptionist","company": "Harbourview Family Clinic","location": "Auckland CBD, Auckland","salaryText": "$30 – $34 per hour","listedAtText": "2h ago","teaser": "Evening shift receptionist for a busy family practice.","classification": "Medical Administration (Healthcare & Medical)","subClassification": "Medical Administration","workType": "Part time","jobUrl": "https://www.seek.co.nz/job/95044187","sourceUrl": "https://www.seek.co.nz/job/95044187","description": "About the role: greet patients, manage appointments and phone enquiries, and process payments during evening clinic hours.","applyUrl": "https://www.seek.co.nz/job/95044187/apply","country": "NZ","scrapedAt": "2026-10-01T03:12:44Z"}
The values above are illustrative; real rows contain the public listing as published on SEEK.
How it works
The Actor builds a SEEK search from your keywords, location, country, and sort order, or opens the SEEK results pages you supply. It reads the job cards in a browser session on a residential proxy in the selected country and paginates until maxResults validated jobs are collected. With includeDetails on, it opens each job page for the full description and apply link. Each row is validated before it is written, and duplicate job IDs are skipped.
The default dataset holds the job rows. The key-value store holds OUTPUT and RUN_SUMMARY records with the run outcome, such as COMPLETE, PARTIAL, or VALID_EMPTY.
Pricing
This Actor uses Pay per event plus Apify platform usage.
apify-actor-start: charged when the run starts.job-found: charged for each validated SEEK job written to the dataset.
maxResults caps the number of job events in a run, and turning includeDetails off makes runs faster when you only need search-card fields. Check the live Pricing tab for current event prices.
Use with AI agents (MCP)
The Actor is available through Apify MCP as khadinakbar/seek-job-scraper. A typical agent request:
Find the 20 newest data analyst jobs in Sydney on SEEK, then group them by company and tell me which ones list a salary. Read the dataset for job rows and the OUTPUT record for the run outcome.
The agent can use salaryText and listedAtText for filtering, classification for grouping, and jobUrl plus scrapedAt as provenance. maxResults keeps the result size and cost bounded.
Run with the Apify API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/seek-job-scraper').call({keywords: 'data analyst',location: 'Sydney NSW',country: 'AU',sortBy: 'date',maxResults: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const job of items) {console.log(job.title, job.company, job.salaryText);}
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/seek-job-scraper").call(run_input={"searchUrls": ["https://www.seek.com.au/jobs?keywords=nurse&where=Brisbane"], "maxResults": 30})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["location"], job["jobUrl"])
Best results and outcome guidance
Start with a specific role and city and a modest maxResults. Use searchUrls when you need SEEK filters the input fields do not cover, such as salary bands or work type; set the filters on the SEEK site and paste the results URL. Match proxyCountry to the SEEK site you search. For daily monitoring, sort by date and de-duplicate on jobId. A PARTIAL outcome means the rows already written are valid and the run summary shows where collection stopped.
Continue the workflow
- Then use Indeed Job Scraper — Salaries, Remote & Full Details when you want the same roles from Indeed to compare coverage and pay across job boards.
- Then use LinkedIn Jobs Scraper — Salary, Skills, Seniority & Easy Apply when your market view should include LinkedIn postings for the same titles.
Design note
I designed the Actor to keep salaryText and listedAtText exactly as SEEK shows them instead of guessing numeric ranges or dates. SEEK advertisers write pay in many formats, and keeping the original text means nothing is lost; you can parse it the way your analysis needs.
FAQ
Does it cover New Zealand?
Yes. Set country to NZ (and proxyCountry to NZ) to search seek.co.nz.
Can I reuse filters I set on the SEEK website?
Yes. Paste the filtered SEEK results URL into searchUrls.
How do I get only new jobs?
Set sortBy to date, run on a schedule, and de-duplicate on jobId.
Where is the run outcome stored?
In the OUTPUT and RUN_SUMMARY records of the run's key-value store.
Responsible use
Use this Actor for publicly visible SEEK job listings. Respect applicable law and SEEK's site terms, keep collection to what your workflow needs, and cite the job URL and collection time when you share results.