Seek Jobs Scraper - Australia & New Zealand
Pricing
Pay per event
Seek Jobs Scraper - Australia & New Zealand
Search Seek and get every listing as structured data: title, company, location, category, work type and arrangement, posting date, and the pay text with real numbers parsed out of it only when the advertiser actually stated one. Australia and New Zealand.
Search Seek and get every listing back as a structured row: title, company, location, category, work type, work arrangement, posting date, and the pay.
Type a keyword, a location, or both. No API key, no login.
What you get per listing
The job — title, url, teaser (the summary line on the card) and
bullet_points (the selling points the advertiser chose).
Who is hiring — company, company_url where Seek has a profile, and
advertiser_id. Recruiters and direct employers both appear, and the advertiser
id is what tells you the same agency is behind fifteen of your rows.
Where — location, all_locations when a listing names several, and
region for the state or territory it sits in.
What kind of job — classification and sub_classification from Seek's own
taxonomy, work_types (full time, contract, casual) and work_arrangements
(on-site, hybrid, remote) where the advertiser stated one.
When — listing_date as a UTC timestamp and listing_age as Seek phrases
it ("1d ago").
Placement — is_sponsored and is_featured.
Pay — see below. This is the part worth reading.
About the salary, which is the field everyone gets wrong
Seek does not publish a salary number. It publishes a line of text the advertiser typed, and the advertiser can type anything. From a single page of results:
$150,000 – $160,000 per year a real range$90,000 – $95,000 + Super + Bonus a range plus extrasUp to $95,170 depending on qualifications a ceiling, not a range$120 - $140 - inc Super - Weekly Pay Options an hourly rate, paid weeklySuited to detail-oriented engineers with strong QA not a salary at allAttractive salary + bonus + benefits not a salary at allmost of them, blank
Treating that field as a number is how a "roles over $100k" filter quietly ends up including jobs whose pay is unknown and excluding jobs that pay well. So this Actor returns both:
salary_label— the text exactly as written, always, whatever it sayssalary_min,salary_max,salary_period— filled only when the text genuinely reads as moneysalary_is_stated— the flag that lets you tell "no pay stated" apart from "the label was marketing copy"
salary_max stays empty when the advertiser gave a single figure, because
repeating it as a maximum invents a range nobody offered. Up to $95,170
becomes a maximum with no minimum, because it promises no floor.
Pay periods, and one specific trap
A results page mixes annual salaries and hourly contractor rates freely, and
45 sitting next to 150000 in one column is worse than an empty column. Every
parsed amount carries salary_period, so you can compare like with like.
The trap is that a period word in the text often describes how often you are
paid, not what the rate is in. $120 - $140 - inc Super - Weekly Pay Options
is an hourly rate offering weekly payment; read literally it says someone earns
$140 a week. When the wording and the amount disagree, the amount decides, so
that listing comes back as hourly.
Roughly a third of listings state a real amount. The run summary reports
withStatedSalary and withSalaryLabelButNoAmount so you always know how much
of a run carried one rather than assuming.
Sponsored placement is marked, so position is not a ranking
Employers pay for placement on Seek, and a sponsored ad sits above organic
results. A row's position therefore reflects what Seek chose to show, not
relevance or recency. is_sponsored lets you drop the paid slots, or study them
on purpose: which agencies are paying to be seen is a useful signal in itself.
Australia and New Zealand are separate boards
seek.com.au and seek.co.nz carry different listings, and the Country
input picks between them. A search of one never returns the other's jobs, so a
national picture means two runs.
Filters and scale
Seek returns 32 listings per page. Maximum jobs rounds up to whole pages and is the ceiling on both time and cost: 96 jobs is three pages. Forty jobs across two pages took under nine seconds in testing.
The summary also reports totalMatchingOnSeek, the count Seek itself claims for
your search. When that reads 22,482 and you asked for 96, you know exactly how
much of the board you are looking at. That number is Seek's, reported as given.
What people use this for
Salary benchmarking. The subset of listings that state a real amount is a
genuine sample of advertised pay by role, location and seniority. salary_period
keeps hourly contract work from contaminating an annual average, and
salary_is_stated keeps blank labels from being counted as zero.
Recruitment intelligence. advertiser_id and company across repeated runs
show who is hiring, how fast, and which agencies dominate a category. New
listings appearing under a competitor's name is a hiring-velocity series.
Market monitoring. Run a search on a schedule and keep the rows.
listing_date and the disappearance of an id tell you how long a role stayed
open, which is a fair proxy for how hard it was to fill.
Job aggregation. One search, one table, one shape, with the pay already separated into text and numbers so you do not have to write that parser.
Notes
Only currently open listings appear. A filled or withdrawn role stops being published, which is what makes the run-on-a-schedule pattern above work.
A search that matches nothing is reported as exactly that, with the search spelled out, rather than as an empty result you would have to interpret. Occasionally a page needs a second attempt before it comes through; that is handled inside the run, and only a page that never arrives is reported.