# Kununu Reviews Scraper (`kawsar/kununu-reviews-scraper`) Actor

Kununu reviews scraper that pulls employee ratings, pros, cons, and written feedback from any company page on kununu.com, so you can track what people actually say about an employer without reading through pages manually.

- **URL**: https://apify.com/kawsar/kununu-reviews-scraper.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Automation, Developer tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Kununu Reviews Scraper: Extract Employee Reviews from Any Company on Kununu

Kununu Reviews Scraper collects employee reviews and ratings from kununu.com. Point it at a company URL and you get review titles, pros and cons, individual sub-ratings for work-life balance, salary, management, and company culture, plus each reviewer's job title and employment status. Run it on several companies at once. It handles pagination automatically, so you get all reviews, not just the first page.

No manual clicking. No copy-pasting. Just structured review data ready to export.

---

### What data does this actor extract?

For each review, the actor returns:

| Field | Type | Description |
|---|---|---|
| `reviewId` | string | Unique review identifier |
| `companyName` | string | Name of the reviewed company |
| `companySlug` | string | Company slug from the URL (e.g. `mercedes-benz-group`) |
| `companyUrl` | string | Kununu reviews page that was scraped |
| `overallRating` | number | Overall star rating (1.0 to 5.0) |
| `workLifeBalanceRating` | number | Work-life balance sub-rating |
| `salaryBenefitsRating` | number | Salary and benefits sub-rating |
| `managementRating` | number | Management quality sub-rating |
| `companyCultureRating` | number | Company culture sub-rating |
| `careerOpportunitiesRating` | number | Career growth sub-rating |
| `reviewTitle` | string | Headline written by the reviewer |
| `pros` | string | Positive aspects mentioned |
| `cons` | string | Negative aspects mentioned |
| `suggestions` | string | Reviewer's suggestions for improvement |
| `jobPosition` | string | Reviewer's job title or role |
| `employmentStatus` | string | Current or former employee |
| `workingHoursType` | string | Full-time, part-time, etc. |
| `reviewDate` | string | Date the review was posted |
| `reviewUrl` | string | Direct link to the review |
| `scrapedAt` | string | UTC timestamp of when this record was collected |
| `error` | string | Error message if scraping failed (null on success) |

---

### How to use it

#### Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `companyUrl` | string | No* | - | Kununu company reviews page URL |
| `companyUrls` | array | No* | - | List of company review URLs for bulk scraping |
| `maxItems` | integer | No | 100 | Max reviews to collect per company (max 1000) |
| `requestTimeoutSecs` | integer | No | 30 | Per-request timeout in seconds |

*At least one of `companyUrl` or `companyUrls` is required.

The `/kommentare` suffix is added automatically if you leave it off. Both `/de/` and `/at/` regional URLs work.

#### Example input

```json
{
    "companyUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare",
    "maxItems": 50
}
````

Scraping multiple companies at once:

```json
{
    "companyUrls": [
        "https://www.kununu.com/de/mercedes-benz-group",
        "https://www.kununu.com/de/siemens",
        "https://www.kununu.com/de/google"
    ],
    "maxItems": 200
}
```

#### Example output

```json
{
    "reviewId": "1234567",
    "companyName": "Mercedes-Benz Group AG",
    "companySlug": "mercedes-benz-group",
    "companyUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare",
    "overallRating": 3.8,
    "workLifeBalanceRating": 3.5,
    "salaryBenefitsRating": 4.2,
    "managementRating": 3.4,
    "companyCultureRating": 3.6,
    "careerOpportunitiesRating": 3.9,
    "reviewTitle": "Good employer with room to grow",
    "pros": "Good salary, stable job, international teams",
    "cons": "Bureaucracy slows things down, slow decision-making",
    "suggestions": "More flexible remote work options would help",
    "jobPosition": "Software Engineer",
    "employmentStatus": "Current employee",
    "workingHoursType": "Full-time",
    "reviewDate": "2024-11-15",
    "reviewUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare/1234567",
    "scrapedAt": "2025-03-01T14:22:10.123456+00:00",
    "error": null
}
```

***

### Use cases

- **Employer benchmarking**: compare ratings across competitors or within an industry before hiring or partnering
- **HR research**: pull structured review data to spot recurring complaints or praise without reading page by page
- **Job market analysis**: track how employee sentiment shifts over time for a company or sector
- **Recruitment intelligence**: check what current and former employees say before targeting candidates at a company
- **Reputation monitoring**: keep tabs on how a brand scores on work-life balance, management, and culture
- **Academic research**: collect large-scale review datasets for labor market or organizational behavior studies

***

### FAQ

**Which countries and regions does this work for?**
The actor supports any Kununu regional URL, including `/de/` (Germany), `/at/` (Austria), and `/ch/` (Switzerland). Just paste the URL as-is.

**Do I need to enter the full URL with /kommentare?**
No. If you paste a company profile URL without the `/kommentare` suffix, the actor adds it automatically.

**Can I scrape more than one company at a time?**
Yes. Use the `companyUrls` field to pass a list of URLs. The actor processes each one in sequence and pushes all results to a single dataset.

**How many reviews can I collect?**
Up to 1000 per company per run. Set `maxItems` to control the limit. The actor follows pagination automatically until it hits your limit or runs out of pages.

**What happens if a company page fails?**
The actor logs the error and saves a record with the `error` field set, then moves on to the next company. One failed URL does not stop the run.

**Does it work for private companies?**
It works for any company with a public Kununu profile. Private or unlisted profiles are not accessible.

***

### Integrate with your stack

Results are available as JSON, CSV, Excel, or XML from the Apify dataset. You can connect the actor to Google Sheets, Zapier, Make, or any tool that reads from the Apify API.

Kununu Reviews Scraper runs on Apify's infrastructure with built-in bypass capability, so you do not need to set up proxies or manage IP rotation manually.

# Actor input Schema

## `companyUrl` (type: `string`):

Kununu company reviews page URL. The /kommentare suffix is added automatically if missing.

## `companyUrls` (type: `array`):

List of Kununu company review page URLs. Use this to scrape several companies at once.

## `maxItems` (type: `integer`):

Maximum number of reviews to collect per company URL. The actor stops once this limit is reached.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds. Increase this if you experience timeout errors.

## Actor input object example

```json
{
  "companyUrl": "https://www.kununu.com/de/siemens/kommentare",
  "companyUrls": [
    "https://www.kununu.com/de/mercedes-benz-group/kommentare",
    "https://www.kununu.com/de/siemens/kommentare",
    "https://www.kununu.com/de/google/kommentare"
  ],
  "maxItems": 100,
  "requestTimeoutSecs": 30
}
```

# 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 = {
    "companyUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/kununu-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 = { "companyUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare" }

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

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

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

```

## CLI example

```bash
echo '{
  "companyUrl": "https://www.kununu.com/de/mercedes-benz-group/kommentare"
}' |
apify call kawsar/kununu-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/kununu-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kununu Reviews Scraper",
        "description": "Kununu reviews scraper that pulls employee ratings, pros, cons, and written feedback from any company page on kununu.com, so you can track what people actually say about an employer without reading through pages manually.",
        "version": "0.0",
        "x-build-id": "iJxwW1rOws7RV6ZBJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~kununu-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-kununu-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kawsar~kununu-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-kununu-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kawsar~kununu-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-kununu-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "companyUrl": {
                        "title": "Company reviews URL",
                        "type": "string",
                        "description": "Kununu company reviews page URL. The /kommentare suffix is added automatically if missing."
                    },
                    "companyUrls": {
                        "title": "Multiple company URLs",
                        "type": "array",
                        "description": "List of Kununu company review page URLs. Use this to scrape several companies at once.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max reviews per company",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of reviews to collect per company URL. The actor stops once this limit is reached.",
                        "default": 100
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds. Increase this if you experience timeout errors.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
