Seek Jobs Scraper — Most Comprehensive (AU & NZ) avatar

Seek Jobs Scraper — Most Comprehensive (AU & NZ)

Pricing

Pay per event

Go to Apify Store
Seek Jobs Scraper — Most Comprehensive (AU & NZ)

Seek Jobs Scraper — Most Comprehensive (AU & NZ)

From $0.20 per 1,000 jobs — scrape Seek AU & NZ by keyword, location, industry, work type, salary & date posted: company, parsed salary, remote flag, optional full description + contact email. New-job monitor with Slack/email/webhook alerts. No login or API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

💼 Seek Jobs Scraper — Most Comprehensive (AU & NZ)

Scrape Seek job listings from Australia (seek.com.au) AND New Zealand (seek.co.nz) — title, company, location, parsed salary min/max, work type, remote flag, posting date, bullet points, advertiser details, and (optionally) the full job description with contact email — at a fraction of what the other Seek actors charge. Then schedule it as a saved-search monitor that pings Slack, email, or webhook the moment a new job is posted.

How it compares

This actorLeading Seek scraperOther Seek scraper
Price per 1,000 jobs$0.20 ($0.40 with full descriptions)$2.50$2.01 (incl. actor-start fee)
CountriesAU + NZ in one runAUAU
Per-job actor-start feeNoneYes (charged per run)
Parsed salary (min/max/currency/period)not advertisednot advertised
Full description + contact email/phone✅ optional (+$0.0002/job)
Remote/hybrid/on-site flagnot advertisednot advertised
New-job monitor + Slack/email/webhook alerts✅ built in
Raw API payload kept per job✅ (raw field — nothing trimmed)
Failure handlingper-page retries with fresh proxy sessions; one bad page never kills the run6% reported run-failure rate

Incumbent prices/figures as published on their Apify store pages, June 2026. Feature dashes = not listed on their store page.

No login, no API key, no browser automation — the actor reads Seek's own public JSON search API and filters server-side, so you pull only the jobs you actually want, fast.


What does Seek Jobs Scraper do?

It extracts job listings from Seek — the dominant job board for Australia & New Zealand, with 160k+ live Australian listings — and returns clean, structured rows you can export to JSON, CSV, Excel, or push to your app via API.

  • 🔎 Search the way Seek does — keywords, location ("Sydney", "All Auckland"…), classification (industry), sub-classification, work type, salary band, date posted. All server-side.
  • 🌏 Both countries — Australia, New Zealand, or both in a single run.
  • 💰 Salary, parsed — the advertised label ("$120,000 – $140,000 per year") PLUS numeric salary_min, salary_max, salary_currency (AUD/NZD), salary_period (year/hour/day/week/month).
  • 🏠 Remote flagis_remote from Seek's own On-site / Hybrid / Remote work-arrangement data.
  • 🏢 Advertiser intel — advertiser id + name, employer company-profile URL, verified-advertiser flag and registration date (with descriptions on).
  • 📝 Full descriptions (optional) — complete HTML job ad + plaintext, expiry date, and the contact email / phone when the ad includes one (recruiter lead-gen gold).
  • 🔔 Saved-search monitor — schedule it and get Slack / email / webhook alerts for newly posted jobs matching your query.
  • 📦 Nothing thrown away — every job keeps the full raw API payload under raw (branding, tracking ids, SEO hierarchy, the lot).

What data does it extract?

For every job listing:

  • 🆔 id, 🔗 job_url, 🌏 country (AU/NZ)
  • 🏷️ title, teaser, bullet_points[]
  • 🏢 company_name, advertiser_id, advertiser_name, employer_company_url, advertiser_verified, advertiser_registered
  • 📍 location, country_code, area_hierarchy[] (suburb → region)
  • 🗂️ classification + classification_id, subclassification + subclassification_id
  • 💼 work_types[], work_arrangements[] (On-site/Hybrid/Remote), is_remote
  • 💰 salary_label, salary_min, salary_max, salary_currency, salary_period
  • 📅 listing_date (ISO UTC), listing_date_display, expires_at, is_expired
  • is_featured, display_type, role_id, 🖼️ logo_url
  • 📝 description_html, description_text, abstract*
  • 📧 contact_email, 📞 contact_phone
  • 🗃️ raw (the complete untouched API payload), ✨ is_new (monitor mode), 🕒 scraped_at

* = filled by the optional fetchDescriptions enrichment.


Who is it for?

  • 🎯 Recruiters & agencies mapping open roles, clients' competitors, and which ads include direct contact emails.
  • 📊 Labour-market & salary analysts tracking demand, advertised salary bands, and remote-work share by industry or city.
  • 🤖 Job-alert builders wiring fresh postings into Slack, Discord (via webhook), or their own apps within minutes of posting.
  • 🛠️ Job aggregators & boards backfilling AU/NZ inventory with structured, deduplicated rows.
  • 💡 Sales & GTM teams using job postings as buying signals ("hiring 5 DevOps engineers" = infrastructure budget).

Two ways to use it

  1. Bulk scrape — pull every job for a keyword, city, industry, salary band, or work type into one clean dataset.
  2. Saved-search monitor (the recurring play) — set monitorMode: true, attach an Apify Schedule (e.g. hourly), and the actor emits/alerts only jobs new since the last run. Pair with dateRange: 3 and the default Newest first sort so each run stays tiny and cheap.

How to use it (step by step)

  1. Click Try for free.
  2. Enter Keywords (e.g. engineer) and/or a Location (e.g. Sydney) — or leave both empty and pick a classification to sweep a whole industry.
  3. Pick the Country: Australia, New Zealand, or both.
  4. (Optional) add filters: work type, salary range, posted-within days.
  5. (Optional) turn on Fetch full descriptions for the complete ad, expiry date, advertiser verification, and contact email/phone.
  6. Click Start, then open the Dataset tab to view/export.
  7. (Optional) set monitorMode + a Schedule + an alert channel to get pinged on new postings.

Quick start

{ "keywords": "engineer", "location": "Sydney", "maxItems": 50 }

Saved-search monitor example

{
"keywords": "data engineer",
"location": "Melbourne VIC",
"dateRange": 3,
"monitorMode": true,
"alertOnNewJob": true,
"slackWebhookUrl": "https://hooks.slack.com/services/…"
}

Recruiter lead-gen example (full ads + contact emails, both countries)

{
"keywords": "registered nurse",
"country": "both",
"fetchDescriptions": true,
"maxItems": 500
}

Input

FieldWhat it does
keywordssearch keywords, like the Seek search box (empty = all jobs)
locationfree-text "Where" — Sydney, Melbourne VIC, All Auckland… (empty = whole country)
countryAU · NZ · both
classification / subclassificationSeek industry ids, comma-separated (e.g. 1209 = Engineering, 6281 = ICT)
workType242 Full time · 243 Part time · 244 Contract/Temp · 245 Casual/Vacation (comma list)
salaryMin / salaryMax + salaryTypeadvertised salary band filter, annual or hourly
dateRangeonly jobs posted in the last N days (server-side)
sortModeListedDate (newest first, default) · KeywordRelevance
fetchDescriptionsadd full HTML/plaintext description, expiry, advertiser verification, contact email/phone
maxItemshard cap per run (0 = everything the query can reach)
monitorMode, alertOnNewJobrecurring watcher + alerts
webhookUrl, slackWebhookUrl, emailRecipientsalert channels
proxyConfiguration, requestConcurrencyproxy + parallelism (datacenter is enough)

Common classification ids: 1200 Accounting · 1203 Admin & Office Support · 1209 Engineering · 1211 Construction · 1223 Healthcare & Medical · 6281 Information & Communication Technology · 6304 Trades & Services · 6251 Education & Training · 1225 Hospitality & Tourism · 6205 Sales. (Pick a category on seek.com.au and copy the id from the URL for the rest.)


Output

Each job is one dataset record (fields listed above). Export to JSON, CSV, Excel, HTML, or RSS, or fetch via the Apify API. listing_date/expires_at are ISO UTC; salary numbers are in AUD (AU) or NZD (NZ).

Example record (truncated):

{
"id": "92643651",
"job_url": "https://www.seek.co.nz/job/92643651",
"country": "NZ",
"title": "Production Engineer",
"company_name": "PEC",
"location": "Marton, Manawatu",
"country_code": "NZ",
"classification": "Engineering",
"subclassification": "Industrial Engineering",
"work_types": ["Full time"],
"work_arrangements": ["On-site"],
"is_remote": false,
"salary_label": "$65,000 – $80,000 per year",
"salary_min": 65000,
"salary_max": 80000,
"salary_currency": "NZD",
"salary_period": "year",
"listing_date": "2026-06-10T21:37:13Z",
"listing_date_display": "2d ago",
"bullet_points": ["Great team culture", "Career progression", "Competitive salary"],
"contact_email": "careers@pec.co.nz",
"description_text": "PEC is a leading New Zealand manufacturer…"
}

How much does it cost?

Pay-per-event — you pay for what you pull, no subscription, no per-run actor-start fee. Intended rates:

EventWhat it coversPrice
lot-scrapedeach job returned$0.0002 / job
lot-detail-enrichedeach full-description fetch$0.0002 / job
monitor-run-completedeach scheduled watch run$0.01 / run
new-lot-detectedeach newly posted job found$0.0005 / job
alert-deliveredeach Slack/email/webhook push$0.002 / alert

(Final per-event prices are set on the actor's pricing page.)

That's $0.20 per 1,000 jobs ($0.40/1k with full descriptions) — vs $2.50/1k and $2.01/1k for the other Seek scrapers on the store. An hourly monitor on a niche search costs roughly a quarter a day plus the new jobs it actually finds.

Why so much cheaper?

Seek serves its own search results from a public structured JSON API — no browser, no rendering, no proxies burned on anti-bot. 100 jobs per request means 1,000 jobs ≈ 10 requests ≈ a few seconds of compute. We pass that through.


This actor only reads publicly available job listings — the same data anyone sees without logging in. Job ads are business postings, published by employers to be seen; contact emails/phones surfaced are the ones advertisers chose to print in their own ads. That said, scraping may conflict with Seek's Terms of Service (a ToS-gray area common to all job-board scrapers, including the incumbents): you are responsible for how you use the data — review Seek's current ToS before commercial use, honor takedown requests, and handle any personal contact data per applicable privacy law (Australian Privacy Act / NZ Privacy Act / GDPR where it applies).


FAQ

What is Seek? Seek is the #1 employment marketplace for Australia and New Zealand — the default place AU/NZ employers post jobs, with 160k+ live Australian listings at any time.

Do I need an account, login, or API key? No. The actor reads Seek's public job-search data directly — no account, cookies, or API key required.

Can I scrape both Australia and New Zealand? Yes — set country to AU, NZ, or both. Each job row carries its country so you can split them downstream.

Does it parse salaries into numbers? Yes — alongside the advertised salary_label, you get numeric salary_min / salary_max, the salary_currency (AUD/NZD), and the salary_period (year, hour, day, week, month). Note many ads simply don't advertise a salary; those stay null.

Can I get the full job description? Yes — turn on fetchDescriptions to add the complete HTML ad, a plaintext version, the expiry date, advertiser verification details, and any contact email/phone printed in the ad. It's one extra request per job, billed at $0.0002.

Can I filter to remote jobs? Filter the output on is_remote (from Seek's own On-site/Hybrid/Remote data). You can also put "remote" in keywords to narrow server-side first.

How do I monitor a saved search and get alerts? Turn on monitorMode, attach an Apify Schedule, and add a Slack/webhook/email channel. Each run emits and alerts only jobs new since the last run for that exact search scope — state persists in a named key-value store.

How many jobs can one query return? Seek's API serves roughly 500–550 results deep per query (the same limit applies in the browser). For bigger pulls, slice by classification, location, workType, or dateRange and run the slices — the actor logs a warning with this advice whenever it hits the wall.

How do I find classification / work-type ids? The most common ones are listed in the Input section above; for the rest, pick the filter on seek.com.au and copy the id from the URL.

How fast is it? The search API returns 100 jobs per request in ~0.5 s — 1,000 jobs typically lands in well under a minute without descriptions.

What about jobs posted today only? Set dateRange: 1 (server-side "posted in the last day") — ideal for daily digests and monitors.

How do I export the data? JSON, CSV, Excel, HTML, or RSS from the Dataset tab, or via the Apify API.

Can I integrate with Make, Zapier, n8n, or my backend? Yes — use the webhook/Slack channels for alerts, or the Apify API to pipe the dataset anywhere.


You might also like

  • 💼 Job-posting & hiring-signal scrapers (ATS boards, layoffs, licenses)
  • 🌏 Other country-specific job-board scrapers
  • 📊 Company-enrichment and lead-gen actors

Feedback

Found a missing field or want a new filter? Open an issue on the actor — fast fixes and feature requests welcome.