SEEK Job Scraper: Australia & NZ Jobs with Full Descriptions avatar

SEEK Job Scraper: Australia & NZ Jobs with Full Descriptions

Pricing

$1.50 / 1,000 jobs

Go to Apify Store
SEEK Job Scraper: Australia & NZ Jobs with Full Descriptions

SEEK Job Scraper: Australia & NZ Jobs with Full Descriptions

SEEK job scraper for Australia and New Zealand: search by keyword, location, role family, work type, remote, salary and date and get salary, company, full description and applicant count. No login. $1.50 per 1,000 jobs.

Pricing

$1.50 / 1,000 jobs

Rating

0.0

(0)

Developer

Data Gleaner

Data Gleaner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

SEEK Job Scraper: Australia and New Zealand jobs with salary and full descriptions

Scrape SEEK jobs from seek.com.au and seek.co.nz by keyword, location, role family, work type, salary and date, and get each ad with salary, company, full description and applicant count as JSON or CSV. No SEEK account, no API key, no browser.

Price: $1.50 per 1,000 jobs ($0.0015 per job, full description, applicant count and recruiter contacts included). 100 jobs cost 15 cents.

Why use this one

  • Filters run on SEEK itself. Role family (classification, subClassification), work type, remote/hybrid/on-site, salary range and date window are applied by SEEK's own search, so results match what you see on the site. You can also paste a SEEK search URL.
  • Full ad in one pass. Description (HTML and text), parsed salaryMin/salaryMax, advertiser, suburb/city/state/postcode, screening questions and applicant count, at the same price as the short version.
  • Pay only for jobs you keep. includeKeywords and excludeKeywords drop jobs before they are charged; maxJobsPerSearch caps each search.
  • Checked from Apify's own servers. The sample below comes from a run on the Apify platform, not from a home connection.
  • Honest limit: SEEK serves about 500 results per search. To go wider, use several locations or subClassification values or run daily with a "last 24 hours" filter.

Minimal input

{"keywords": ["registered nurse"], "country": "AU", "location": "All Sydney NSW", "dateRange": "7", "maxJobsPerSearch": 100}

Sample output row (real platform run, long text shortened)

{
"jobId": "95148315",
"url": "https://www.seek.com.au/job/95148315",
"title": "Registered Nurse - Dermatology & Cosmetic Clinic",
"companyName": "PT Health Care",
"advertiserId": "62860350",
"advertiserName": "PT Health Care",
"employerId": "3354031",
"location": "Bondi Junction, Sydney NSW",
"suburb": "Bondi Junction",
"city": "Sydney",
"state": "NSW",
"postcode": "2022",
"countryCode": "AU",
"classification": "Healthcare & Medical",
"classificationId": "1211",
"subClassification": "Nursing - General Medical & Surgical",
"subClassificationId": "6342",
"workType": "Full time",
"workTypes": [
"Full time"
],
"workArrangement": "onSite",
"workArrangements": [
"onSite"
],
"salaryLabel": "$85,000 – $95,000 per year + performance bonuses",
"salaryMin": 85000,
"salaryMax": 95000,
"salaryPeriod": "year",
"currency": "AUD",
"listedAt": "2026-10-08T11:02:27Z",
"expiresAt": "2026-11-07T12:59:59.999Z",
"isExpired": false,
"roleId": "Dermatology-Registered-Nurse",
"jobAdType": "SPONSORED",
"bulletPoints": [
"Be part of a company that’s transforming healthcare",
"Work with a supportive and forward-thinking team in a modern workspace",
"Make an impact on patients’ lives while advancing your career opportunities"
],
"teaser": "Join our friendly Bondi Junction team. Grow your skills in dermatology, skin cancer & cosmetic medicine with t...",
"isFeatured": true,
"isPromoted": true,
"logoUrl": "https://bx-branding-gateway.cloud.seek.com.au/8568abca-3f50-4e11-a3db-2fa4fcfd9dba.1/jdpLogo",
"advertiserVerified": true,
"applicantCount": 29,
"applicantVolumeLabel": "Medium application volume",
"applicantsWithResumePercent": 100,
"applicantsWithCoverLetterPercent": 66,
"descriptionHtml": "<h2>Are you passionate about delivering <em>exceptional patient care</em> utilising the latest medical advance...",
"descriptionText": "Are you passionate about delivering exceptional patient care utilising the latest medical advances in skin hea...",
"applicationQuestions": [
"Which of the following statements best describes your right to work in Australia?",
"How many years' experience do you have as a Dermatology Registered Nurse?",
"How much notice are you required to give your current employer?"
],
"extractedEmails": [],
"extractedPhones": [],
"extractedUrls": [],
"searchKeywords": "registered nurse",
"searchLocation": "All Sydney NSW",
"country": "AU",
"position": 1,
"scrapedAt": "2026-10-11T06:37:28+00:00",
"input": "registered nurse | All Sydney NSW | AU"
}

Fields SEEK does not publish for an ad (salary on many ads) are null.

What you get

  • Job title, company, advertiser, location split into suburb, city, state and postcode
  • Category and sub-category, work type (full time, part time, contract, casual), on-site/hybrid/remote
  • The salary text as advertised, plus salaryMin, salaryMax and salaryPeriod when the text is unambiguous
  • Listing date and expiry date, bullet points and teaser
  • Full job description as HTML and plain text, and the employer's screening questions
  • Applicant count (applicantCount, applicantVolumeLabel) and the share of applicants who attached a resume or cover letter (applicantsWithResumePercent, applicantsWithCoverLetterPercent), when SEEK shows them
  • Emails, phone numbers and links written into the ad (extractedEmails, extractedPhones, extractedUrls)
  • roleId, jobAdType and the SEEK sub-category
  • Duplicates removed across all your searches
  • About 100 jobs with full descriptions in 25 seconds at the default pacing

Use cases

  • Labour-market and salary research by role, city or industry
  • Job boards and aggregators that need fresh Australian and New Zealand listings
  • Recruiters and sales teams tracking which companies are hiring for which roles
  • Monitoring demand for skills over time (schedule the Actor daily with a "last 24 hours" filter)
  • Feeding job data to AI agents and analytics

Input

{
"keywords": ["nurse", "data analyst"],
"country": "AU",
"location": "Sydney NSW",
"workType": ["fullTime"],
"dateRange": "7",
"maxJobsPerSearch": 250,
"includeDetails": true
}
FieldMeaning
keywordsOne search per keyword. Empty with no startUrls: runs a small example, 5 "software engineer" jobs.
country, locationAU or NZ; a place written as SEEK writes it ("All Sydney NSW", "Melbourne VIC 3000", "Auckland", "Remote"). Default: whole country.
locationsSeveral places in one run: one search per keyword and location. Overrides location when set, e.g. ["Sydney NSW", "Melbourne VIC", "Brisbane QLD"].
startUrlsSEEK search URLs. Keyword, location, category, work type, remote, date range and sort are read from the URL.
workType, workArrangement, classification, subClassification, dateRange, salaryMin/salaryMax/salaryType, sortByFilters, applied by SEEK. The salary filter is SEEK's own and also keeps ads that show no salary.
maxJobsPerSearchCost cap per keyword or URL, default 100, maximum 500.
includeKeywords, excludeKeywordsCase-insensitive match on title, company, teaser and description. A job is kept when it matches any includeKeywords term and no excludeKeywords term; dropped jobs are not charged. The description is matched only when includeDetails is on.
includeDetailsFull description, expiry date, screening questions, applicant insights and extracted contacts (default on, same price off; off is faster).
descriptionFormatboth (default), text or html. text gives smaller items for AI agents.
excludeEmptyFieldsDefault off. When on, null and empty values are omitted from each item.
requestDelaySeconds, maxConcurrency, proxyConfigurationPacing and optional Apify Proxy.

Output

{
"jobId": "95047618",
"url": "https://www.seek.com.au/job/95047618",
"title": "Registered Nurse, Sleep Disorders Unit",
"companyName": "Example Hospital Group",
"advertiserId": "12345678",
"advertiserName": "Example Hospital Group",
"location": "Kogarah, Sydney NSW",
"suburb": "Kogarah",
"city": "Sydney",
"state": "NSW",
"postcode": "2217",
"countryCode": "AU",
"classification": "Healthcare & Medical",
"subClassification": "Nursing - General Medical & Surgical",
"workType": "Part time",
"workArrangement": "onSite",
"workArrangements": ["onSite"],
"salaryLabel": "$45 – $50 per hour",
"salaryMin": 45,
"salaryMax": 50,
"salaryPeriod": "hour",
"currency": "AUD",
"listedAt": "2026-10-08T23:07:29Z",
"expiresAt": "2026-11-08T12:59:59.999Z",
"bulletPoints": ["Flexible roster", "Career growth"],
"teaser": "Part-time role with career growth.",
"isFeatured": true,
"isPromoted": true,
"descriptionHtml": "<p><strong>About the role</strong></p>...",
"descriptionText": "About the role\n...",
"applicationQuestions": ["How many years' experience do you have as a nurse?"],
"applicantCount": 3,
"applicantVolumeLabel": "Low application volume",
"applicantsWithResumePercent": 90,
"applicantsWithCoverLetterPercent": 40,
"extractedEmails": ["recruiter@example.com"],
"extractedPhones": ["02 9123 4567"],
"extractedUrls": ["https://example.com/careers"],
"roleId": "registered-nurse",
"jobAdType": null,
"searchKeywords": "nurse",
"searchLocation": "Sydney NSW",
"country": "AU",
"position": 1,
"scrapedAt": "2026-10-09T05:00:00+00:00",
"input": "nurse | Sydney NSW | AU"
}

workArrangement is onSite, hybrid or remote, the same words as the input filter; workArrangements lists every arrangement the ad gives. Applicant, description and contact fields are filled only when includeDetails is on and SEEK returns the details. The example is illustrative. Fields SEEK does not publish for a job (for example salary on many ads, or the company name on private advertisers) are null. salaryMin/salaryMax are filled only when the text holds exactly one amount or range ("Competitive" or "$30/hour or $60,000/year" give null).

Pricing

Pay per result: $0.0015 per job ($1.50 per 1,000), full description included. Example: 5 keywords x 100 jobs = 500 jobs = $0.75, the same as one full 500-job search. You are charged only for jobs returned, and a run stops cleanly when your maximum charge is reached.

Limits

  • SEEK serves at most about 500 results per search (5 pages of 100). To collect more, use one run with several locations or subClassification values, or split by category, work type or date range, or run daily with "last 24 hours".
  • Jobs are deduplicated per run; ads removed from SEEK before the run are not returned.
  • A SEEK location it does not recognise returns no jobs.
  • If a description cannot be fetched, the job is still returned with descriptionHtml: null; the run log reports how many.

Use with Python

# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datagleaner/seek-jobs-scraper").call(run_input={
"keywords": ["data analyst"],
"country": "AU",
"location": "All Sydney NSW",
"maxJobsPerSearch": 10,
})
if run is None:
raise SystemExit("The Actor run did not return.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["title"], "|", item["companyName"], "|", item["salaryLabel"])

10 jobs cost 1.5 cents.

Use with JavaScript / Node.js

// npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagleaner/seek-jobs-scraper').call({
keywords: ['registered nurse'],
country: 'NZ',
location: 'Auckland',
maxJobsPerSearch: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const job of items) console.log(job.title, '|', job.companyName, '|', job.location);

Use it from n8n, Make, Zapier or an AI agent

Actor ID: datagleaner/seek-jobs-scraper

Minimal input:

{"keywords": ["data analyst"], "country": "AU", "maxJobsPerSearch": 10}

Each tool below runs this Actor with your own Apify API token.

  • n8n: add the Apify node (@apify/n8n-nodes-apify). On n8n Cloud you install it from the community node registry. Choose Run an Actor and get dataset, set Actor to datagleaner/seek-jobs-scraper and paste the input above.

  • Make: use the Apify app's Run an Actor module, then Get Dataset Items to read the results. Watch Actor Runs can trigger a scenario when a run finishes.

  • Zapier: use the Apify action Run Actor, then the search Fetch dataset items. The trigger Finished Actor run starts a Zap when a run ends.

  • AI agents (MCP): connect to https://mcp.apify.com?tools=datagleaner/seek-jobs-scraper. The Actor then shows up as the tool datagleaner--seek-jobs-scraper. In Claude Code:

    claude mcp add --transport http apify "https://mcp.apify.com?tools=datagleaner/seek-jobs-scraper"
    

    Then run /mcp to sign in to Apify in your browser. Example prompt: "Find data analyst jobs in Melbourne posted on SEEK in the last 7 days, at most 50, and give me a table of title, company, salary and suburb, plus the three most common skills in the descriptions."

  • LangChain (Python):

# pip install langchain-apify, then set APIFY_TOKEN in your environment
import json
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("datagleaner/seek-jobs-scraper")
result = tool.invoke({"run_input": json.loads('{"keywords": ["data analyst"], "country": "AU", "maxJobsPerSearch": 10}')})

FAQ

Do I need a SEEK API key or account? No. This Actor works without a SEEK account or API key: it reads the same public search data SEEK's website uses. You only need an Apify account.

How much does it cost to scrape SEEK? $1.50 per 1,000 jobs, full descriptions included. You are charged only for jobs returned, and maxJobsPerSearch caps each search.

Does it work for SEEK New Zealand? Yes. Set country to NZ to search seek.co.nz, or paste a seek.co.nz search URL in startUrls.

How do I get more than 500 jobs? SEEK serves about 500 results per search. Put several places in locations, narrow with subClassification, or split by category, work type or date range, or schedule a daily run with "last 24 hours".

Can I use a SEEK search URL? Yes. Put it in startUrls, for example https://www.seek.com.au/software-engineer-jobs/in-All-Sydney-NSW. Unrecognised parts of a URL are skipped with a warning in the log.

Can I get applicant counts? Yes, with includeDetails on: applicantCount and applicantVolumeLabel, plus the resume and cover-letter percentages, when SEEK shows them for the ad. Apply links are not included; the job url opens the ad.

Responsible use

This Actor collects publicly available job advertisements. You are responsible for using the data lawfully, including any personal data it may contain (for example recruiter names in a description) under the privacy law that applies to you, and for respecting SEEK's terms. Keep request volumes reasonable.