SEEK Jobs Scraper — Seek, JobStreet & Jobsdb (8 countries) avatar

SEEK Jobs Scraper — Seek, JobStreet & Jobsdb (8 countries)

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
SEEK Jobs Scraper — Seek, JobStreet & Jobsdb (8 countries)

SEEK Jobs Scraper — Seek, JobStreet & Jobsdb (8 countries)

Every job of a search on Seek (Australia, New Zealand), JobStreet (Indonesia, Malaysia, Philippines, Singapore) and Jobsdb (Hong Kong, Thailand), past Seek's ~500-job stop: salary as numbers, applicants, contact details removed, and a 'Seek says N, delivered N' check.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Cowboi Bebot

Cowboi Bebot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Every job of a search on Seek (Australia, New Zealand), JobStreet (Indonesia, Malaysia, Philippines, Singapore) and Jobsdb (Hong Kong, Thailand), all eight boards of the SEEK platform in one Actor. It goes past the point where Seek stops listing (about 500 jobs per search), and each search ends with a plain check: how many jobs Seek says exist, and how many you received.

Versión en español más abajo.

Quick facts

  • What it does: Every job of a search on the eight SEEK-platform boards (Seek AU/NZ, JobStreet ID/MY/PH/SG, Jobsdb HK/TH), past Seek's ~500-jobs-per-search stop, with salary as numbers and optional full ad details.
  • Use it for: job-market data for Australia, New Zealand and South-East Asia: counts, salaries, applicants, companies hiring; daily job feeds.
  • Not for: recruiters' phone numbers or contact fields (never requested; e-mails and phones are removed from the ad text); job sites outside the SEEK platform.
  • Input: searches (words as typed on Seek) and/or startUrls (Seek/JobStreet/Jobsdb search or job links); countries (AU, NZ, ID, MY, PH, SG, HK, TH; default AU). Optional filters: location, classifications, workTypes, workArrangements, postedWithinDays, salaryMin/salaryMax/salaryType, sortBy; maxJobsPerSearch (default 100, 0 = all); includeDetails (default off).
  • Output: one dataset row per job, and one SUMMARY record with "Seek says N, delivered N" per search. Every field with its type is under Output reference below.
  • Charged events (pay per event): job USD 0.001 per job delivered (USD 1.00 per 1,000); job-with-details USD 0.0015 per job delivered with details (USD 1.50 per 1,000; a job whose details Seek did not return is charged as job); plus Apify's standard start event apify-actor-start.
  • Never charged: searches as such (there is no fee per search), searches that find nothing or fail, duplicates (a job found by two searches is charged once), the SUMMARY record.
  • Limits: stops at maxJobsPerSearch or at your maximum charge per run (SUMMARY stoppedBy); Seek's own count is an estimate, so a small gap is normal; parts Seek would not list in full are named in incompleteParts.
  • Run it from: Apify Console, the Apify API or an AI agent through the Apify MCP server (Actor pampadata/seek-jobs-scraper), with schedules and integrations.

Minimal input

A small input that works, taken from this Actor's own tests; every other field is optional:

{
"searches": [
"python developer"
],
"countries": [
"AU"
],
"maxJobsPerSearch": 5
}

Past Seek's 500-job stop

Seek Australia and New Zealand stop every search at about 500 jobs, even when the page says there are thousands. When that happens, this Actor splits the search by itself (classification, then sub-classification, work type, work arrangement and state or region) and merges the parts without duplicates. Tests on 2026-10-08:

SearchSeek saysOne plain searchThis Actor
python, Australia1,5374901,531
nurse, Australia8,914about 5008,713
nurse, New Zealand1,163about 5001,139

Seek's own count is an estimate (it changes with the page size), so a small gap is normal. The JobStreet and Jobsdb sites page to the end without splitting.

  • Search words, one per line, as you would type them on Seek: data analyst, nurse. Each one runs on every country you pick.
  • Links copied from any of the eight sites: a search results page (its filters are used as they are) or a single job.
  • Filters: location (Sydney NSW, All Auckland, Kuala Lumpur), classification, work type, work arrangement (on-site, hybrid, remote), listed in the last 1–31 days, salary range (Seek's own filter), relevance or newest first.
  • Leave the words empty and pick a location or classification to get every job that matches them.

What you get for each job

  • Job ID and link, title, company, advertiser name and ID, company profile link
  • Site and country, location, classification and sub-classification (names and IDs)
  • Work type, work arrangement, salary as written, and salary as numbers: minimum, maximum, currency and period ("$150,000 – $170,000 + 12% super" gives 150,000–170,000, not 12)
  • Date listed, teaser, bullet points, logo link, featured or not

With Include job details turned on, you also get:

  • Full ad text (plain text and HTML)
  • Number of applicants and Seek's application-volume label, where Seek shows them
  • Suburb, region, state, postcode
  • Expiry date, status, whether you apply on an external site
  • Screening questions
  • Company industry, size, website, rating and review count

Example (with details, trimmed)

{
"jobId": "95150946",
"url": "https://sg.jobstreet.com/job/95150946",
"title": "Accountant",
"company": "Fast Flow Systems Pte Ltd",
"site": "SG",
"country": "Singapore",
"location": "Bukit Timah, Central Region",
"classification": "Accounting",
"subClassification": "Management Accounting & Budgeting",
"workTypes": ["Full time"],
"salaryText": "$4,500 – $5,500 per month",
"salaryMin": 4500,
"salaryMax": 5500,
"salaryCurrency": "SGD",
"salaryPeriod": "MONTH",
"listedAt": "2026-10-08T14:34:22Z",
"applicantCount": 39,
"applicationVolume": "Medium application volume",
"expiresAt": "2026-11-08T12:59:59.999Z",
"screeningQuestions": ["What's your expected monthly basic salary?", "..."],
"companyIndustry": "Electricity, Gas & Water Services",
"companySize": "51-100 employees",
"detailsError": null
}

The "Seek says N, delivered N" check

The SUMMARY record in the run's key-value store lists every search with: Seek's count, how many jobs you got, whether the search is complete, how many smaller searches it took, duplicates skipped (a job found by two of your searches is delivered and billed once), and the reason if it stopped early (your Max jobs per search, your spending limit, a part Seek would not list in full, or an error). It is saved as the run goes, so a run stopped by its timeout still says what it got.

Pricing

You pay only for jobs delivered. There is no fee per search and nothing for an empty or failed search.

  • Job: USD 1.00 per 1,000 (USD 0.001 each)
  • Job with details: USD 1.50 per 1,000 (USD 0.0015 each). If Seek returns no details for a job, it is billed as a plain job.
  • Apify also bills its standard tiny start event (USD 0.00005 per run, per GB of memory).

The Actor stops cleanly at your maximum cost per run, and the SUMMARY record says where it stopped. Max jobs per search starts at 100; set it to 0 to get all of them.

Good to know

  • Seek's keyword search is broad: for "java", many jobs returned do not contain the word. That is how the site searches; this Actor returns what Seek returns.
  • The location box works across sites ("Sydney NSW" on JobStreet Singapore returns Sydney jobs), so each row's country comes from the job itself, not from the site.
  • A few Australian jobs are placed at "All Australia" with no state; the Actor makes an extra pass to reach them, and the SUMMARY record lists any part it still could not get in full.
  • Leave the proxy setting as it is. In tests Seek never blocked Apify's datacenter IPs; if it ever does, the run moves to residential IPs by itself at no extra cost to you.

Personal data

The Actor does not collect recruiters' phone numbers or contact fields, and it removes e-mail addresses and phone numbers from the ad text ([email removed], [phone removed]). About one ad in four carries one. What remains is about jobs and companies. If you store names that appear in an ad, data-protection law may apply to you. This Actor is not affiliated with, endorsed by or sponsored by SEEK. Seek, JobStreet and Jobsdb are trademarks of SEEK Limited.

Questions or a missing feature?

Open an issue in the Issues tab. Answers come in writing.

Output reference

Dataset: one row per job

FieldTypeWhat it is
jobIdstringSeek's job ID.
urlstringLink to the job on its site.
titlestringJob title.
companystringCompany name shown on the ad.
advertiserNamestringAdvertiser (may be a recruiter).
advertiserIdstringAdvertiser ID.
companyProfileUrlstring or nullCompany profile link on the site, when there is one.
sitestringBoard the job was read from: AU, NZ, ID, MY, PH, SG, HK, TH.
countrystringCountry of the job itself (the location box works across sites).
locationstringLocation as written on the ad.
locationsarray of stringAll location labels of the ad.
classificationstringClassification name, e.g. Accounting.
classificationIdstringClassification ID.
subClassificationstringSub-classification name.
subClassificationIdstringSub-classification ID.
workTypesarray of stringWork types as Seek labels them (full time, part time, contract/temp, casual).
workArrangementstring or nullOn-site, Hybrid or Remote, when given.
salaryTextstring or nullSalary as written.
salaryMininteger or nullSalary minimum as a number ("$150,000 – $170,000 + 12% super" gives 150000).
salaryMaxinteger or nullSalary maximum as a number.
salaryCurrencystring or nullISO currency code, e.g. AUD, SGD.
salaryPeriodstring or nulle.g. YEAR, MONTH, HOUR.
listedAtstringDate listed (ISO 8601, UTC).
teaserstringShort summary of the ad.
bulletPointsarray of stringThe ad's bullet points.
logoUrlstring or nullCompany logo link.
isFeaturedbooleanFeatured (paid placement) on the list.
roleIdstringSeek's role identifier.
searchstringThe search this job came from.
descriptionHtmlstringOnly with includeDetails: full ad text as HTML (e-mails and phones removed).
descriptionTextstringOnly with includeDetails: full ad text as plain text (e-mails and phones removed).
contactDetailsRemovedintegerOnly with includeDetails: e-mail addresses and phone numbers removed from the text.
statusstringOnly with includeDetails: Seek's job status.
isExpiredbooleanOnly with includeDetails: whether the job has expired.
expiresAtstringOnly with includeDetails: expiry date (ISO 8601).
appliesOnExternalSitebooleanOnly with includeDetails: you apply on another site.
isVerifiedbooleanOnly with includeDetails: Seek's verified flag for the job.
advertiserVerifiedboolean or nullOnly with includeDetails: Seek's verified flag for the advertiser.
advertiserSincestringOnly with includeDetails: advertiser registration date.
applicantCountinteger or nullOnly with includeDetails: number of applicants, where Seek shows it.
applicantCountTextstring or nullOnly with includeDetails: Seek's applicant label.
applicationVolumestring or nullOnly with includeDetails: Seek's application-volume label.
suburbstring or nullOnly with includeDetails: suburb.
regionstring or nullOnly with includeDetails: region.
statestring or nullOnly with includeDetails: state.
postcodestring or nullOnly with includeDetails: postcode.
normalisedTitlestringOnly with includeDetails: Seek's normalised role title.
screeningQuestionsarray of stringOnly with includeDetails: the employer's screening questions.
companyIndustrystring or nullOnly with includeDetails: company industry.
companySizestring or nullOnly with includeDetails: company size.
companyWebsitestring or nullOnly with includeDetails: company website.
companyRatingnumber or nullOnly with includeDetails: company rating on Seek.
companyReviewCountinteger or nullOnly with includeDetails: number of company reviews.
companyTagsarray of stringOnly with includeDetails: Seek's company tags.
detailsErrorstring or nullOnly with includeDetails: null when the details came; the error when they did not (that row is charged as job).

SUMMARY record (run's key-value store, never charged)

FieldTypeWhat it is
searchesarray of objectOne item per search and site (fields below).
jobsDeliveredintegerJobs delivered in the run.
requestsobjectRequest counters of the run (requests, retries, refusals or blocks, failures; whether the run moved to residential IPs).
proxystringProxy mode of the run.

Each item of searches:

FieldTypeWhat it is
inputstringYour search words or link.
sitestringBoard searched.
seekSaysinteger or nullSeek's own count (an estimate).
deliveredintegerJobs delivered (and charged) for this search.
duplicatesSkippedintegerJobs already delivered by another search of the run.
completebooleantrue when the search was read in full.
stoppedBystring or nullWhy it stopped early (maxJobsPerSearch, your maximum charge, a part Seek would not list in full, an error).
slicesSearched, splitsintegerSmaller searches it took to get past the ~500 stop.
incompletePartsarray of objectParts Seek would not list in full: filters, seekSays, reached.
detailsFailedintegerWith includeDetails: jobs whose details did not come.
warningstringe.g. Seek does not recognise the location.
errorsarray of stringErrors met.

More Actors by this developer


Versión en español

Todos los avisos de una búsqueda en Seek (Australia, Nueva Zelanda), JobStreet (Indonesia, Malasia, Filipinas, Singapur) y Jobsdb (Hong Kong, Tailandia): las ocho bolsas de la plataforma SEEK en un solo programa. Pasa el corte de Seek (unos 500 avisos por búsqueda) y cada búsqueda termina con un control simple: cuántos avisos dice Seek que hay y cuántos recibiste.

De un vistazo

  • Qué hace: Todos los avisos de una búsqueda en las ocho bolsas de la plataforma SEEK (Seek AU/NZ, JobStreet ID/MY/PH/SG, Jobsdb HK/TH), más allá del corte de ~500 por búsqueda, con el sueldo como números y detalles opcionales.
  • Sirve para: datos del mercado laboral de Australia, Nueva Zelanda y el sudeste asiático: cantidades, sueldos, postulantes, empresas que contratan; feeds diarios.
  • No sirve para: teléfonos o datos de contacto de reclutadores (nunca se piden; se borran correos y teléfonos del texto); bolsas fuera de la plataforma SEEK.
  • Entrada: searches (palabras como en Seek) y/o startUrls (enlaces de búsqueda o de aviso); countries (AU por defecto). Filtros opcionales: lugar, clasificación, tipo de trabajo, modalidad, días, sueldo, orden; maxJobsPerSearch (100 por defecto, 0 = todos); includeDetails (apagado). Ejemplo mínimo en JSON: sección Minimal input de la parte en inglés.
  • Salida: una fila por aviso y un registro SUMMARY con "Seek dice N, entregados N" por búsqueda.
  • Eventos que se cobran: job USD 0,001 por aviso (USD 1,00 cada 1.000); job-with-details USD 0,0015 por aviso con detalles (USD 1,50 cada 1.000; sin detalles se cobra como job); más apify-actor-start.
  • Nunca se cobra: las búsquedas en sí (no hay cargo por búsqueda), búsquedas vacías o fallidas, repetidos, el registro SUMMARY.
  • Límites: se detiene en maxJobsPerSearch o en tu costo máximo por corrida (stoppedBy en SUMMARY).

El corte de los 500

Seek Australia y Nueva Zelanda cortan toda búsqueda cerca de 500 avisos, aunque digan que hay miles. Cuando pasa, el programa divide la búsqueda solo (clasificación, subclasificación, tipo de trabajo, modalidad y estado o región) y junta las partes sin duplicados. Pruebas del 2026-10-08: python en Australia, 1.531 de 1.537 (una búsqueda sola: 490); nurse en Australia, 8.713 de 8.914; nurse en Nueva Zelanda, 1.139 de 1.163. El número de Seek es una estimación, así que una diferencia chica es normal.

Qué podés buscar

Palabras (una por línea, se corren en cada país elegido), enlaces copiados de cualquiera de los ocho sitios (búsqueda o aviso), y filtros: lugar, clasificación, tipo de trabajo, modalidad (presencial, híbrido, remoto), publicados en los últimos 1 a 31 días, rango de sueldo y orden. Sin palabras y con un lugar o clasificación, trae todos los avisos que coinciden.

Qué recibís

Por cada aviso: ID y enlace, puesto, empresa, anunciante, país y lugar, clasificación, tipo de trabajo, modalidad, sueldo como está escrito y como números (mínimo, máximo, moneda y período), fecha y resumen. Con Include job details además: texto completo, cantidad de postulantes donde Seek la muestra, barrio, estado y código postal, vencimiento, preguntas de filtro y datos de la empresa (rubro, tamaño, sitio, calificación).

El registro SUMMARY dice, por cada búsqueda, cuántos avisos informa Seek, cuántos recibiste, si está completa y, si se cortó antes, por qué.

Precio

Pagás solo por aviso entregado; nada por búsqueda ni por búsquedas vacías o fallidas.

  • Aviso: USD 1,00 cada 1.000
  • Aviso con detalles: USD 1,50 cada 1.000 (si Seek no devuelve detalles, se cobra como aviso común)
  • Más el evento de inicio estándar de Apify (USD 0,00005 por corrida, por GB de memoria).

El programa se detiene en tu costo máximo por corrida y lo informa en SUMMARY. Max jobs per search viene en 100; poné 0 para traer todos.

Datos personales

No se piden los teléfonos ni los datos de contacto de los reclutadores, y se borran los correos y teléfonos del texto del aviso. Este programa no está afiliado a SEEK ni cuenta con su respaldo.

¿Dudas o algo que falta? Abrí un issue en la pestaña Issues; se responde por escrito.