Seek Jobs Scraper — Australia & NZ Job Listings, Salary avatar

Seek Jobs Scraper — Australia & NZ Job Listings, Salary

Pricing

from $0.87 / 1,000 job results

Go to Apify Store
Seek Jobs Scraper — Australia & NZ Job Listings, Salary

Seek Jobs Scraper — Australia & NZ Job Listings, Salary

Collect job postings from Seek.com.au and Seek.co.nz and return structured records with title, company, location, salary, work type, seniority, and listing URL. Run with searchQueries and siteKey; no buyer API key or login. Pricing: $0.0009 per job-result on Free.

Pricing

from $0.87 / 1,000 job results

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

819

Total users

208

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

Seek Jobs Scraper for Australia and New Zealand

This Actor collects Seek job postings from Seek.com.au and Seek.co.nz through the public Seek v5 search API, including title, company, location, salary, seniority, work type and listing URL. No API keys or buyer login credentials are required; Free-plan runs return at most 50 results.

  • Search Australia and New Zealand markets for recruiting and candidate sourcing.
  • Track ANZ hiring trends across queries and locations.
  • Add full HTML and plain-text descriptions when richer records are needed.
  • Apply title, location, remote, work-type and classification filters.

What you get

Nullable source fields are null when the source does not provide a value; bullet_points and warnings are [] when empty.

FieldTypeWhat it containsWhen null or empty
job_idstringSeek job IDnull if omitted by source
titlestringJob titlenull if omitted
companystringEmployer namenull if omitted
locationstringSeek location labelnull if omitted
areastringBroader location areanull if omitted
country_codestringCountry codenull if omitted
remote_typestringremote, hybrid, or onsitenull when arrangements and location text indicate none
senioritystringintern, entry, mid, senior, lead, staff, principal, manager, director, vp, or executivenull only for a blank title; otherwise mid if unmatched
salarystringSalary labelnull without a salary label
work_typestringWork typenull if omitted
listing_dateISO 8601 stringDate postednull when missing
urlstringAlways https://au.seek.com/job/<job_id>, including NZ-Main resultsnull without a job ID
teaserstringShort listing teasernull if omitted
classificationstringIndustry classificationnull if omitted
subclassificationstringClassification sub-categorynull if omitted
is_featuredbooleanFeatured-listing flagAlways set; false when absent
bullet_pointsarray of stringsListing selling points[] when none
description_htmlstringFull HTML descriptionnull unless includeDescriptions is true and the detail page was parsed
description_textstringPlain-text descriptionnull unless includeDescriptions is true and the detail page was parsed
global_idstringCross-Actor ID, such as seek:<job_id>null if omitted
parse_confidencenumberNormalization quality scoreAlways set, rounded to 4 decimals
warningsarray of stringsData-quality warning codes[]
scraped_atISO 8601 stringRun timestampAlways set

Sample output

Example record (some fields omitted).

{
"job_id": "95682778",
"title": "Digital Health Nurse (Healthdirect)",
"company": "Serco",
"location": "Brisbane QLD",
"country_code": "AU",
"remote_type": "remote",
"seniority": "mid",
"salary": null,
"work_type": "Contract/Temp",
"listing_date": "2026-11-04T03:33:43+00:00",
"url": "https://au.seek.com/job/95682778",
"classification": "Healthcare & Medical",
"is_featured": false,
"bullet_points": ["Work remotely from home with flexible hours tailored to your schedule", "Full week of paid online training and national clinical support", "Be part of Australia’s digital health future"],
"parse_confidence": 1,
"scraped_at": "2026-11-05T11:30:54.503295+00:00"
}

Pricing

EventFree plan priceCharged when
job-result$0.0009 per eventEach job row pushed to the dataset
job-description$0.0009 per eventEach returned job when includeDescriptions is true
salary-disclosed$0.0009 per eventEach returned job whose salary is not null

For each event type, 1,000 events = 1,000 × $0.0009 = $0.90 on the Free plan; 10,000 events = 10,000 × $0.0009 = $9.00 on the Free plan.

You pay only for the events listed below. This Actor does not use the Pay per event + usage option, so the platform usage of your runs (compute, proxy traffic and storage) is not billed to you separately.

Worked example: 1,000 jobs with descriptions and a salary on every job = $0.90 + $0.90 + $0.90 on the Free plan.

The Apify Free plan includes $5 of monthly platform usage credit. At the Free-plan job-result rate, that Free-plan $5 credit covers 111 full runs (5,550 results).

How to use

  1. Enter one or more non-empty search strings in searchQueries.
  2. Select AU-Main for Seek.com.au or NZ-Main for Seek.co.nz.
  3. Add a location with where, or leave it blank to search all locations on the selected site.
  4. Set maxItems, choose whether to fetch descriptions, and apply optional filters.
  5. Run the Actor, open the resulting dataset, and repeat the run through Apify Schedules; daily is a starting point for job listings.
{
"searchQueries": ["software engineer", "data analyst"],
"siteKey": "AU-Main",
"where": "Sydney NSW",
"maxItems": 50,
"includeDescriptions": false,
"remoteOnly": false
}

Export the resulting dataset as JSON or CSV, or read it through the Apify dataset API.

Input parameters

ParameterWhat it doesDefault
searchQueriesOne paginated search per non-empty keywordNo default; provide one non-empty query
siteKeySelects the Seek siteAU-Main
whereLocation text filter, such as Sydney NSWBlank; all locations
maxItemsMaximum jobs across all queries; 0 means no user limit on a paid plan200
includeDescriptionsFetches full HTML and plain-text descriptionsfalse
titleKeywordCase-insensitive title filterBlank; no filter
locationKeywordCase-insensitive location filterBlank; no filter
remoteOnlyKeeps only remote_type = remotefalse
workTypeSeek filter: Full time, Part time, Contract, or CasualBlank; all work types
classificationIdSeek industry classification, such as 6281Blank; all classifications
proxyConfigurationProxy for requests; a non-empty value turns off automatic Residential fallback. An empty {} counts as not set{"useApifyProxy": true}
disableUsageStatsSet to true to turn off the run summary described in Usage statistics.false

Limits and edge cases

ConditionWhat you seeWhat to do
searchQueries is empty or only blankOUTPUT is {"error": "no_queries", "duplicatesSkipped": 0}; the run ends Succeeded with an empty dataset, with the status message 0 jobs, nothing charged: no search query in the input. Add at least one keyword to \searchQueries`.`Add a non-empty search string
A Free-plan run reaches the output capAt most 50 results, even when maxItems is higher or 0Use a paid Apify plan for more
maxItems is 0 on a paid planNo user cap; each query still stops at 50 pages, or 5,000 jobs at 100 per pageUse focused queries for more coverage
includeDescriptions is enabledA detail-page failure leaves both description fields null; job-description is still chargedTurn it off or handle null
Every query has no matchesSucceeded with an empty dataset and nothing charged; the status and log explain that Seek has no jobs and suggest checking keywords, where and siteKeyBroaden the query or check the location/site
A query returns no jobsNo rows are added for that queryReview returned rows or broaden the query
Filters remove every returned rowStatus says the filter removed all jobs; the reason is not in OUTPUTLoosen the filter or broaden the query
A page request failsThe first failed page request of the run (403, 5xx, tunnel error, non-JSON reply or 429) switches to the Residential proxy and repeats the same page, with no wait. After that, a failed page is retried 2 more times, waiting 1.5 s then 3.0 s. If it still fails, that query stops and the next query runs. The switch happens once per run and applies to all later queries. When proxyConfiguration is present and non-empty, or the Residential fallback fails to initialize, there is no switch and the retries start at the first failure. An empty {} counts as not set.Re-run the Actor
Seek is blocked or unreachable for every querySucceeded with 0 jobs. The reason is in the status message and log only. OUTPUT holds only totalJobs, queriesRun, siteKey, scrapedAt and duplicatesSkippedRe-run in a few minutes, or use Residential
Rows are saved page by page, up to 100 per pageRows reach the dataset before that page's job-result, job-description and applicable salary-disclosed events are attemptedReview the dataset after the run
A run is aborted, times out or failsSaved pages remain; the page in progress is not savedRe-run for incomplete pages
A job appears in more than one queryDuplicate jobs are skipped across queriesRemove overlapping queries if duplicates are not wanted
A job is found with NZ-Mainurl remains https://au.seek.com/job/<job_id>Use job_id
A source field is absentNullable fields can be null; core-field gaps can lower parse_confidence and add warningsCheck warnings and handle nullable fields

FAQ

How much does it cost to scrape Seek jobs?

The Free plan charges $0.0009 per job-result event; 1,000 jobs with descriptions and a salary on every job use three Free-plan event charges of $0.90 each. See Pricing for the event conditions.

Why did my run return no jobs?

Check the search query, where, siteKey and post-fetch filters. An unreachable Seek or a filter removing every row can also produce an empty dataset; see Limits and edge cases.

What should I do if the Actor is not working?

The first failed page can switch to the Residential proxy. The page is then retried twice with 1.5 s and 3.0 s waits. Review the run log and re-run; if Seek is blocked, set proxyConfiguration to Residential.

This Actor accesses public job data through Seek's public v5 search API. Whether a use is legal or allowed depends on your use case, the source terms and applicable law; review those requirements for your intended use.

Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.

To opt out, set disableUsageStats to true in the input. Nothing is sent then.

Full list of collected fields