Seek AU/NZ $0.7๐Ÿ’ฐ Keyword & URL Job Search avatar

Seek AU/NZ $0.7๐Ÿ’ฐ Keyword & URL Job Search

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Seek AU/NZ $0.7๐Ÿ’ฐ Keyword & URL Job Search

Seek AU/NZ $0.7๐Ÿ’ฐ Keyword & URL Job Search

From $0.7/1K. Extract job listings from SEEK.com.au and SEEK.co.nz in Australia and New Zealand. Get comprehensive data, including full descriptions, companies, salaries, locations, classifications, and listing dates, for any keyword, location, or filter combination.

Pricing

from $0.70 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

130

Total users

18

Monthly active users

2 days ago

Last modified

Share

SEEK Jobs Scraper (Australia & New Zealand)

Extract job listings from SEEK.com.au and SEEK.co.nz, the largest job boards in Australia and New Zealand with hundreds of thousands of live roles. Get comprehensive data including full descriptions, companies, salaries, locations, classifications, and listing dates for any keyword, location, or filter combination.

What does SEEK Jobs Scraper do?

This Actor collects job data from SEEK in two ways:

  1. Search by filters. Enter keywords, location, classification, work type, and salary range. Select AU or NZ via the region input. The Actor returns every matching job, paginating automatically.
  2. Fetch by URL. Paste SEEK search URLs directly (e.g. /software-engineer-jobs/in-Sydney for AU or /software-engineer-jobs/in-Auckland on seek.co.nz for NZ). Region is auto-detected per URL, so you can mix AU and NZ URLs in the same run.

A single toggle switches between fast card-only output and fully-enriched records with the complete HTML job description, company overview, expiry date, and more.

The Apify form groups inputs into two modes: Option 1: Search by filters and Option 2: Paste SEEK URLs (which overrides Option 1). The relationship is visible at a glance. If you fill both, the actor logs exactly which fields were ignored.

Key Features

FeatureDescription
AU + NZ coverageregion=AU โ†’ seek.com.au, region=NZ โ†’ seek.co.nz. URL mode auto-detects per URL.
Structured filtersKeywords, location, classification (multi-select, 30 options), work type (multi-select, 4 options), work arrangement (Remote / Hybrid / On-site), salary range (annual or hourly), date range
URL modePaste SEEK search URLs; filters parsed automatically; multi-URL supported
Full URL grammarKeyword URLs (/python-jobs), classification landing pages (/jobs-in-accounting), subclassifications (/jobs-in-accounting/payroll, 394 known), work-type shortcuts (/jobs-in-accounting/full-time), classification + location (/jobs-in-accounting/in-All-Perth-WA)
Forward paginationWalks pages 1โ†’2โ†’3โ€ฆ until the cap is hit or results run out
Mid-URL resumeURLs with ?page=5 start at page 5 and continue forward
Page-fail toleranceIf one page fails after retries, the Actor logs it and skips to the next
Full job descriptionsOptional HTML body + plain text, ad bullet points, expiry, contacts
Company profilesIndustry, size, website, specialities, star rating, review count, perks and awards for the hiring company
Parsed salaryMinimum, maximum and period read out of SEEK's free-text salary label
Cross-URL dedupSame job appearing under two searches is emitted once
Total item capmaxItems bounds the run across all URLs and pages
Wall-clock capmaxTimeSec stops pagination after N seconds and flushes partial results
Free-tier friendlyKeeps running when Apify Proxy isn't available on your plan

What data can you extract?

Identity and link

  • Job ID
  • Canonical job URL
  • Apply URL
  • SEEK role ID
  • Share link
  • Job title

Company

  • Company name and ID
  • Company profile URL and open-jobs URL
  • Company overview (paragraphs)
  • Industry, company size, website
  • Specialities and head-office location
  • Star rating, review count, salary rating
  • Perks and benefits, awards
  • Logo and cover image
  • Advertiser name, ID, verification, and registration date

Location

  • Location label (e.g. Suburb, City STATE)
  • Area (e.g. CBD & Inner Suburbs)
  • SEO hierarchy (e.g. [Suburb STATE postcode, All City STATE])
  • Country code

Classification

  • Classification ID and label
  • Subclassification ID and label
  • Work types (Full time, Contract, โ€ฆ)
  • Work arrangement (Remote, Hybrid, On-site)

Compensation and dates

  • Salary label (as displayed by SEEK)
  • Parsed salary minimum and maximum
  • Salary period (annual / hourly / daily / monthly)
  • Salary currency
  • Listing date (UTC + relative display)
  • Expires at (UTC)
  • Listing status, expired flag, verified signal

Content and presentation

  • Teaser and short summary
  • Bullet points from the ad
  • Description sections
  • Full description HTML (with includeFullDescription)
  • Plain-text description (stripped HTML)
  • Contact emails and phone numbers published in the ad
  • Applies-on-employer-site flag
  • Job video URL

How to use the SEEK Jobs Scraper

Search by keywords and location (AU)

{
"region": "AU",
"keywords": "software engineer",
"location": "Sydney",
"sortmode": "ListedDate",
"includeFullDescription": true,
"maxItems": 200
}

Search in New Zealand

{
"region": "NZ",
"keywords": "software engineer",
"location": "Auckland",
"includeFullDescription": true,
"maxItems": 200
}

Mixed AU + NZ URLs in one run

{
"urls": [
{ "url": "https://www.seek.com.au/nurse-jobs/in-Sydney" },
{ "url": "https://www.seek.co.nz/software-engineer-jobs/in-Auckland" }
],
"includeFullDescription": false,
"maxItems": 500
}

Region is auto-detected from each URL's host. Output rows carry the correct countryCode and canonical url for the region.

Filter by salary, work type, and recency

{
"keywords": "data engineer",
"location": "All Melbourne VIC",
"classification": ["6281"],
"workType": ["242"],
"salaryType": "annual",
"salaryMin": 120000,
"salaryMax": 200000,
"daterange": 7,
"sortmode": "ListedDate",
"maxItems": 300
}

The Apify UI renders classification, workType and workArrangement as multi-select dropdowns with human-readable names, so you don't need to memorize the IDs. When scripting via API, pass the IDs directly (e.g. "6281" = Information & Communication Technology, "242" = Full time, "3" = Remote).

Remote-only jobs, paid by the hour

{
"keywords": "registered nurse",
"location": "All-Australia",
"workArrangement": ["3"],
"salaryType": "hourly",
"salaryMin": 40,
"salaryMax": 80,
"maxItems": 100
}

With salaryType=hourly, the salary range is read as dollars per hour. Use workArrangement "1" for on-site, "2" for hybrid, "3" for remote โ€” combine them to widen the search.

Fetch specific searches by URL

{
"urls": [
{ "url": "https://www.seek.com.au/python-jobs/in-Sydney?daterange=14" },
{ "url": "https://www.seek.com.au/golang-jobs/in-Brisbane" }
],
"includeFullDescription": true,
"maxItems": 300
}

Each URL is processed in order. The Actor parses the keyword, location, and query-string filters, then paginates forward.

Supported URL shapes

PathInterpretation
/jobsAll jobs
/jobs/in-<location>Filter by location only
/<keyword>-jobsFilter by keyword (e.g. /python-jobs, /software-engineer-jobs)
/<keyword>-jobs/in-<location>Keyword + location
/jobs-in-<classification>Classification landing page (e.g. /jobs-in-accounting โ†’ classification=1200)
/jobs-in-<classification>/in-<location>Classification + location
/jobs-in-<classification>/<subclassification>Classification + subclass (e.g. /jobs-in-accounting/payroll โ†’ 1200 + 1468)
/jobs-in-<classification>/<work-type>Classification + Full time / Part time / Contract-Temp / Casual-Vacation
/jobs-in-<classification>/<work-arrangement>Classification + On-site / Hybrid / Remote

Query-string filters are honored on top of any of the above: ?classification=6281&subclassification=6290&worktype=242&salaryrange=100000-200000&daterange=7&page=2.

Unknown classification or subclassification slugs (e.g. /jobs-in-fake-class) are rejected with a clear error that lists the valid slugs. Non-search paths like /job/<id>, /companies/<slug>, /career-advice/... are also rejected.

Resume from a specific page

{
"urls": [
{ "url": "https://www.seek.com.au/software-engineer-jobs/in-Sydney?page=5" }
],
"maxItems": 100
}

Pagination starts at page 5 and walks forward until 100 items are collected.

Card-only mode (no detail fetch)

{
"keywords": "nurse",
"location": "Brisbane",
"includeFullDescription": false,
"maxItems": 1000
}

Skips the per-job detail fetch entirely. Still returns title, company, location, classifications, work types, salary label, listing date, bullet points, and teaser.

Time-capped run

{
"keywords": "software engineer",
"location": "All-Australia",
"maxItems": 0,
"maxTimeSec": 300
}

Keeps paginating for at most 5 minutes; partial results are always flushed to the dataset.

Input Parameters

ParameterTypeDefaultDescription
regionstringAUAU (seek.com.au) or NZ (seek.co.nz). Auto-detected per URL in URL mode.
keywordsstringJob title or keywords (e.g. software engineer). Empty = match everything in the location.
locationstringAll-AustraliaSearch location (Sydney, All Melbourne VIC, All-Australia, etc.)
classificationstring[][]Top-level classifications. Multi-select dropdown (30 options) in the UI; accepts raw IDs (e.g. "6281" for ICT) via API.
workTypestring[][]Work types. Multi-select dropdown (Full time / Part time / Contract/Temp / Casual/Vacation) in the UI; accepts raw IDs ("242"โ€“"245") via API.
workArrangementstring[][]Where the job is done. Multi-select dropdown (On-site / Hybrid / Remote) in the UI; accepts raw IDs ("1"โ€“"3") via API.
salaryTypestringannualThe unit salaryMin/salaryMax are read in: annual or hourly.
salaryMinintegerMinimum salary, in the unit set by salaryType. Rounded down by SEEK.
salaryMaxintegerMaximum salary, in the unit set by salaryType. If set out of order with salaryMin, they're auto-swapped with a warning.
daterangeintegerListed within N days. Must be one of 1, 3, 7, 14, 31. Other values are cleared with a warning.
sortmodestringListedDateListedDate or KeywordRelevance
urlsobject[][]SEEK search URLs. When set, the structured filters above are ignored (a warning lists what was dropped).
includeFullDescriptionbooleantrueFetch each job's full detail on top of the search card: description, ad bullet points, contacts, and the employer's company profile (industry, size, website, rating, reviews, perks). Batched per page of results โ€” one extra request covers up to 22 jobs.
maxItemsinteger20Total cap across ALL URLs and pages. Set 0 for unlimited.
maxTimeSecinteger0Global wall-clock cap in seconds. 0 = no limit.
proxyConfigurationobjectApify datacenterProxy config; auto-falls back to a backup pool if Apify proxy isn't available

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ€” the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record โ€” not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output Example

{
"id": "<JOB_ID>",
"url": "https://www.seek.com.au/job/<JOB_ID>",
"jobLink": "https://www.seek.com.au/job/<JOB_ID>",
"applyLink": "https://www.seek.com.au/job/<JOB_ID>/apply",
"title": "<Job title>",
"teaser": "<One-line summary of the role.>",
"jobHook": "<One-line summary of the role.>",
"abstract": "<Short summary of the role, as written by the employer.>",
"content": "<p><strong>About the role</strong></p><ul><li>...</li></ul>",
"contentText": "About the role โ€ฆ",
"contentSections": ["About the role", "First requirement", "Second requirement"],
"bulletPoints": [
"<Bullet point 1>",
"<Bullet point 2>",
"<Bullet point 3>"
],
"companyName": "<Company name>",
"companyId": "<COMPANY_ID>",
"companyUrl": "https://www.seek.com.au/companies/<company-slug>-<COMPANY_ID>",
"companyNameSlug": "<company-slug>-<COMPANY_ID>",
"companyProfileId": 123456,
"companyOverview": "<Company overview paragraphs joined together โ€ฆ>",
"companyIndustry": "Healthcare Services",
"companySize": "More than 10,000 employees",
"companyWebsite": "https://www.example-employer.com.au/",
"companySpecialities": ["<Speciality 1>", "<Speciality 2>"],
"companyPrimaryLocation": "<Street, Suburb STATE postcode>",
"companyLogo": "https://image-service-cdn.seek.com.au/<asset-id>",
"companyCoverImage": "https://image-service-cdn.seek.com.au/<asset-id>",
"companyRating": 3.3,
"companyReviewCount": 81,
"companySalaryRating": 86,
"companyPerks": ["<Perk 1>", "<Perk 2>"],
"companyAwards": [{ "name": "<Award name>", "year": 2025, "imageUrl": null }],
"advertiserId": "<ADVERTISER_ID>",
"advertiserName": "<Advertiser name>",
"locationLabel": "<Suburb, City STATE>",
"locationSeoHierarchy": ["<Suburb STATE postcode>", "All <City> STATE"],
"countryCode": "AU",
"classifications": [
{
"id": "<CLASS_ID>",
"label": "<Top-level classification>",
"subId": "<SUB_ID>",
"subLabel": "<Subclassification>"
}
],
"classificationInfo": {
"classification": "<Top-level classification>",
"subClassification": "<Subclassification>"
},
"workTypes": ["Full time"],
"workTypeIds": ["242"],
"workArrangements": [],
"workArrangementLabels": ["Hybrid"],
"workArrangementDisplayText": "Hybrid",
"salaryLabel": "$120,000 - $140,000 per year + super",
"salary": "$120,000 - $140,000 per year + super",
"salaryMin": 120000,
"salaryMax": 140000,
"salaryPeriod": "annual",
"salaryCurrency": "AUD",
"phoneNumber": null,
"phoneNumbers": ["0412 345 678"],
"emails": ["recruiter@example.com"],
"contactMatches": [
{ "type": "Email", "value": "recruiter@example.com" },
{ "type": "Phone", "value": "0412 345 678" }
],
"shareLink": "https://www.seek.com.au/job/<JOB_ID>?tracking=SHR-WEB-SharedJob-anz-1",
"listingDate": "2026-04-17T01:53:13Z",
"listingDateDisplay": "2d ago",
"postedTime": "2d ago",
"expiresAt": "2026-05-14T14:00:00.000Z",
"isVerified": true,
"isExpired": false,
"status": "Active",
"isLinkOut": false,
"sourceZone": "anz-1",
"jobVideoUrl": null,
"displayTags": [],
"roleId": "<ROLE_ID>",
"tags": [{ "type": "EARLY_APPLICANT", "label": "Be an early applicant" }],
"jobLocationInfo": {
"displayLocation": "<Suburb, City STATE>",
"location": "All <City> STATE",
"area": "CBD & Inner Suburbs",
"countryCode": "AU",
"seoHierarchy": ["<Suburb STATE postcode>", "All <City> STATE"]
},
"branding": {
"serpLogoUrl": "https://bx-branding-gateway.cloud.seek.com.au/<asset-id>/jdpLogo"
},
"advertiser": {
"logo": "https://bx-branding-gateway.cloud.seek.com.au/<asset-id>/jdpLogo",
"id": "<ADVERTISER_ID>",
"name": "<Advertiser name>",
"isVerified": true,
"registrationDate": "2022-04-14T03:02:19.728Z"
},
"companyOpenJobs": "https://www.seek.com.au/<Advertiser-Name>-jobs/at-this-company",
"companyTags": [],
"advertiserRaw": { "...": "full upstream advertiser block (verbatim)" },
"employerRaw": { "...": "full upstream employer block (verbatim โ€” all logo/description fields)" },
"brandingRaw": { "...": "full upstream branding block (verbatim โ€” all logo URLs)" },
"companyProfileRaw": { "...": "full upstream companyProfile block (verbatim)" },
"phoneNumbersFromBody": ["0412 345 678", "(02) 9876 5432"],
"isFeatured": true,
"displayType": "promoted",
"adProductType": null,
"detailFetched": true,
"scrapedAt": "2026-04-20T00:40:05.202399+00:00"
}

Fields from abstract down to companyAwards, plus contactMatches, isExpired, status and isLinkOut, are populated only when Fetch full job description is on. detailFetched tells you, per record, whether that detail actually arrived.

Tips

  • Pagination is automatic. The Actor walks pages until maxItems is reached or results run out.
  • maxItems is a global cap, not per-URL. With three URLs and maxItems=50, URL 1 paginates until the budget is filled; URLs 2 and 3 run only if budget remains.
  • Set includeFullDescription=false for high-volume runs. Skipping the detail fetch trims request count and cost, at the price of the description, contacts and company profile.
  • salaryType changes what the salary range means. With salaryType=hourly, enter salaryMin=40/salaryMax=80 โ€” dollars per hour, not per year.
  • Region auto-detected in URL mode. Mixing seek.com.au and seek.co.nz URLs in the same input is supported; each URL is routed to its own market.
  • Datacenter proxy is the default. SEEK's endpoints don't rate-limit datacenter IPs under normal loads. For 10k+ job runs, switch to apifyProxyGroups: ["RESIDENTIAL"] on a paid Apify plan.
  • Skipped pages are logged, not fatal. If a single page fails after retries, the Actor moves to the next one. Three consecutive failures end the URL's run cleanly.
  • One page fetched, all 22 items kept. Partial pages (e.g. when maxTimeSec fires mid-page) are flushed to the dataset, so no work is lost.
  • Input conflicts surface as warnings, not silent drops. Out-of-order salary range โ†’ auto-swapped. Unsupported daterange value โ†’ cleared with a warning. URLs set alongside structured filters โ†’ filters ignored (listed in a warning). A fully unbounded run (both maxItems and maxTimeSec = 0) also warns.