SEEK Jobs Scraper: AU & NZ, Salary & Full Description
Pricing
from $1.00 / 1,000 jobs
SEEK Jobs Scraper: AU & NZ, Salary & Full Description
Search SEEK Australia and New Zealand by keyword, location, work type and date. Get title, company, salary, work arrangement, listing date, bullet points and optionally the full description. Pay per job returned.
Pricing
from $1.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Nekruz Kasimov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Search seek.com.au and seek.co.nz by keyword, location and work type, and get clean job data: title, company, location, salary label, work type, remote or hybrid arrangement, classification, listing date, teaser, bullet points, URL, and optionally the full description.
Fast and cheap: it uses SEEK's own search API, no browser needed.
Use cases
- Build a niche job board or alert for Australia and New Zealand.
- Track hiring trends, salaries and demand by role or city.
- Feed recruiting tools, CRMs or AI agents with fresh listings.
- Monitor competitors' open roles.
Input
| Field | Description |
|---|---|
keywords | Search terms, e.g. python developer, registered nurse. |
location | Sydney, Melbourne VIC, Auckland, All Australia, etc. |
country | AU or NZ. Default AU. |
workTypes | Any of full-time, part-time, contract, casual. |
sortMode | ListedDate (newest first, the default) or KeywordRelevance. |
maxJobs | Stop after this many jobs. Default 100, maximum 5000. |
postedAfter | ISO date; keep only jobs listed on or after it. Good for daily incremental runs. |
includeDescription | Fetch the full description per job (one extra request each). Off by default. |
Output
{"jobId": "95172980","title": "Tech Savvy Finance and Operations Manager","company": "SuperEd Pty Ltd","location": "Sydney NSW","countryCode": "AU","salary": "$110,000 – $155,000 per year","workType": "Full time","workArrangement": "Remote","isRemote": true,"classification": "Accounting","subClassification": "Financial Managers & Controllers","listedAt": "2026-10-09T08:07:31Z","teaser": "Are you ready to be a cornerstone of a company ...","bulletPoints": ["Join Australia's leading Retirement Advice provider", "..."],"url": "https://www.seek.com.au/job/95172980","scrapedAt": "2026-10-13T00:00:00.000Z"}
With includeDescription, each job also has descriptionPlain and descriptionHtml. If the description could not be fetched, both are null and a descriptionError field says why (for example HTTP 503). Jobs also carry advertiserId and isFeatured.
The key-value store OUTPUT record has the total number of matching jobs on SEEK, pages fetched, jobs pushed and description failures. It contains:
site,keywords,location: what was searched.totalOnSite: the number of matching jobs SEEK reports. With apostedAfterin the last 30 days it is SEEK's count for that date window, not all-time.pagesFetched,jobsPushed: search pages read and jobs saved to the dataset.jobsCharged: jobs billed under pay-per-event pricing, otherwisenull.descriptionFailures: jobs saved without a description.descriptionsRecovered: descriptions that failed once and succeeded on the automatic retry.descriptionsStopped:trueif the Actor stopped requesting descriptions because SEEK kept failing (see Pricing).chargeLimitReached:trueif the run stopped at your maximum charge per run.partial,failedPage,error:partialisfalseon a complete run. If a search page after the first one failed after retries, it istrue,failedPageis that page number anderrorsays what failed and how many jobs were kept.filteredOut:{ postedAfter, duplicates }, the jobs SEEK returned that the Actor dropped.postedAftercounts jobs listed before yourpostedAfterdate (or without a listing date),duplicatescounts jobs already seen earlier in the run. Present on every run; dropped jobs are free.
Pricing
You pay per job returned. Filtered-out jobs are free. Set a maximum charge per run to cap spend; the Actor stops cleanly when it is reached (chargeLimitReached is true in OUTPUT).
With includeDescription, a job whose description could not be fetched is not charged. Failed requests are retried (rate limits and server errors get one more try after a short pause); if the description is still missing, the job is returned with descriptionError set and counted in descriptionFailures. It still counts toward maxJobs. If SEEK's job-details requests keep failing (5 descriptions in a row, then a failed retry), the Actor stops requesting descriptions for the rest of the run: the remaining jobs are returned uncharged with a descriptionError starting "not requested", and descriptionsStopped is true in OUTPUT.
Notes
- SEEK returns at most 100 jobs per page; very broad searches are capped by SEEK itself at a few thousand results.
isRemotereflects SEEK's own "Remote" work arrangement label.- If a search page after the first one fails after retries, the jobs already collected are kept and the run is marked
partialinOUTPUT. The status message then reads "Done: N jobs of T matching (incomplete, see OUTPUT)". If the first page fails, the run fails. - Input is checked before any request is made.
maxJobsmust be a whole number of at least 1,countrymust beAUorNZ(case and spaces ignored), and everyworkTypesentry must be one offull-time,part-time,contract,casual. Otherwise the run fails with an error that names the field and the value it got, instead of searching with a different setting.nullforkeywords,location,maxJobs,countryorworkTypesmeans the default. - A run that saves no jobs ends with "Done: 0 jobs.
- A
postedAfterwithin the last 30 days is also sent to SEEK as a date range, so SEEK filters server-side; the exact date check still runs on each job. - Rate limits (HTTP 429), server errors (5xx) and network errors are tried up to 3 times. The Actor waits for the
Retry-Afterthe server sends (at most 60 s), otherwise 1.5 s, then 3 s.