# SEEK Company Reviews & Ratings Scraper (`axlymxp/seek-company-reviews-scraper`) Actor

Scrape SEEK (Australia & New Zealand) company reviews and ratings: overall + sub-ratings (management, work-life, diversity, career, benefits), 1–5 star distribution, salary sentiment, firmographics and every employee review (pros, cons, sub-ratings). Anonymous public API, pay per row.

- **URL**: https://apify.com/axlymxp/seek-company-reviews-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Jobs, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SEEK Company Reviews & Ratings Scraper

Turn a list of company names into **employer intelligence for Australia & New
Zealand** as clean JSON — the full SEEK ratings breakdown, 1–5 star distribution,
salary sentiment, firmographics, **and every employee review** (pros, cons, job
title, sub-ratings).

This is the SEEK equivalent of Glassdoor company reviews — a dataset the existing
SEEK job-listing scrapers don't provide. Built on SEEK's **public GraphQL API**
(seek.com.au / seek.co.nz), which is anonymous and has no anti-bot wall on the
data surface, so runs are reliable and don't break on web-page protection changes.

### Who it's for

- **Job seekers & career coaches** — research AU/NZ employers before applying:
  culture, management, work-life balance and pay sentiment in one place.
- **HR & talent teams** — benchmark your employer brand against competitors on
  the same rating dimensions.
- **Market & competitive researchers** — track workplace sentiment and reputation
  across an industry.
- **Review-aggregator & HR-SaaS developers** — a stable company + reviews schema
  for dashboards, comparison sites and webhooks.

### What you get — output fields

Every row carries a `record_type` of `company` or `review`, and a `country`
(`AU` / `NZ`).

**Company row** (`includeCompanyProfile`, on by default)

| Field | Type | Description |
| ----- | ---- | ----------- |
| `company_id` / `company_name` / `company_slug` | string | SEEK company id and names |
| `industry` / `company_size` / `website` / `primary_location` | string | Firmographics |
| `description` / `specialities` / `perks` / `awards` | mixed | Company profile detail |
| `rating_overall` | number | Overall rating (1–5) |
| `review_count` | integer | Total reviews on SEEK |
| `recommend_pct` | number | % of reviewers who recommend the company |
| `rating_management` / `_work_life_balance` / `_diversity` / `_career` / `_benefits_perks` / `_work_environment` | number | Sub-ratings (1–5) |
| `reviews_one_star` … `reviews_five_star` | integer | 1–5 star distribution |
| `salary_fair_pct` / `salary_generous_pct` / `salary_poor_pct` | number | Salary sentiment |
| `logo_url` / `cover_url` / `profile_url` / `reviews_url` | string | Assets & links |

**Review row** (when `includeReviews` is on)

| Field | Type | Description |
| ----- | ---- | ----------- |
| `review_id` / `review_datetime` / `review_date_label` | string | Review id and timestamps |
| `title` / `pros` / `cons` | string | Review text |
| `overall_rating` | number | This review's overall rating (1–5) |
| `rating_management` / `_work_life_balance` / `_diversity` / `_career` / `_benefits_perks` / `_work_environment` | number | Per-review sub-ratings |
| `job_title` / `location` / `employment_status` / `salary_summary` | string | Reviewer context |
| `recommended` / `recommended_label` / `upvotes` | mixed | Sentiment & engagement |
| `employer_reply` / `employer_reply_from` | string | Employer response, if any |

### High-value use cases

1. **Employer research** — pull the full ratings breakdown + recent reviews for a
   shortlist of companies before applying or accepting an offer.
2. **Employer-brand benchmarking** — compare sub-ratings and star distribution
   across a set of competitors in one run.
3. **Reputation monitoring** — schedule weekly pulls to track rating and sentiment
   drift; alert on new negative reviews.
4. **Reviews NLP** — pull the full review set (pros/cons + sub-ratings) for theme
   extraction, sentiment scoring and pay-sentiment analysis.
5. **Data products** — power an AU/NZ "employer reviews" dashboard or comparison
   site with a clean, documented schema.

### Input parameters

| Field | Type | Default | Description |
| ----- | ---- | ------- | ----------- |
| `companyNames` | array<string> | `["Commonwealth Bank"]` | Company names to resolve and scrape |
| `companyIds` | array<string> | — | SEEK company ids (skip name resolution) |
| `country` | enum | `AU` | Market: `AU` (seek.com.au) or `NZ` (seek.co.nz) |
| `maxCompaniesPerName` | integer | 1 | Company matches to keep per name |
| `includeCompanyProfile` | boolean | true | Emit one company summary row per company |
| `includeReviews` | boolean | false | Also emit one row per review |
| `maxReviewsPerCompany` | integer | 100 | Cap reviews per company |
| `proxyConfiguration` | object | Apify Proxy | Proxy used to reach SEEK |

### Example input

```json
{
  "companyNames": ["Commonwealth Bank", "Woolworths"],
  "country": "AU",
  "maxCompaniesPerName": 1,
  "includeReviews": true,
  "maxReviewsPerCompany": 200
}
```

### Example output (company row)

```json
{
  "record_type": "company",
  "company_id": "432306",
  "company_name": "CommBank",
  "country": "AU",
  "industry": "Banking & Credit",
  "company_size": "More than 10,000 employees",
  "rating_overall": 3.4,
  "review_count": 1090,
  "recommend_pct": 63,
  "rating_management": 2.9,
  "rating_work_life_balance": 3.4,
  "rating_diversity": 3.7,
  "reviews_five_star": 325,
  "reviews_one_star": 192,
  "salary_fair_pct": 64,
  "profile_url": "https://www.seek.com.au/companies/commbank-432306",
  "scraped_at": "2026-09-15T05:12:00Z"
}
```

### Example output (review row)

```json
{
  "record_type": "review",
  "company_id": "432306",
  "company_name": "CommBank",
  "country": "AU",
  "review_id": "178670668397324",
  "overall_rating": 1,
  "title": "No learning, just politics",
  "pros": "Compensation and work life balance",
  "cons": "Senior leadership egos and internal politics",
  "job_title": "Senior Software Engineer",
  "location": "All Sydney NSW",
  "employment_status": "1 to 2 years in the role, current employee",
  "recommended": false,
  "rating_management": 1,
  "rating_work_life_balance": 5,
  "review_datetime": "2026-08-14T11:24:43.020Z"
}
```

### Pricing

This Actor uses **pay-per-event** pricing:

- **Actor start:** $0.02 per run
- **Per result:** $0.005 per row (one company profile, or one review)

Example: 1 company profile + 200 reviews = **$0.02 + 201 × $0.005 ≈ $1.03**.
Profiles-only (no reviews) for 50 companies = **$0.02 + 50 × $0.005 = $0.27**.

### Scheduling & integrations

- **Schedule** runs to track rating/sentiment drift over time.
- **Webhooks** on completion push new rows to your app, Make or Zapier.
- **Export** to JSON, CSV, Excel or Google Sheets, or use the dataset API.

### Use with AI assistants (MCP)

Apify Actors are callable from AI assistants via the Model Context Protocol, so an
agent can pull a live employer profile on demand (e.g. "compare SEEK ratings and
work-life balance for CommBank vs Westpac"). Point your MCP client at this Actor
and pass the same input schema.

### FAQ

**Can I get all reviews?** Yes — enable `includeReviews`. Large employers can have
1,000+ reviews; `maxReviewsPerCompany` bounds how many you pull per company.

**Does it cover New Zealand?** Yes — set `country` to `NZ` to scrape seek.co.nz.

**Why are some ratings null?** SEEK only computes an aggregate rating once a company
has enough reviews. Companies with very few reviews still return their profile and
individual reviews, but the aggregate rating fields will be empty.

**How do I target a company precisely?** Pass `companyIds` (the numeric id in a
SEEK company URL or the `company_id` in output rows) to skip name resolution, or
raise `maxCompaniesPerName` to disambiguate similar names.

**How fresh is the data?** Live — every run queries SEEK at request time.

**Do I need a proxy?** No credentials or login are required. The public API works
from most IPs; the default Apify Proxy avoids datacenter rate-limits. Switch to
Residential if you ever see empty results.

**Is scraping this legal?** You are responsible for your use. The Actor collects
publicly available company information and reviews for research and analytics;
comply with SEEK's terms and applicable law, and review data-protection rules
before processing review text. This Actor is not affiliated with SEEK.

# Actor input Schema

## `companyNames` (type: `array`):

Company names to look up on SEEK, e.g. "Commonwealth Bank". Each is resolved to a SEEK company profile.

## `companyIds` (type: `array`):

SEEK company profile ids to scrape directly (skips name resolution). Found as "company\_id" in output rows. A leading "seek-" is stripped automatically.

## `country` (type: `string`):

Which SEEK market to search — Australia (seek.com.au) or New Zealand (seek.co.nz).

## `maxCompaniesPerName` (type: `integer`):

How many company matches to keep per name (1 = best match only; increase to disambiguate similar names).

## `includeCompanyProfile` (type: `boolean`):

Emit one company summary row per company (firmographics, ratings breakdown, star distribution, salary sentiment). Leave on unless you only want raw reviews.

## `includeReviews` (type: `boolean`):

Also scrape the company's employee reviews (title, pros, cons, sub-ratings, employer reply). Adds one dataset row per review. Off by default.

## `maxReviewsPerCompany` (type: `integer`):

When reviews are enabled, cap reviews scraped per company (large employers can have 1,000+).

## `proxyConfiguration` (type: `object`):

Proxy used to reach SEEK. The public API works from most IPs; Apify Proxy (the default) avoids datacenter rate-limits. Switch to Residential if you see empty results.

## Actor input object example

```json
{
  "companyNames": [
    "Commonwealth Bank",
    "Woolworths"
  ],
  "companyIds": [
    "432295",
    "318430"
  ],
  "country": "AU",
  "maxCompaniesPerName": 1,
  "includeCompanyProfile": true,
  "includeReviews": false,
  "maxReviewsPerCompany": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `companies` (type: `string`):

All scraped company and review rows in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companyNames": [
        "Commonwealth Bank"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/seek-company-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companyNames": ["Commonwealth Bank"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/seek-company-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companyNames": [
    "Commonwealth Bank"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call axlymxp/seek-company-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/seek-company-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/t5M5pkXMOlAZ2bF74/builds/Hh7R1XafhWi6PEskW/openapi.json
