Seek & Jobstreet Jobs Scraper (AU, NZ, MY, SG, ID, PH) avatar

Seek & Jobstreet Jobs Scraper (AU, NZ, MY, SG, ID, PH)

Pricing

$0.40 / 1,000 job listings

Go to Apify Store
Seek & Jobstreet Jobs Scraper (AU, NZ, MY, SG, ID, PH)

Seek & Jobstreet Jobs Scraper (AU, NZ, MY, SG, ID, PH)

Scrape Seek and Jobstreet job ads from the public JSON API: title, company, salary, location, category, work type, description, company profile. No proxy needed. $0.40 per 1,000 jobs.

Pricing

$0.40 / 1,000 job listings

Rating

0.0

(0)

Developer

Prague Data Lab

Prague Data Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Seek & Jobstreet Jobs Scraper — Australia, New Zealand, Malaysia, Singapore and more

Scrape Seek and Jobstreet job ads (Australia, New Zealand, Malaysia, Singapore, Indonesia, Philippines, plus JobsDB Hong Kong and Thailand) and get one clean row per ad: title, company, salary parsed into min, max, currency and period, location, category, work type, work arrangement, full description (text, HTML and Markdown), expiry date and the company profile. $0.40 per 1,000 jobs. No browser, no login, no proxy needed.

Quick start

Minimal input:

{
"query": "data engineer",
"country": "AU",
"location": "All Sydney NSW",
"maxResults": 30
}

Several searches in one run (every query × country × place; jobs found twice are saved once, and maxResults is shared between the searches):

{
"queries": ["data engineer", "data analyst"],
"countries": ["AU", "NZ", "MY"],
"sortMode": "date",
"postedWithinDays": "7",
"workArrangement": "3",
"maxResults": 300
}

Or paste a search URL (or a job URL) from the browser: {"startUrls": ["https://www.seek.com.au/software-engineer-jobs/in-All-Sydney-NSW/full-time/hybrid?daterange=7"], "maxResults": 100}.

Compatible with the input of blackfalcondata/seek-scraper, blackfalcondata/jobstreet-scraper and websift/seek-job-scraper, so you can switch by changing only the Actor ID:

  • From the blackfalcondata Actors: query, country (AU, NZ, MY, SG, ID, PH), location, startUrls, maxResults, maxPages, sortMode, dateRange, workType, workArrangement, classification, subClassification, salaryMin, salaryMax, includeKeywords, excludeKeywords, the keywordMatch… switches, fromDate, toDate, maxAgeMinutes, includeDetails, descriptionFormat, descriptionMaxLength, compact, excludeEmptyFields.
  • From websift: searchTerm, searchUrl, maxResults, sortBy (KeywordRelevance, ListedDate), dateRange (a number of days), country (australia, new zealand, malaysia, singapore, indonesia, philippines, hongkong, thailand), location, radius, salaryType, salaryMin, salaryMax, workTypes (fulltime, parttime, contract, casual), workArrangements (on-site, hybrid, remote), suburbOrCity, state, postCode, includeOneInTitle and the true/false category switches (accounting, accounts-payable, construction-management…: all 423 are mapped to SEEK categories).
  • Their output field names are kept too (seekJobId, jobId, id, title, company, advertiser, location, locationCountry, salaryText, salaryMin, salaryMax, salaryCurrency, salaryType, employmentType, workTypes, workArrangement, category, subCategory, bulletPoints, teaser, description, descriptionHtml, descriptionMarkdown, postedDate, listedAt, validThrough, expiresAtUtc, canonicalUrl, jobLink, isFeatured…).
  • Not supported, ignored with a warning: notifications (Telegram, Slack, Discord, WhatsApp, webhooks), incremental mode, custom filters, applicant counts, salary estimation. Use Apify schedules and integrations instead. requireContact, requireEmail and requirePhone are ignored on purpose: this Actor never extracts e-mail addresses or phone numbers.

Two small differences: the Apify platform checks input types, and the two leaders disagree on dateRange (text for blackfalcondata, a number for websift), so this field is not declared in the form and accepts both. The form has postedWithinDays instead. The websift content object is not reproduced: use descriptionHtml or description.

Sample output row

Real row from a run on 23 October 2026 (long texts shortened here):

{
"seekJobId": "95377914",
"jobId": "95377914",
"id": "95377914",
"title": "Technical Lead, Data Engineering (Azure)",
"company": "Indigenous Business Australia",
"companyId": "795433",
"companySlug": "indigenous-business-australia-795433",
"companyUrl": "https://au.seek.com/companies/indigenous-business-australia-795433",
"companyLogo": "https://image-service-cdn.seek.com.au/562e590ca9f235a8b04ec2da94f446cc2954db47/f3c5292cec0e05e4272d9bf9146f390d366481d0",
"companyIndustry": "Non-Profit Organisations",
"companySize": "101-1,000 employees",
"companyWebsite": "http://www.iba.gov.au/",
"companyDescription": "IBA is a commercially focused organisation. Economic independence for Aboriginal and Torres Strait Islander peoples is at the heart of what we do. Our programs …",
"companyReviewRating": 3.1,
"companyReviewCount": 13,
"advertiserId": "24876952",
"advertiser": {
"id": "24876952",
"name": "Indigenous Business Australia",
"isVerified": true,
"isPrivate": false,
"registrationDate": "2009-06-03T04:19:56.000Z"
},
"isVerifiedAdvertiser": true,
"isPrivateAdvertiser": false,
"location": "Sydney NSW",
"locations": [
"Sydney NSW"
],
"locationCountry": "AU",
"salaryText": "$163682 - $191782 p.a.",
"salaryMin": 163682,
"salaryMax": 191782,
"salaryCurrency": "AUD",
"salaryType": "annual",
"employmentType": "Full time",
"workTypes": [
"Full time"
],
"workArrangement": "Hybrid",
"category": "Government & Defence",
"categoryId": "1210",
"subCategory": "Government - Federal",
"subCategoryId": "1409",
"classifications": [
{
"categoryId": "1210",
"category": "Government & Defence",
"subCategoryId": "1409",
"subCategory": "Government - Federal"
}
],
"roleId": "Data-Engineering-Lead",
"bulletPoints": [],
"teaser": "Work with an organisation that drives financial inclusion and economic empowerment with Aboriginal and Torres Strait Islander people.",
"description": "As the Technical Lead, Data Engineering, you will:\n\n- Be responsible for designing scalable, efficient and reliable data pipelines and systems.\n- Work alongside the architecture function to make decisions about choiceof …",
"descriptionHtml": "<p>As the Technical Lead, Data Engineering, you will:<br> </p><ul><li>Be responsible for designing scalable, efficient and reliable data pipelines and systems.</li><li>Work alongside the architecture function to make dec…",
"descriptionMarkdown": "As the Technical Lead, Data Engineering, you will:\n\n- Be responsible for designing scalable, efficient and reliable data pipelines and systems.\n- Work alongside the architecture function to make decisions about choiceof …",
"descriptionLength": 1501,
"postedDate": "2026-10-20T06:00:23.933Z",
"listedAt": "2026-10-20T06:00:23.933Z",
"validThrough": "2026-11-19T06:00:22.000Z",
"expiresAtUtc": "2026-11-19T06:00:22.000Z",
"isFeatured": false,
"isExpired": false,
"listingStatus": "Active",
"canonicalUrl": "https://www.seek.com.au/job/95377914",
"jobLink": "https://www.seek.com.au/job/95377914",
"site": "seek.com.au",
"detailFetched": true,
"scrapedAt": "2026-10-23T11:17:27.545Z"
}

Input

FieldTypeDescription
querystringJob title, skill or any words from the ad. Several searches: ["data engineer", "data analyst"] (a JSON list) or use queries. Empty = all jobs. searchTerm is accepted too.
countrystringWhich SEEK site to search. The lower-case names are the values used by websift/seek-job-scraper. Several countries: use countries.
locationstringCity, region, suburb or postcode as SEEK writes it. Examples: All Sydney NSW, Melbourne VIC, Auckland, Kuala Lumpur, Singapore. Empty = the whole country. Several places: a JSON list or use locations.
maxResultsintegerMaximum number of jobs saved in total (you pay per job). 0 = as many as possible (capped at 5,000). SEEK serves at most 550 jobs per search; use several queries, locations or categories for more. maxItems is accepted too.
queriesarraySeveral search terms, one search each. Jobs found twice are saved once.
countriesarraySearch several SEEK sites in one run. Added to country.
locationsarraySeveral places, one search each (for every query and country).
startUrlsarraySEEK, Jobstreet or JobsDB search URLs copied from the browser (https://www.seek.com.au/software-jobs/in-All-Sydney-NSW/full-time?daterange=7) or job URLs (https://nz.seek.com/job/12345678). When set, query, country and location are ignored. searchUrl is accepted too.
maxPagesintegerSafety bound per search, in pages of about 22 jobs (25 pages = the 550 jobs SEEK serves).
sortModestringMost relevant first, or newest first. sortBy (KeywordRelevance, ListedDate) is accepted too.
postedWithinDaysstringOnly jobs posted in the last N days. The leaders' dateRange is accepted too, as text ("7") or as a number (7, any number of days up to 365); it is not declared in this form because the two leaders disagree on its type.
workTypestringEmployment type. workTypes (a list of fulltime, parttime, contract, casual) is accepted too.
workArrangementstringOn-site, hybrid or remote. workArrangements (a list of on-site, hybrid, remote) is accepted too.
classificationstringSEEK role family. The true/false category switches of websift/seek-job-scraper (accounting, accounts-payable…) are accepted too.
subClassificationstringSEEK sub-category id (6286 = Database Development & Administration), name or slug (developers-programmers). Pair it with its category.
salaryMinintegerSEEK's own salary filter, in the local currency. Annual on Seek, monthly on Jobstreet and JobsDB (salaryType: annual, monthly or hourly). 0 = no limit.
salaryMaxintegerUpper end of the salary filter. 0 = no limit.
includeKeywordsarrayKeep a job only if it contains at least one of these words anywhere in the ad.
excludeKeywordsarrayDrop a job if its title, company, teaser, bullet points or description contains any of these words.
fromDatestringISO date or date-time, for example 2026-10-01. Empty = no limit.
toDatestringISO date or date-time. A bare date means that whole day. Empty = no limit.
maxAgeMinutesintegerOnly jobs posted within this many minutes before the run. 0 = no limit.
includeDetailsbooleanRead each ad for the full description (text, HTML, Markdown), expiry date and advertiser. Same price either way.
includeCompanyProfilebooleanAdd industry, size, website, description and review rating when the advertiser has a company profile. Needs full details.
descriptionFormatstringall keeps description (text), descriptionHtml and descriptionMarkdown; the others keep only that one.
descriptionMaxLengthintegerCut descriptions to this many characters. 0 = keep everything.
compactbooleanKeep only the core fields: id, title, company, location, salary, category, work type, date, link. Good for AI agents.
excludeEmptyFieldsbooleanRemove null, empty text and empty list fields from each row.
proxyConfigurationobjectNot needed: SEEK answers from Apify's datacenter servers. Set a proxy only if your runs get blocked.

Also accepted, without a field in the form: searchTerm, searchUrl, sortBy, dateRange, workTypes, workArrangements, salaryType (annual, monthly or hourly), radius (km), maxItems, includeOneInTitle, keywordMatchTitle, keywordMatchCompany, keywordMatchDescription, keywordMatchCategory, keywordMatchBulletPoints and the websift category switches.

Output fields

FieldDescription
seekJobIdSEEK job id (deduplication key). Also in jobId and id.
jobIdSame as seekJobId (field name of blackfalcondata/seek-scraper).
idSame as seekJobId (field name of websift/seek-job-scraper).
titleJob title.
companyCompany or advertiser name; "Private Advertiser" when the ad hides it.
companyIdSEEK company profile id (null when the advertiser has no company profile).
companySlugCompany profile slug, e.g. harvey-norman-432314.
companyUrlCompany profile page on SEEK, Jobstreet or JobsDB.
companyLogoLogo URL of the advertiser.
companyIndustryIndustry from the company profile.
companySizeCompany size band from the profile, e.g. 1,001-5,000 employees.
companyWebsiteCompany website from the profile.
companyDescriptionCompany overview text from the profile.
companyReviewRatingAverage employee review rating (1-5) shown on the company profile.
companyReviewCountNumber of employee reviews behind the rating.
advertiserIdSEEK advertiser id (a recruitment agency or the employer itself).
advertiserAdvertiser of the ad (field shape of websift/seek-job-scraper).
isVerifiedAdvertiserSEEK verified advertiser (needs job details).
isPrivateAdvertiserThe advertiser name is hidden ("Private Advertiser").
locationMain location label as SEEK shows it, e.g. Sydney NSW, Kuala Lumpur.
locationsAll locations of the ad.
locationCountryCountry code of the location (AU, NZ, MY, SG, ID, PH, HK, TH).
salaryTextSalary text exactly as the ad shows it (null when none).
salaryMinLower end of the salary parsed from salaryText (a single figure sets min and max).
salaryMaxUpper end of the salary parsed from salaryText.
salaryCurrencyCurrency code (AUD, NZD, MYR, SGD, IDR, PHP, HKD, THB…) of the parsed salary.
salaryTypePay period of the parsed salary: annual, monthly, weekly, daily or hourly (null when the ad does not say).
employmentTypeWork type label: Full time, Part time, Contract/Temp, Casual/Vacation.
workTypesWork type labels (list form of employmentType).
workArrangementOn-site, Hybrid or Remote (comma separated when the ad allows several).
categoryRole family (classification), e.g. Information & Communication Technology.
categoryIdSEEK classification id of the role family.
subCategorySub-category, e.g. Database Development & Administration.
subCategoryIdSEEK sub-classification id.
classificationsEvery category/sub-category pair of the ad.
roleIdSEEK role slug, e.g. data-engineer.
bulletPointsThe three highlight lines the advertiser wrote for the search result.
teaserOne-sentence summary shown in search results.
descriptionFull job description as plain text (needs job details; descriptionFormat all or text).
descriptionHtmlFull job description as HTML (needs job details; descriptionFormat all or html).
descriptionMarkdownFull job description as Markdown (needs job details; descriptionFormat all or markdown).
descriptionLengthLength of the plain-text description in characters, before any descriptionMaxLength cut.
postedDateWhen the ad was listed, ISO 8601 UTC. Also in listedAt.
listedAtSame as postedDate (field name of websift/seek-job-scraper).
validThroughWhen the ad expires, ISO 8601 UTC (needs job details). Also in expiresAtUtc.
expiresAtUtcSame as validThrough (field name of websift/seek-job-scraper).
isFeaturedPromoted (featured) ad.
isExpiredThe ad has expired (needs job details).
listingStatusAd status, e.g. Active (needs job details).
canonicalUrlLink to the ad on SEEK, Jobstreet or JobsDB. Also in jobLink.
jobLinkSame as canonicalUrl (field name of websift/seek-job-scraper).
siteSite the ad comes from: seek.com.au, nz.seek.com, my.jobstreet.com, sg.jobstreet.com, id.jobstreet.com, ph.jobstreet.com, hk.jobsdb.com, th.jobsdb.com.
detailFetchedTrue when the job details (description, expiry, advertiser) were read.
scrapedAtWhen the row was produced, ISO 8601 UTC.

Fields that come from the job details (description, expiry, advertiser) or from the company profile are null when the details are off or when SEEK has no profile for the advertiser (recruitment agencies and private advertisers usually have none).

Countries

CountryCodeSiteBrand
AustraliaAUseek.com.auSeek
New ZealandNZnz.seek.com (seek.co.nz redirects there)Seek
MalaysiaMYmy.jobstreet.comJobstreet
SingaporeSGsg.jobstreet.comJobstreet
IndonesiaIDid.jobstreet.comJobstreet
PhilippinesPHph.jobstreet.comJobstreet
Hong KongHKhk.jobsdb.comJobsDB
ThailandTHth.jobsdb.comJobsDB

Pricing

$0.0004 per job saved ($0.40 per 1,000), charged as the job event. Job details and the company profile are included. There is no platform-usage charge on top, no start fee and no charge for runs that find nothing. Set a maximum cost on the run and it stops cleanly when the limit is reached.

Limits and notes

  • 550 jobs per search. SEEK serves at most 550 results for one search, whatever the total shown. For more, add queries, places, categories or a date filter: searches are cheap and jobs found twice are saved once.
  • Places are written as SEEK writes them: All Sydney NSW, Melbourne VIC, Auckland, Kuala Lumpur, Singapore, a suburb or a postcode. An unknown place finds nothing, and the run says so in its status message.
  • Salary is parsed from the text of the ad ($140,000 – $150,000 per year, RM 4,000 – RM 6,000 per month, Rp 13.200.000 – Rp 14.500.000 per month, $900-1000 per day). salaryText is always the original text; salaryType stays null when the ad gives no period and the site is not Seek. The salary filter is SEEK's own: annual on Seek, monthly on Jobstreet and JobsDB.
  • Company data only. The Actor never extracts recruiter names, photos, e-mail addresses or phone numbers, and never asks SEEK for them. The description is the ad text as the advertiser published it, so it can contain a contact line the advertiser wrote.
  • Polite by design. One request at a time with a short pause, job details and company profiles batched ten at a time. About 30 requests for 250 jobs.
  • Runs on a small machine (256 to 512 MB). In local tests 30 jobs took about 9 seconds, 250 jobs about 20 seconds and 549 jobs about 40 seconds. The prefill input returns 30 jobs.