Seek AU NZ $1๐ฐ Companies | Reviews Scraper
Pricing
from $1.00 / 1,000 results
Seek AU NZ $1๐ฐ Companies | Reviews Scraper
From $1/1K. Pull company profiles and employee reviews from SEEK Australia and New Zealand. Supports two modes: aggregated company data with top reviews, or one row per review for sentiment analysis. The region is auto-detected from each URL, with a clean, structured output ready for analytics.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
SEEK Companies & Reviews Scraper (Australia + New Zealand)
Pull company profiles and employee reviews from au.seek.com and nz.seek.com, the two largest jobseeker platforms in their respective markets. Two output modes: company aggregates with embedded top reviews, or one row per review for sentiment analysis pipelines. Region auto-detected per URL.
Why This Scraper?
- Two modes from one input: companies (one row per company, top reviews embedded) or reviews (one row per individual review).
- Rich field set per company: overall rating, 5-star distribution, six per-category sub-ratings (work-life balance, executive management, perks, diversity, career, environment), recommended %, salary perception score, total open jobs, branding (logo + cover), AI-generated review summary, perks, awards.
- Optional embedded open jobs: enable
includeJobsto pull the company's currently-listed positions (id, title, location, work type, classification, listing date) and embed them on the company record. One actor, the full hiring picture. - Full review record: title, pros, cons, long-form experience details, reviewer job title, employment status, salary perception, work location, per-category ratings, upvote count, reviewed-on date.
- Flexible review depth: up to 30 top reviews per company are returned by default; higher values pull deeper review history.
- Region auto-detect per URL: mix au.seek.com and nz.seek.com URLs in the same input; the actor routes each to the right host.
- Cheap and fast: companies-mode run completes in seconds per company, lightweight enough for the Apify Free plan.
Data You Get
Sample shape, values are illustrative placeholders, not from a live profile.
companies mode (one row per company)
| Field | Example |
|---|---|
id | "000000" |
name | "Sample Company" |
url | "https://au.seek.com/companies/sample-company-000000" |
region | "AU" |
slug | "sample-company-000000" |
isClaimed | true |
logoUrl | "https://image-service-cdn.seek.com.au/000000.../000000..." |
coverImageUrl | "https://image-service-cdn.seek.com.au/000000.../000000..." |
brandId | "00000000-0000-0000-0000-000000000000" |
industry | "Sample industry" |
totalJobs | 0 |
ratingOverall | 0.0 |
reviewCount | 0 |
recommendedPercent | 0 |
salaryRating | 0 |
ratingBreakdown | { "companyRating1StarCount": 0, ..., "companyRating5StarCount": 0, "companyRating1StarPercentage": 0.0, ... } |
categoryRatings | [ { "rating": 0, "count": 0, "description": "Work/Life balance" }, ... ] |
aiSummary | { "headline": "Sample headline", "summary": "Generated summary text appears here.", "pros": "...", "cons": "...", "themes": [...] } |
perks | [ "Sample perk one", "Sample perk two" ] |
awards | [ { "name": "Sample Award", "year": "2024" } ] |
customStatement | { "title": "Sample title", "description": "..." } |
topReviews | [ <up to maxReviewsPerCompany review objects> ] |
topReviewCount | 5 |
jobs | [ <up to maxJobsPerCompany job objects, only when includeJobs=true> ] |
jobsEmbeddedCount | 10 |
scrapedAt | "2026-01-01T00:00:00.000Z" |
When includeJobs=true, each entry in jobs[] carries:
| Field | Example |
|---|---|
id | "00000001" |
url | "https://www.seek.com.au/job/00000001" |
title | "Sample Job Title" |
teaser | "Short ad teaser appears here" |
salaryLabel | "$80k - $100k" (often empty when the advertiser hides salary) |
workTypes | [ "Full time" ] |
location | "Sample Suburb, City State" |
locationCountryCode | "AU" |
classifications | [ { "label": "Sample Industry", "subLabel": "Sample Sub-industry" } ] |
bulletPoints | [ "Sample bullet 1", "Sample bullet 2" ] |
listingDate | "2026-01-01T00:00:00Z" |
listingDateDisplay | "1d ago" |
advertiserName | "Sample Advertiser" |
employerCompanyId | "000000" (matches the company's id field) |
logoUrl | "https://bx-branding-gateway.cloud.seek.com.au/000000/jdpLogo" |
reviews mode (one row per review)
| Field | Example |
|---|---|
reviewId | "000000000000000" |
companyId | "000000" |
companyName | "Sample Company" |
companySlug | "sample-company-000000" |
region | "AU" |
url | "https://au.seek.com/companies/sample-company-000000" |
title | "Sample review title" |
pros | "Sample pros text" |
cons | "Sample cons text" |
overallExperienceDetails | "Long-form experience text appears here when the reviewer wrote one." |
jobTitle | "Sample Job Title" |
workLocation | "Sample Suburb XX 0000" |
employmentStatus | "1 to 2 years in the role, current employee" |
salarySummary | "Average" |
recommended | true |
recommendedLabel | "Recommended" |
overallRating | 4 |
ratings | [ { "category": "Work/Life balance", "rating": 4 }, ... ] |
upvotes | 0 |
createdAt | "1 January 2026" |
hasBeenFlagged | false |
scrapedAt | "2026-01-01T00:00:00.000Z" |
How to Use
Search for companies by keyword (companies mode)
{"mode": "companies","region": "AU","keywords": "atlassian","maxReviewsPerCompany": 5,"maxItems": 5,"proxyConfiguration": { "useApifyProxy": true }}
Pull reviews for specific companies (reviews mode)
{"mode": "reviews","urls": [{ "url": "https://au.seek.com/companies/coles-group-433124" },{ "url": "https://au.seek.com/companies/westpac-bank-432310" }],"maxReviewsPerCompany": 100,"reviewSort": "recent","maxItems": 200}
Mix AU and NZ URLs (region auto-detected)
{"mode": "companies","urls": [{ "url": "https://au.seek.com/companies/atlassian-437216" },{ "url": "https://nz.seek.com/companies/spark-new-zealand-171714208521358" }],"maxReviewsPerCompany": 10}
Companies mode with embedded AI summary disabled
{"mode": "companies","region": "NZ","keywords": "fonterra","maxReviewsPerCompany": 3,"includeAISummary": false,"maxItems": 1}
Companies mode with embedded open jobs
{"mode": "companies","region": "AU","urls": [{ "url": "https://au.seek.com/companies/coles-group-433124" }],"maxReviewsPerCompany": 3,"includeJobs": true,"maxJobsPerCompany": 50,"maxItems": 1}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string enum | "companies" | "companies" (one row per company, top reviews embedded) or "reviews" (one row per individual review). |
region | string enum | "AU" | "AU" (au.seek.com) or "NZ" (nz.seek.com). Auto-detected per URL when urls is set. |
keywords | string | "" | Company-name keyword for search mode. Ignored if urls is set. |
urls | array | [] | List of SEEK company URLs (/companies/<slug> or /companies/<slug>/reviews). When set, overrides keywords. |
maxReviewsPerCompany | integer | 5 | Companies mode: top-N reviews to embed. Reviews mode: max reviews per company. Set 0 for the default of 30; higher values fetch deeper history. |
reviewSort | string enum | "helpful" | "helpful" (most upvoted first, ideal for top-N) or "recent" (newest first, ideal for ongoing monitoring). |
includeAISummary | boolean | true | Companies mode only. SEEK ships a generated review summary; disable to drop the field. |
includeJobs | boolean | false | Companies mode only. When true, embeds a jobs[] array of the company's currently-listed positions on each company record. |
maxJobsPerCompany | integer | 20 | Cap on jobs[] length when includeJobs is true. Set 0 for the full open-jobs count. |
maxItems | integer | 20 | Total cap across all companies. Set 0 for unlimited. |
maxTimeSec | integer | 0 | Wall-clock cap. Set 0 for no time limit. |
resumeFromRunId | string | โ | Continue one specific interrupted/previous run/dataset: records already collected there are skipped. For recurring monitoring, use incrementalMode instead โ see "Resume & recurring updates" below. |
incrementalMode | boolean | false | Recurring monitoring of this same mode/query. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default. See "Resume & recurring updates" below. |
stateKey | string | โ | Incremental mode only. Name a monitoring campaign, or deliberately share state across differently-configured runs. Auto-derived from mode + query/URL/review settings when left blank. |
emitUnchanged | boolean | false | Incremental mode only. Also return records unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have. |
emitExpired | boolean | false | Incremental mode + companies mode only. Also return companies from a previous run no longer resolved, marked EXPIRED, once a run has fully scanned its targets (not capped, not a resume). Adds and bills extra synthetic rows. |
proxyConfiguration | object | Apify Datacenter | Defaults to free-tier-friendly Datacenter. For production scale, set apifyProxyGroups: ["RESIDENTIAL"]. |
Resume & recurring updates
There are two different things here โ pick the one that matches what you're doing:
| Need | Use |
|---|---|
| A crawl stopped and should continue | resumeFromRunId |
| Run the same mode/query on a schedule and receive only changes | incrementalMode |
| Keep separate monitoring campaigns for similar queries | distinct stateKey values |
| Run a normal full snapshot | leave both off |
Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips records already collected there (companies mode dedupes on id, reviews mode on reviewId), returning only the remainder.
Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same mode/query by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED records by default โ duplicates and unchanged records are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per mode (companies and reviews runs against the identical query never share a baseline) and per URLs/keywords/industry/reviewSort/includeJobs/includeAISummary setup automatically; set stateKey to name or deliberately share a campaign.
Every returned record also carries, incremental mode only:
| Field | Description |
|---|---|
changeType | NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED (companies mode only) |
changedFields | Top-level fields that changed since last seen; non-empty only for UPDATED |
firstSeenAt | When this record was first observed by this monitoring campaign |
lastSeenAt | When this record was last observed |
A company's embedded topReviews/topReviewCount never affect its own changeType โ a new review appearing under a company is not, by itself, a company change (its aggregate ratingOverall/reviewCount already carry that signal); track individual review changes with mode: "reviews" instead. EXPIRED is companies-mode only: reviews mode only ever fetches a bounded top-N sample per company (maxReviewsPerCompany), never an exhaustive scan of a company's full review history, so a review's absence from one run's sample is not reliable evidence it was deleted.
includeJobs + maxJobsPerCompany interacts with changeType/changedFields too: jobs is always still returned in full on every row (this is not silently dropped), but a capped job list (any company with more open roles than maxJobsPerCompany, the common case at the 20-job default) is excluded from change detection entirely โ SEEK's job list reorders between requests, so a capped top-N slice can flip which job ids you see within minutes even when nothing about the company changed, and a truncated view can never prove otherwise. When a company's full job list fits under the cap, jobs is compared (order-independent, by id set) and a genuine add/remove still surfaces as UPDATED with changedFields including jobs.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record โ not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output Example (companies mode, single record)
Sample shape, values are illustrative placeholders.
{"id": "000000","slug": "sample-company-000000","url": "https://au.seek.com/companies/sample-company-000000","region": "AU","name": "Sample Company","isClaimed": true,"logoUrl": "https://image-service-cdn.seek.com.au/000000/000000","coverImageUrl": "https://image-service-cdn.seek.com.au/000000/000000","brandId": "00000000-0000-0000-0000-000000000000","totalJobs": 0,"ratingOverall": 0.0,"reviewCount": 0,"salaryRating": 0,"recommendedPercent": 0,"ratingBreakdown": {"companyRating1StarCount": 0,"companyRating1StarPercentage": 0.0,"companyRating2StarCount": 0,"companyRating2StarPercentage": 0.0,"companyRating3StarCount": 0,"companyRating3StarPercentage": 0.0,"companyRating4StarCount": 0,"companyRating4StarPercentage": 0.0,"companyRating5StarCount": 0,"companyRating5StarPercentage": 0.0},"categoryRatings": [{ "rating": 0.0, "count": 0, "description": "Work/Life balance" },{ "rating": 0.0, "count": 0, "description": "Career development" },{ "rating": 0.0, "count": 0, "description": "Benefits & perks" },{ "rating": 0.0, "count": 0, "description": "Management" },{ "rating": 0.0, "count": 0, "description": "Working environment" },{ "rating": 0.0, "count": 0, "description": "Diversity & equal opportunity" }],"topReviews": [{"reviewId": "000000000000000","companyId": "000000","title": "Sample review title","pros": "Sample pros text","cons": "Sample cons text","jobTitle": "Sample Job Title","workLocation": "Sample Suburb XX 0000","employmentStatus": "1 to 2 years in the role, current employee","salarySummary": "Average","recommended": true,"recommendedLabel": "Recommended","overallRating": 4,"ratings": [{ "category": "Work/Life balance", "rating": 4 },{ "category": "Career development", "rating": 4 }],"upvotes": 0,"createdAt": "1 January 2026","hasBeenFlagged": false}],"topReviewCount": 1,"scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan Requirement
Works on the Apify Free plan with the default Datacenter proxy. For heavy production workloads, switch to the Residential proxy (Starter plan or above) by setting apifyProxyGroups: ["RESIDENTIAL"] and apifyProxyCountry: "AU" (or "NZ"). Runs comfortably in 256 MB memory.