SEEK Jobs Scraper (AU & NZ) avatar

SEEK Jobs Scraper (AU & NZ)

Pricing

from $4.00 / 1,000 results

Go to Apify Store
SEEK Jobs Scraper (AU & NZ)

SEEK Jobs Scraper (AU & NZ)

Scrape SEEK job listings across Australia and New Zealand with parsed numeric salary, structured location and incremental mode.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Axery

Axery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrapes job listings from seek.com.au and seek.co.nz over plain HTTP — no browser, no login, no cookies. It reads SEEK's own public search API, the same endpoint the website calls to paint its results page.

What makes this different

Salary you can actually use. SEEK publishes salary only as a display string like "$80,000 – $90,000 per year + super", which you cannot sort, filter or average. This Actor splits it into numeric min/max, ISO-4217 currency and a period:

"salary": {
"min": 80000, "max": 90000, "currency": "AUD",
"period": "year", "is_estimated": false,
"raw": "$80,000 – $90,000 per year + super"
}

raw is always kept, so if the parser ever misreads a format you still have the original — the data is never silently lossy.

Incremental mode. Turn on incremental and the Actor remembers which listings it has already returned. Subsequent runs return only new jobs, and you are charged only for those new rows. A daily monitor over 5,000 listings costs full price once, then a fraction of that per day.

One schema across boards. Every job Actor in this suite emits the same record shape, with a source-prefixed job_id (seek.com.au:93887114). Merge SEEK, JobStreet and RemoteOK results into one dataset and dedupe without writing a normalizer.

Honest coverage reporting. Each run writes a RUN_COVERAGE record to the key-value store saying what you asked for, what came back, and which limit applied.

Input

FieldTypeNotes
queriesarraySearch keywords. Leave empty to browse by location/classification.
siteenumwww.seek.com.au or www.seek.co.nz.
wherestringLocation as SEEK spells it, e.g. Sydney NSW. An unrecognised value returns zero results, not an error — prefer blank over a guess.
classificationstringSEEK classification id, e.g. 6281 for ICT.
workTypeenumFull time / Part time / Contract / Casual.
salaryMin, salaryMaxintegerAnnual salary band. Note SEEK excludes listings with no disclosed salary when this is set.
dateRangeenumPosted within N days.
sortModeenumNewest first or most relevant.
maxItemsintegerPer query. 0 = unlimited, still bounded by the ceiling below.
incrementalbooleanOnly return listings not seen in previous runs.
proxyConfigurationobjectResidential recommended.

Known limits

  • Pagination ceiling. SEEK stops serving results at roughly page 50 (about 1,000 listings per query), regardless of what totalCount reports. To go deeper, split the query by location, classification or salary band. The Actor stops cleanly at the ceiling and records it in RUN_COVERAGE.
  • Most listings have no salary. In a typical run only 1 in 5 to 1 in 8 rows carry a salary, because Australian advertisers frequently omit it. Empty salary.min is usually correct data, not a parse failure — check salary.raw, which is null when SEEK showed nothing.
  • No detail endpoint. SEEK exposes no public JSON for a single job, and the job page carries no embedded state, so the full description body is not available over HTTP alone. The search response already includes teaser, bulletPoints, salary, location and classification.
  • remote is strict. It is true only for genuinely location-free roles. Hybrid roles report remote: false with "Hybrid" in work_arrangements, because conflating the two makes the flag useless for filtering.

Sister Actors

ActorCovers
JobStreet Jobs ScraperIndonesia, Malaysia, Singapore, Philippines, Thailand, Hong Kong — same platform, those brands' catalogues
RemoteOK Jobs ScraperRemote-only roles, from RemoteOK's official public feed
Bayt Jobs ScraperUAE, Saudi Arabia and the wider GCC

Local development

pip install -r requirements.txt
python test_local.py "python developer" --max 20 --out sample_output.json
python test_local.py "data analyst" --site www.seek.co.nz --where "Auckland" --max 10

sample_output.json in this folder is real output from a live run, kept so the schema can be reviewed without running anything.