SEEK Jobs Scraper AU & NZ โ€” Filters, No Login avatar

SEEK Jobs Scraper AU & NZ โ€” Filters, No Login

Pricing

from $0.98 / 1,000 saved jobs

Go to Apify Store
SEEK Jobs Scraper AU & NZ โ€” Filters, No Login

SEEK Jobs Scraper AU & NZ โ€” Filters, No Login

Collect public SEEK jobs in Australia and New Zealand for hiring research. Filter by location, work type, salary and date. Get full job text and new jobs only. No login.

Pricing

from $0.98 / 1,000 saved jobs

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Features

Limited permissions

Share

Collect public SEEK jobs in Australia and New Zealand for hiring research, salary checks and job alerts. Search by keyword and location, then export job cards, full job text or new jobs only, with no login.

Good for recruiters, analysts and job sites. The smallest useful run is one keyword and one city with maxItems set to 20: it takes about 5 seconds and costs $0.043 on the Apify Free plan.

SEEK Jobs Scraper: public job listings become useful hiring data, with no login, stable job IDs and JSON or CSV export

Table of contents

What it does

The Actor searches public jobs on SEEK Australia and SEEK New Zealand and saves one row per job. A row has the job ID, title, employer, location, category, work type, salary text, salary numbers when SEEK writes them, listing date and job link. You can also add the full job text and the listing end date.

Good fit

  • You need a list of jobs for a role and a place, as a table or JSON.
  • You check salaries for a role in one city or across many cities.
  • You run the same search every day and want only the jobs you have not seen.
  • You feed a job board, a CRM or an AI agent with public job data.

๐Ÿ‘‰ Try it now: open the input form

How it works

  1. You enter keywords, a location and the filters you need.
  2. The Actor reads SEEK search results page by page and adds the job text if you asked for it.
  3. It saves the jobs to a dataset that you can open as a table or download.

๐Ÿ‘‰ Try it now: open the input form

Quick start

Input form: Search keywords, Location and Maximum jobs fields with numbered boxes

  1. Open the Input tab and enter a role in Search keywords, for example data analyst (box 1 in the picture).

  2. Enter a city in Location, for example Sydney (box 2 in the picture).

  3. Check Maximum jobs. Keep 20 for a first run (box 3 in the picture).

  4. Click Start (the button is outside the picture).

  5. Open the Output tab when the run ends. You see a table with one row per job (box 5 in the second picture).

    Output table: job ID, title, employer and location columns in a numbered box, from a real run for data analyst jobs in Sydney

Expected result: 20 public SEEK jobs in the dataset after about 5 seconds, with status SUCCEEDED.

๐Ÿ‘‰ Try it now: open the input form

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Find open roles for a recruiting listkeywords, where, classificationOne job rowtitle, companyName, location, urlCSV to a CRM
Check pay for a rolekeywords, moreLocations, salaryRangeOne job rowsalary, salaryMin, salaryMax, salaryPeriodGoogle Sheets or BI tool
Get a daily alert of new jobskeywords, where, onlyNew, sortByNew job rows onlyjobId, title, listedAt, urlSchedule and Slack or Notion summary
Study job text and skillskeywords, includeDescriptionOne job row with textdescription, expiresAt, subClassificationAI agent or text analysis

๐Ÿ‘‰ Try it now: open the input form

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
keywordsSearch keywordsstringNodata analyst (prefill too)TextMain search textnurseUse a role name
whereLocationstringNoSydney (prefill too)TextMain search placeMelbourneUse a city or state
moreKeywordsMore keywords (optional)array of stringsNoEmptyUp to 10Adds searches["BI analyst"]Add close role names
moreLocationsMore locations (optional)array of stringsNoEmptyUp to 10Adds searches["Perth"]Keep 20 searches or fewer in all
radiusKmDistance from locationstringNoanyany, 5, 10, 25, 50, 100Limits distance from the location25Use with a city
countryCountrystringNoAUAU, NZSelects the SEEK siteNZMatch it to your locations
classificationClassification IDstringNoEmptySEEK category numberLimits to one category6281 (IT), 1211 (healthcare)Copy the number from a SEEK search link
workTypeWork typestringNoanyany, Full time, Part time, Contract/Temp, Casual/VacationLimits work typeFull timeUse for a clear job type
workArrangementWork arrangementstringNoanyany, On-site, Hybrid, RemoteLimits to one arrangementRemoteSome jobs do not show this
salaryRangeAnnual salary rangestringNoEmptymin-max in dollars a year, up to 1000000Limits salary60000-150000Use whole numbers
dateRangePosted in the last daysintegerNo00 to 31; 0 means any dateKeeps recent jobs only7Use with onlyNew for alerts
maxItemsMaximum jobsintegerNo20 (prefill too)1 to 400Stops the run at this number100Start small
sortBySort bystringNorelevancerelevance, dateSets the result orderdateUse date with onlyNew
onlyNewOnly new jobsbooleanNofalsetrue, falseSaves jobs not seen in earlier runstrueUse for repeat runs
includeDescriptionAdd full job descriptionbooleanNofalsetrue, falseAdds description and expiresAt; costs more; takes longertrueTurn on only if you need the text
deliveryConnectorSend results to (optional)stringNoEmptyYour Slack or Notion connectorSends a summary after the runPick from the listSee Send results to Slack or Notion
deliveryTargetNotion page or channel (optional)stringNoEmptyNotion page link or Slack channel IDWhere the summary goesC0123456789Needed with deliveryConnector

Empty input: a run with {} uses the defaults, so it searches for data analyst in Sydney and saves up to 20 jobs. An empty keywords value or an unknown field stops the run with reason INVALID_INPUT. It saves no rows and costs only the start fee.

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
Several searcheskeywords + moreKeywordswhere + moreLocationsEvery keyword runs with every location, one after another. Each job is saved once.2 keywords ร— 3 locations = 6 searchesThe first searches can use all of maxItems
Repeat alertsonlyNewsortByOnly jobs not seen before are saved. date shows the latest jobs first.onlyNew: true, sortBy: dateAn unchanged run saves 0 rows and costs only the start fee
Same alert, other limitonlyNewmaxItems, sortBy, includeDescriptionThese three fields do not start a new history. Other search fields do.Change maxItems from 20 to 50Earlier jobs stay marked as seen
Recent jobsdateRangeAny searchSEEK has fixed date windows, so the Actor asks for the next wider window, then removes older jobs.dateRange: 5Removed jobs are not charged, but they use up scan limits
Country and placecountrywhereThe place must be in the selected country. A search that finds only other countries goes on to the next search.country: NZ, where: Sydney0 rows, reason LOCATION_OUTSIDE_COUNTRY, start fee only
Job text and timeincludeDescriptionRun timeoutThe Actor stops before the timeout and keeps what it has saved.400 jobs take about 4 minutesWith a short timeout you get partial results and reason TIME_LIMIT
DeliverydeliveryConnectordeliveryTargetBoth are needed. A delivery error never fails the run.Notion page linkNo extra charge

Input examples

{
"keywords": "data analyst",
"where": "Sydney",
"maxItems": 20
}

Expected behavior: one search for data analyst jobs in Sydney.

Expected output: 20 job rows without job text.

Limit or cost note: $0.043 on the Free plan.

New Zealand jobs with text

{
"keywords": "software engineer",
"where": "Auckland",
"country": "NZ",
"includeDescription": true,
"maxItems": 20
}

Expected behavior: one search on SEEK New Zealand, then one job text for each row.

Expected output: 20 job rows with description and expiresAt filled when SEEK answers.

Limit or cost note: $0.061 on the Free plan.

Daily alert for many cities

{
"keywords": "registered nurse",
"where": "Melbourne",
"moreLocations": ["Brisbane", "Perth"],
"classification": "1211",
"workType": "Full time",
"salaryRange": "60000-150000",
"dateRange": 7,
"sortBy": "date",
"onlyNew": true,
"maxItems": 100
}

Expected behavior: three searches, one after another. The first run saves up to 100 jobs and remembers them.

Expected output: later runs save only jobs not seen before.

Limit or cost note: first run up to $0.155 on the Free plan. An unchanged run costs $0.015.

๐Ÿ‘‰ Try it now: open the input form

Output

Output fields

FieldMeaningTypeCan be empty?Example / enumSource / notes
jobIdSEEK job IDstringNo95654610Stable ID
titleJob titlestringNoData AnalystJob card
advertiserWho placed the jobstringYesHill's Pet NutritionMay differ from the employer
locationCity or areastringYesSydney NSWJob card
areaWider areastringYesNew South Wales NSWJob card
classificationCategorystringYesInformation & Communication TechnologyFirst category
workTypeWork typestringYesContract/TempJob card
salarySalary textstringYes$100,000 - $150,000Null when not shown
listedAtListing time, UTCstringYes2026-11-03T02:46:25.000ZJob card
urlJob linkstringNohttps://au.seek.com/job/95654610Built from the job ID
teaserShort textstringYesData Analyst (12-month Contract)โ€ฆContact details removed
bulletPointsShort bullet listarrayNo[]Empty array if none
fetchedAtWhen the row was read, UTCstringNo2026-11-06T00:48:57.387ZSet by the Actor
countrySEEK sitestringNoAU, NZFrom input
sourceData sourcestringNoSEEKFixed
licenceReuse licencenullAlwaysnullSEEK gives no reuse licence with the job
companyNameEmployer namestringYesHills Pet NutritionWhen SEEK shows it
subClassificationSub-categorystringYesDatabase Development & AdministrationFirst sub-category
workArrangementWork arrangementstringYesOn-site, Hybrid, RemoteWhen SEEK shows it
logoUrlLogo linkstringYeshttps://bx-branding-gateway.cloud.seek.com.au/โ€ฆWhen SEEK shows it
salaryMinLowest paynumberYes100000Only when written in salary
salaryMaxHighest paynumberYes150000Only when written in salary
salaryCurrencyPay currencystringYesAUD, NZDWhen salary shows a dollar amount
salaryPeriodPay periodstringYeshour, day, week, month, yearWhen written in salary
searchKeywordsSearch that found the jobstringNodata analystFrom input
searchLocationLocation that found the jobstringYesSydneyFrom input
descriptionFull job textstringYesTextOnly with includeDescription. Contact details removed. Up to 20,000 characters
expiresAtListing end time, UTCstringYesISO timeOnly with includeDescription

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset, API, Output tabOne row per jobOpen the table or download it
Domain-emptyEmpty dataset. RUN_SUMMARY with status: not_foundStatus SUCCEEDED, 0 rowsUse wider keywords or filters
PartialSaved rows stay. RUN_SUMMARY shows the reason and hasMoreStatus SUCCEEDED with a warning in the status lineRead the reason, then raise the limit or narrow the search
Technical failureSaved rows stay. RUN_SUMMARY shows status and reasonStatus FAILEDSee Troubleshooting

RUN_SUMMARY is a record in the run's key-value store. It has the counts of saved, scanned, filtered and skipped jobs, the reason the run stopped, and the warnings.

Output example

Input: the Small search example. This is one full row from a real run. null means that SEEK did not show the value, or that includeDescription was off.

{
"jobId": "95654610",
"title": "Data Analyst",
"advertiser": "Hill's Pet Nutrition",
"location": "Sydney NSW",
"area": "New South Wales NSW",
"classification": "Information & Communication Technology",
"workType": "Contract/Temp",
"salary": null,
"listedAt": "2026-11-03T02:46:25.000Z",
"url": "https://au.seek.com/job/95654610",
"teaser": "Data Analyst (12-month Contract) owning BI reporting ecosystem across Tableau and Domo.",
"bulletPoints": [],
"fetchedAt": "2026-11-06T00:48:57.387Z",
"country": "AU",
"source": "SEEK",
"licence": null,
"companyName": "Hills Pet Nutrition",
"subClassification": "Database Development & Administration",
"workArrangement": "Hybrid",
"logoUrl": "https://bx-branding-gateway.cloud.seek.com.au/64af5417-599b-4a63-9b91-6c36d26ded21.1/jdpLogo",
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"searchKeywords": "data analyst",
"searchLocation": "Sydney",
"description": null,
"expiresAt": null
}

Send results to Slack or Notion

Pick your connector in the optional deliveryConnector field. After the run saves its data, the Actor posts a short summary (up to 25 rows and a link to the full dataset) there. Put a Notion page link or a Slack channel ID in deliveryTarget: in Notion every run is added on top of that one page, so your workspace does not fill up with new pages. A delivery error never fails the run and costs nothing extra. Connect a service once in Apify Console โ†’ MCP connectors.

Use case โ†’ fields

Use caseFields to use
Recruiting listtitle, companyName, advertiser, location, url
Pay checksalary, salaryMin, salaryMax, salaryCurrency, salaryPeriod
New job alertjobId, title, listedAt, url
Job text analysisdescription, classification, subClassification, expiresAt

๐Ÿ‘‰ Try it now: open the input form

Pricing

Pricing unit

The Actor uses pay per event. You do not pay platform usage: the developer pays it.

  • Run start: $0.015 for each run at the default memory. The start fee scales with run memory (per GB).
  • Each saved job: from $0.00098 to $0.0014, based on your Apify plan.
  • Each job text: from $0.00063 to $0.0009, only when includeDescription is on and SEEK returns the text.
Apify planEach saved jobEach job text
Free$0.0014$0.0009
Bronze$0.00126$0.00081
Silver$0.00112$0.00072
Gold, Platinum, Diamond$0.00098$0.00063

A valid search with no results, a filter with no matches and an unchanged onlyNew run all save 0 rows and cost only the start fee. Jobs removed by a filter or already seen are not charged. A partial or failed run costs the start fee plus the rows and job texts it saved. The Actor stops when your run charge limit is reached, keeps the saved rows and reports reason CHARGE_LIMIT.

Cost examples

ScenarioInput scopeExpected item/event countBase chargeOptional chargeStop/cap behavior
One jobmaxItems: 11 start, 1 job$0.0164NoneStops at 1 job
Small searchmaxItems: 201 start, 20 jobs$0.043NoneStops at 20 jobs
Normal searchmaxItems: 1001 start, 100 jobs$0.155NoneStops at 100 jobs
Normal search with textmaxItems: 100, includeDescription: true1 start, 100 jobs, 100 texts$0.155$0.09Stops at 100 jobs
Largest searchmaxItems: 4001 start, 400 jobs$0.575NoneStops at 400 jobs
Largest search with textmaxItems: 400, includeDescription: true1 start, 400 jobs, 400 texts$0.575$0.36Stops at 400 jobs or at the time limit
No match or unchanged alertAny1 start, 0 jobs$0.015NoneEnds with 0 rows

All amounts are for the Free plan and the default memory of 256 MB. On Gold and higher, 100 jobs cost $0.113, or $0.176 with job text.

๐Ÿ‘‰ Try it now: open the input form

Limits

  • One run saves up to 400 jobs and reads up to 25 pages per search and 60 pages in all.
  • SEEK shows only part of a very large result list. If you need more, split the search by location or category.
  • One run can do up to 20 searches.
  • Without job text a run stops with reason DEADLINE after 180 seconds and keeps the saved rows. With job text it can run until 15 seconds before the run timeout, up to 1 hour.
  • If SEEK does not answer job text requests 3 times in a row, the Actor stops asking and saves the remaining rows without text. These rows have no job text charge.
  • onlyNew remembers up to 20,000 job IDs for each search setup. Run these searches one after another, not at the same time.
  • Above 20,000 IDs the run fails with reason STATE_LIMIT. Rows and history saved before that point are kept. Use a narrower search setup.
  • If Apify blocks the job history store, the run still saves jobs and warns "New job history is not available". That run does not remember what it found.
  • Each SEEK request waits up to 12 seconds and is tried at most twice.
  • A job with changed text is not treated as new. The Actor does not report closed jobs and does not create schedules for you.
  • The Actor reads only public jobs. It does not log in, apply to jobs or read employer accounts or applicant data. It removes emails and phone numbers from job text.
  • Public access does not grant a reuse licence. Check the SEEK terms before you reuse the data. This Actor is an independent tool and is not endorsed by SEEK.

๐Ÿ‘‰ Try it now: open the input form

API, export and integrations

  • API: start a run with the Apify API and read the dataset items.
  • Export: download the dataset as JSON, CSV, Excel, XML or RSS.
  • Scheduling: create an Apify schedule for daily onlyNew runs.
  • Webhooks: add an Apify webhook to act when a run ends.
  • SDK and MCP: use the Apify client for JavaScript or Python, or the MCP server below.

Use with AI agents (MCP)

Add this Actor as a tool through https://mcp.apify.com?tools=cliqtomedia/seek-jobs-scraper.

Smallest input:

{
"keywords": "data analyst",
"where": "Sydney",
"maxItems": 20
}

Main output fields: jobId, title, companyName, location, url.

Measured on a real run: 20 jobs in about 5 seconds, $0.043 on the Free plan.

Limits: 400 jobs and 20 searches per run. Only public SEEK jobs in Australia and New Zealand. Turn on includeDescription for job text; it costs more and takes longer.

๐Ÿ‘‰ Try it now: open the input form

Troubleshooting

The run has 0 rows

Symptom: status SUCCEEDED, empty dataset, status: not_found in RUN_SUMMARY.

Likely reason: the search or filters match no jobs, or onlyNew found nothing new.

Check: run the same search on SEEK, and look at filtered and duplicates in RUN_SUMMARY.

Action: use wider keywords, remove a filter or raise dateRange.

Reason is LOCATION_OUTSIDE_COUNTRY

Symptom: 0 rows and reason LOCATION_OUTSIDE_COUNTRY.

Likely reason: the location is in the other country, for example Sydney with country: NZ.

Check: compare where and country.

Action: change country or the location.

The run has fewer jobs than expected

Symptom: fewer rows than maxItems, with hasMore: true and a reason such as SCAN_LIMIT, TIME_LIMIT or CHARGE_LIMIT.

Likely reason: the run reached a limit from the Limits section, or your charge limit.

Check: read the status line and RUN_SUMMARY.

Action: raise the run timeout or charge limit, or split the search.

Some rows have no job text

Symptom: description is null with includeDescription: true, and descriptionsMissing is above 0.

Likely reason: SEEK did not answer for these jobs, or the job closed.

Check: read the warnings in RUN_SUMMARY.

Action: run again later. Rows without text have no job text charge.

The run failed with a reason that starts with SOURCE

Symptom: status FAILED and a reason such as SOURCE_SCHEMA, SOURCE_HOST_CHANGED or SOURCE_TRUNCATED. Rows saved before the error stay in the dataset.

Likely reason: SEEK changed, moved or blocked its public pages.

Check: open SEEK in a browser and run the example from Quick start.

Action: if the example also fails, write in the Issues tab.

The summary did not reach Slack or Notion

Symptom: the run succeeded, but there is no summary, and delivery in RUN_SUMMARY shows an error.

Likely reason: the connector is not connected, or deliveryTarget is wrong.

Check: open Apify Console โ†’ MCP connectors.

Action: connect the service again, then check the page link or the channel ID.

๐Ÿ‘‰ Try it now: open the input form

FAQ

Do I need a SEEK account?

No. The Actor reads only public jobs and needs no login.

Does it work for New Zealand?

Yes. Set country to NZ.

Why is the salary empty?

Many employers do not show pay on SEEK. Then salary and the salary number fields are null.

Why do advertiser and companyName differ?

advertiser is who placed the job, for example a recruiting agency. companyName is the employer name when SEEK shows it.

How do I get only new jobs?

Set onlyNew to true and keep the same search fields in each run. The first run saves all jobs it finds and remembers them.

Do I pay for jobs that a filter removes?

No. You pay only for jobs saved in the dataset.

๐Ÿ‘‰ Try it now: open the input form

๐Ÿ‘‰ Try it now: open the input form

Support

Use the Issues tab of this Actor. Include the run ID, the input mode and the error text if it is not sensitive. Never send tokens, cookies, passwords or private data.

๐Ÿ‘‰ Try it now: open the input form