Seek Jobs Scraper — Australia & NZ Job Listings, Salary
Pricing
from $0.87 / 1,000 job results
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
Maintained by CommunityActor stats
0
Bookmarked
819
Total users
208
Monthly active users
4 days ago
Last modified
Categories
Features
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.
| Field | Type | What it contains | When null or empty |
|---|---|---|---|
job_id | string | Seek job ID | null if omitted by source |
title | string | Job title | null if omitted |
company | string | Employer name | null if omitted |
location | string | Seek location label | null if omitted |
area | string | Broader location area | null if omitted |
country_code | string | Country code | null if omitted |
remote_type | string | remote, hybrid, or onsite | null when arrangements and location text indicate none |
seniority | string | intern, entry, mid, senior, lead, staff, principal, manager, director, vp, or executive | null only for a blank title; otherwise mid if unmatched |
salary | string | Salary label | null without a salary label |
work_type | string | Work type | null if omitted |
listing_date | ISO 8601 string | Date posted | null when missing |
url | string | Always https://au.seek.com/job/<job_id>, including NZ-Main results | null without a job ID |
teaser | string | Short listing teaser | null if omitted |
classification | string | Industry classification | null if omitted |
subclassification | string | Classification sub-category | null if omitted |
is_featured | boolean | Featured-listing flag | Always set; false when absent |
bullet_points | array of strings | Listing selling points | [] when none |
description_html | string | Full HTML description | null unless includeDescriptions is true and the detail page was parsed |
description_text | string | Plain-text description | null unless includeDescriptions is true and the detail page was parsed |
global_id | string | Cross-Actor ID, such as seek:<job_id> | null if omitted |
parse_confidence | number | Normalization quality score | Always set, rounded to 4 decimals |
warnings | array of strings | Data-quality warning codes | [] |
scraped_at | ISO 8601 string | Run timestamp | Always 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
| Event | Free plan price | Charged when |
|---|---|---|
job-result | $0.0009 per event | Each job row pushed to the dataset |
job-description | $0.0009 per event | Each returned job when includeDescriptions is true |
salary-disclosed | $0.0009 per event | Each 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
- Enter one or more non-empty search strings in
searchQueries. - Select
AU-Mainfor Seek.com.au orNZ-Mainfor Seek.co.nz. - Add a location with
where, or leave it blank to search all locations on the selected site. - Set
maxItems, choose whether to fetch descriptions, and apply optional filters. - 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
| Parameter | What it does | Default |
|---|---|---|
searchQueries | One paginated search per non-empty keyword | No default; provide one non-empty query |
siteKey | Selects the Seek site | AU-Main |
where | Location text filter, such as Sydney NSW | Blank; all locations |
maxItems | Maximum jobs across all queries; 0 means no user limit on a paid plan | 200 |
includeDescriptions | Fetches full HTML and plain-text descriptions | false |
titleKeyword | Case-insensitive title filter | Blank; no filter |
locationKeyword | Case-insensitive location filter | Blank; no filter |
remoteOnly | Keeps only remote_type = remote | false |
workType | Seek filter: Full time, Part time, Contract, or Casual | Blank; all work types |
classificationId | Seek industry classification, such as 6281 | Blank; all classifications |
proxyConfiguration | Proxy for requests; a non-empty value turns off automatic Residential fallback. An empty {} counts as not set | {"useApifyProxy": true} |
disableUsageStats | Set to true to turn off the run summary described in Usage statistics. | false |
Limits and edge cases
| Condition | What you see | What to do |
|---|---|---|
searchQueries is empty or only blank | OUTPUT 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 cap | At most 50 results, even when maxItems is higher or 0 | Use a paid Apify plan for more |
maxItems is 0 on a paid plan | No user cap; each query still stops at 50 pages, or 5,000 jobs at 100 per page | Use focused queries for more coverage |
includeDescriptions is enabled | A detail-page failure leaves both description fields null; job-description is still charged | Turn it off or handle null |
| Every query has no matches | Succeeded with an empty dataset and nothing charged; the status and log explain that Seek has no jobs and suggest checking keywords, where and siteKey | Broaden the query or check the location/site |
| A query returns no jobs | No rows are added for that query | Review returned rows or broaden the query |
| Filters remove every returned row | Status says the filter removed all jobs; the reason is not in OUTPUT | Loosen the filter or broaden the query |
| A page request fails | The 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 query | Succeeded with 0 jobs. The reason is in the status message and log only. OUTPUT holds only totalJobs, queriesRun, siteKey, scrapedAt and duplicatesSkipped | Re-run in a few minutes, or use Residential |
| Rows are saved page by page, up to 100 per page | Rows reach the dataset before that page's job-result, job-description and applicable salary-disclosed events are attempted | Review the dataset after the run |
| A run is aborted, times out or fails | Saved pages remain; the page in progress is not saved | Re-run for incomplete pages |
| A job appears in more than one query | Duplicate jobs are skipped across queries | Remove overlapping queries if duplicates are not wanted |
A job is found with NZ-Main | url remains https://au.seek.com/job/<job_id> | Use job_id |
| A source field is absent | Nullable fields can be null; core-field gaps can lower parse_confidence and add warnings | Check 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.
Is using Seek public data legal or allowed?
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.
Related actors
- Google Jobs Scraper — related job-posting data with multi-board apply links.
- Jobstreet Jobs Scraper — job-board data for Southeast Asian markets.
- Arbeitsagentur Jobs Scraper — German jobs through a jobs API.
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.