SEEK.com.au Scraper avatar

SEEK.com.au Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
SEEK.com.au Scraper

SEEK.com.au Scraper

Scrape seek.com.au for structured Australian job data: titles, companies, salaries, descriptions & classifications. 150k+ listings. Deduplication & daysOld filtering included.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

43

Total users

18

Monthly active users

14 hours ago

Last modified

Share

SEEK.com.au Scraper

Extract structured job data from SEEK.com.au — Australia's largest job board with over 150,000 active listings across every industry and state. No API key required. Returns full job descriptions, salary details, and classification metadata in one run.


Why this scraper?

📋 Complete job data in three formats

Every listing includes the full job description as HTML, plain text, and Markdown — ready for storage, NLP pipelines, or email alerts without extra parsing.

💰 Structured salary extraction

Salary strings like "$80,000 – $90,000 per year" or "$32 per hour" are automatically parsed into salaryMin, salaryMax, salaryPeriod, and currency fields alongside the raw label.

🔁 Cross-run repost detection

The scraper tracks every job ID across runs with a 90-day memory. Reposted listings are flagged with isRepost: true and linked back to the original posting date — helping you filter duplicates in downstream workflows.

🗓️ Date and age filtering

Use daysOld to restrict results to listings posted within a rolling window (e.g. last 7 days), or sort by newest first to stay on top of fresh postings.

🎯 Flexible search and filtering

Filter by keyword, location (city, state, or all of Australia), work type (full time / part time / contract / casual), and industry classification ID. Combine filters for targeted scrapes.

🔗 Direct URL support

Pass any SEEK job URL directly via startUrls to scrape specific listings without running a full search — useful for ad-hoc lookups and integration testing.


Input parameters

| Parameter | Type | Default | descriptionHtml | String | Full job description as raw HTML. null if not fetched. | | descriptionText | String | Plain-text version of the description, HTML tags removed. | | descriptionMarkdown | String | Markdown version of the job description. | |---|---|---|---| | searchQuery | String | "" | Keywords to search (e.g. "data analyst"). Empty = browse all jobs. | | location | String | "All Australia" | Location filter. Examples: "Sydney NSW", "Melbourne VIC", "Brisbane QLD". | | workType | String | "" (all) | Employment type: "Full time", "Part time", "Contract/Temp", "Casual/Vacation". | | classificationId | String | "" | SEEK industry/category ID for sector filtering. | | sortMode | String | "ListedDate" | "ListedDate" (newest first) or "KeywordRelevance". | | daysOld | Integer | — | Only return jobs posted within this many days. | | maxResults | Integer | 100 | Stop after this many results. | | fetchDetails | Boolean | true | Fetch full job description. Disable for fast summary-only runs. | | skipReposts | Boolean | false | Exclude jobs already seen in previous runs. | | startUrls | Array | [] | Specific SEEK job URLs to scrape directly. |


Output schema

Each result contains the following fields.

Always present:

FieldTypeDescription
idstringUnique job listing ID from the source platform.
urlstringDirect URL to the job listing.
titlestringJob title as published.
companystringEmployer / company name.
locationstringFull location as published (city, region, or country).
locationsarrayList of work location objects (city, postal code, etc.).
salaryLabelstringsalaryLabel field.
salaryMinnumberMinimum salary (null if not published by employer).
salaryMaxnumberMaximum salary (null if not published by employer).
salaryPeriodstringSalary period: YEAR / MONTH / WEEK / DAY / HOUR.
currencystringcurrency field.
workTypesarrayworkTypes field.
workArrangementstringworkArrangement field.
classificationsarrayclassifications field.
teaserstringteaser field.
bulletPointsarraybulletPoints field.
isFeaturedbooleanisFeatured field.
isExpiredbooleanisExpired field.
contactMatchesarraycontactMatches field.
typestringtype field.
valuestringvalue field.
publishDatestringPublication date (YYYY-MM-DD).
publishDateISOstringPublication date in ISO 8601 format.
listingDateRawstringlistingDateRaw field.
contentHashstringMD5 hash of key fields for change detection (16 chars).
summarystringHuman-readable one-line summary of the listing.
sourcestringSource domain name (e.g. 'pracuj.pl').
scrapedAtstringISO 8601 timestamp of when this item was scraped.
isRepostbooleanTrue if this listing was seen in a previous run (90-day window).
originalPublishDatestringOriginal publish date if this is a repost (null otherwise).
originalUrlstringOriginal URL if this is a repost (null otherwise).

With fetchDetails: true (default):

FieldTypeDescription
descriptionstringFull job description as raw HTML (null if fetchDetails is false).
descriptionTextstringFull job description as plain text (null if fetchDetails is false).
descriptionMarkdownstringFull job description in Markdown format (null if fetchDetails is false).

Example output record:

{
"id": "91324652",
"url": "https://www.seek.com.au/job/91324652",
"title": "Paralegal / Legal Assistant",
"company": "Dillon Legal",
"location": "Robina, Gold Coast QLD",
"locations": ["Robina, Gold Coast QLD"],
"salaryLabel": "$65,000 – $75,000 per year",
"salaryMin": 65000,
"salaryMax": 75000,
"salaryPeriod": "YEAR",
"currency": "AUD",
"workTypes": ["Full time"],
"workArrangement": "On-site",
"classifications": ["Legal Secretaries (Legal)"],
"teaser": "Dillon Legal is seeking an experienced Legal Assistant...",
"bulletPoints": [
"Permanent full-time role in Gold Coast",
"Supportive team environment",
"Competitive salary package"
],
"isFeatured": false,
"isExpired": false,
"contactMatches": [
{ "type": "Email", "value": "samantha@dillonlegal.com.au" },
{ "type": "Phone", "value": "5575 9990" }
],
"description": "<p>Dillon Legal is seeking...</p>",
"descriptionText": "Dillon Legal is seeking an experienced Legal Assistant...",
"descriptionMarkdown": "Dillon Legal is seeking an experienced Legal Assistant...",
"publishDate": "2026-04-03",
"publishDateISO": "2026-04-03",
"listingDateRaw": "2026-04-03T05:12:03.019Z",
"contentHash": "a3f1c8e2b4d09f17",
"summary": "Paralegal / Legal Assistant — Dillon Legal — Robina, Gold Coast QLD",
"source": "seek.com.au",
"scrapedAt": "2026-04-03T16:00:00.000Z",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null
}

Examples

Example 1 — Browse all recent jobs in Sydney

{
"location": "Sydney NSW",
"sortMode": "ListedDate",
"maxResults": 50,
"fetchDetails": false
}

Returns 50 most recent listings in Sydney with teaser and salary. No full description. Fast.


Example 2 — Full-time developer jobs posted in the last 7 days

{
"searchQuery": "software developer",
"location": "All Australia",
"workType": "Full time",
"daysOld": 7,
"sortMode": "ListedDate",
"maxResults": 200,
"fetchDetails": true
}

Returns up to 200 full-time developer jobs posted in the past week, with complete descriptions.


Example 3 — Nurse jobs in Queensland, skip already-seen reposts

{
"searchQuery": "nurse",
"location": "Queensland",
"daysOld": 30,
"maxResults": 500,
"fetchDetails": true,
"skipReposts": true
}

Daily or weekly run that only returns new listings — reposts from the same employer are automatically skipped.


Example 4 — Scrape specific listings by URL

{
"startUrls": [
{ "url": "https://www.seek.com.au/job/91324652" },
{ "url": "https://www.seek.com.au/job/91123354" }
],
"fetchDetails": true
}

Retrieves full detail for each provided URL regardless of search filters.


Example 5 — Legal sector jobs, all states

{
"searchQuery": "",
"location": "All Australia",
"classificationId": "1216",
"sortMode": "ListedDate",
"maxResults": 1000,
"fetchDetails": true
}

Scrapes all active legal sector jobs (classification ID 1216 = Legal) across Australia.


💰 Pricing

$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.

ResultsEstimated cost
100~$0.15
1,000~$1.50
10,000~$15.00
100,000~$150.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage. At 10,000 results/month, this scraper costs significantly less with no commitment.

Use the Max results cap in the input to control your spend exactly.


Pricing

This actor uses Pay Per Result pricing at $1.5 per 1,000 results.

VolumeCost
100 results$0.15
1,000 results$1.5
10,000 results$15.00

No subscription fees. Pay only for successfully scraped listings.


Performance

Run sizefetchDetailsEstimated time
100 resultsfalse~30 seconds
100 resultstrue~3 minutes
1,000 resultstrue~25 minutes
5,000 resultstrue~2 hours

Performance varies with SEEK load and result set size. Runs with fetchDetails: false are significantly faster and suitable for building job feeds.


Known limitations

  • description: Requires fetchDetails: true. When disabled, only the teaser (1–2 sentences) and bulletPoints are returned.
  • contactMatches: Email and phone contacts are extracted when present in the job posting. Not all employers publish contact details.
  • workArrangement: Remote / hybrid / on-site classification is provided only when the employer has specified it. Many listings omit this field (null).
  • Salary: Not published by all employers — salaryLabel and numeric fields will be null when the employer has not disclosed salary.
  • SEEK NZ / SEEK Asia: This actor targets seek.com.au (Australia) only. New Zealand and Asian markets are not covered.
  • Maximum results: SEEK's search index exposes approximately 150,000–200,000 active listings at any given time. Combined filters reduce this number significantly.

Technical details

  • Source: seek.com.au — Australia's largest job board
  • Memory: 256 MB
  • Repost storage: KeyValueStore seek-com-au-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors with exponential backoff, 3 attempts per request
  • Rate limiting: Automatic backoff on 429 / 503 responses including Retry-After header support

Additional services

Need a custom actor, additional filters, scheduled runs, or integration support? Send an email to info@unfencedgroup.nl — we build on request.


Built by unfenced-group · Issues? Open a ticket or send a message.