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

Scrape company reviews, job salaries, HR responses, ratings, and timestamps. Fast, reliable, and built for scaling.
Perfect for HR analytics, employer branding, and competitor research.
Export clean data as JSON, CSV, XLSX, or JSONL.

- **URL**: https://apify.com/radeance/kununu-reviews-scraper.md
- **Developed by:** [Radeance](https://apify.com/radeance) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 96 total users, 16 monthly users, 100.0% runs succeeded, 9 bookmarks
- **User rating**: 5.00 out of 5 stars

## 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/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

## Kununu Company Reviews & Salary Scraper

The **Kununu Company Score Scraper** on **Apify** provides powerful, structured insights into **employer reputation**, **employee satisfaction**, and **salary transparency** — all directly sourced from Kununu.

This fast and intelligent scraper extracts **company ratings**, **employee and candidate reviews**, **salary benchmarks**, and **sentiment summaries** for thousands of organizations.
It supports multiple input modes, from **direct Kununu URLs**, **company slugs**, or even **any company website** using **AI-powered web search** to automatically resolve the right Kununu profile.

Whether you’re in **HR**, **recruitment**, **employer branding**, or **market research**, this scraper delivers clean, structured data that helps you understand how employees and candidates truly perceive a company — ready for export in **JSON**, **CSV**, or **XLSX** formats.

### ❶ Key Features

- **Flexible Input Methods** ✅
  - Direct Kununu company page URLs for instant score extraction
  - Kununu company slugs for streamlined batch processing
  - Company names with intelligent matching
  - **AI Web Search Integration** Input any company website URL and automatically resolve to the corresponding Kununu company profile

- **Comprehensive Score & Review Extraction** ✅
  - Retrieves overall company ratings, employee and candidate scores, and industry benchmarks
  - Extracts historical rating trends and satisfaction data over time
  - Collects recommendation rates, review counts, and key company metadata with timestamps

- **Salary Insights & Benchmarking** ✅
  - Access average, median, minimum, and maximum salary data per job title
  - Compare compensation against industry averages and satisfaction scores
  - Perfect for salary benchmarking, pay equity analysis, and HR strategy

- **Authentic Review Summaries** ✅
  - Extracts full, unaltered employee and candidate review texts directly from Kununu
  - Captures pros, cons, and suggestions sections for genuine sentiment analysis
  - Ideal for natural language processing and HR research use cases

- **Built for Performance** ✅
  - Optimized for fast, reliable data extraction with intelligent error handling
  - Scales seamlessly using our reliable proxy infrastructure
  - Maintains consistent data integrity across high-volume workloads

- **Flexible Export Options** ✅
  - Download structured results as JSON, CSV, XLSX, or JSONL
  - Easy integration with Python, R, Power BI, Excel, or any analytics platform
  - Ideal for employer branding, HR analytics, and competitive research

### ❷ Output

#### Table View Output

##### Reviews Table 🔖

<img src="https://i.imgur.com/rza8RE6.png" alt="Reviews Table View Output Image" style="border-radius: 15px;" />

##### Companies Table 🏦

<img src="https://i.imgur.com/3qybgNo.png" alt="Company Table View Output Image" style="border-radius: 15px;" />

##### Salaries Table 💵

<img src="https://i.imgur.com/N7AOYvu.png" alt="Reviews Table View Output Image" style="border-radius: 15px;" />

#### Company & Reviews Data

###### `Requires Company Name / Slug or Kununu URL Input`

```json
{
    "data_captured_at": "2026-05-30T17:24:56.913291",
    "company_uuid": "a5dd88da-e3a9-4553-a503-49cdc624862b",
    "company_slug": "mercedes-benz-group",
    "company_name": "Mercedes-Benz Group",
    "industry": "Automobil",
    "employer_segment": "giant",
    "employee_number": null,
    "revenue": null,
    "verified": true,
    "is_top_company": true,
    "top_company_years": [2026, 2025, 2024, 2023, 2022],
    "paying_top_company_badge": false,
    "company_website": "https://www.career.daimler.com",
    "company_overall_score": 3.9,
    "company_overall_score_trend_last_24_months": 3.9,
    "company_overall_score_trend_older_than_24_months": 4.0,
    "company_overall_score_history": [
        {
            "year": 2022,
            "score": 3.8,
            "score_rounded": 4.0,
            "total_reviews": 443
        },
        {
            "year": 2023,
            "score": 3.9,
            "score_rounded": 4.0,
            "total_reviews": 593
        },
        {
            "year": 2024,
            "score": 3.9,
            "score_rounded": 4.0,
            "total_reviews": 689
        },
        {
            "year": 2025,
            "score": 3.9,
            "score_rounded": 4.0,
            "total_reviews": 752
        },
        {
            "year": 2026,
            "score": 3.9,
            "score_rounded": 4.0,
            "total_reviews": 257
        }
    ],
    "industry_average_score": 3.5,
    "employees_overall_score": 3.9,
    "employees_overall_score_rounded": 4.0,
    "candidates_overall_score": 2.7,
    "candidates_overall_score_rounded": 2.5,
    "newest_employee_review_date": "2026-05-28T00:00:00Z",
    "oldest_employee_review_date": "2018-08-17T00:00:00Z",
    "newest_candidate_review_date": "2026-04-17T00:00:00Z",
    "oldest_candidate_review_date": "2009-07-16T00:00:00Z",
    "company_recommendation_percentage": 78.0,
    "company_recommended_reviews_count": 1035,
    "company_not_recommended_reviews_count": 295,
    "salary_reviews_score": 4.2,
    "salary_reviews_score_rounded": 4.0,
    "salary_statisfaction_positive_percentage": 80.0,
    "salary_statisfaction_negative_percentage": 8.0,
    "salary_statisfaction_neutral_percentage": 12.0,
    "salary_roles_count": 331,
    "salary_reviews_count": 6852,
    "salary_industry_comparison": 20.0,
    "reviews_count": 7669,
    "employee_reviews_count": 7191,
    "reviews_apprenticeship_count": 202,
    "candidate_reviews_count": 478,
    "total_reviews_with_text_count": 4437,
    "deleted_reviews_count_last_24_months": 90,
    "candidate_reviews_score_4_to_5": 142.0,
    "candidate_reviews_score_4_to_5_percentage": 30.0,
    "candidate_reviews_score_3_to_4": 57.0,
    "candidate_reviews_score_3_to_4_percentage": 12.0,
    "candidate_reviews_score_2_to_3": 72.0,
    "candidate_reviews_score_2_to_3_percentage": 15.0,
    "candidate_reviews_score_1_to_2": 207.0,
    "candidate_reviews_score_1_to_2_percentage": 43.0,
    "employee_reviews_score_4_to_5": 4318.0,
    "employee_reviews_score_4_to_5_percentage": 60.0,
    "employee_reviews_score_3_to_4": 1739.0,
    "employee_reviews_score_3_to_4_percentage": 24.0,
    "employee_reviews_score_2_to_3": 819.0,
    "employee_reviews_score_2_to_3_percentage": 11.0,
    "employee_reviews_score_1_to_2": 315.0,
    "employee_reviews_score_1_to_2_percentage": 4.0,
    "reviews_response_time_days": 7.0,
    "total_reviews_responded_percentage": 0.6,
    "total_reviews_response_count": 47,
    "total_employer_reviews_response_count": 42,
    "total_apprenticeship_reviews_response_count": 3,
    "total_application_reviews_response_count": 2,
    "reviews_ai_summary": "Bei Mercedes-Benz Group herrscht insgesamt eine positive Arbeitsatmosphäre, wie die Bewertungen zeigen. Besonders geschätzt werden die kollegiale Zusammenarbeit und die attraktiven Gehälter mit Sozialleistungen. Die Work-Life-Balance wird durch Flexibilität bei Arbeitszeiten und Home-Office-Möglichkeiten positiv bewertet. Allerdings gibt es auch Kritikpunkte: Das Führungsverhalten wird als uneinheitlich wahrgenommen, und die Kommunikation könnte transparenter sein. In jüngster Zeit haben Sparmaßnahmen und Personalabbau zu einer Verschlechterung der Stimmung in manchen Bereichen geführt. Karrieremöglichkeiten werden zunehmend als eingeschränkt empfunden, wobei Weiterbildungsangebote grundsätzlich vorhanden sind.\n\nDie Arbeitsbedingungen und das Unternehmensimage werden überwiegend positiv bewertet, wenngleich der Stern etwas an Glanz verloren hat. Das Umwelt- und Sozialbewusstsein wird als wichtiger Teil der Unternehmensphilosophie angesehen, auch wenn die Umsetzung nicht immer konsequent erfolgt. Im Bereich der Gleichberechtigung gibt es unterschiedliche Wahrnehmungen – während einige Mitarbeiter:innen von gelebter Gleichberechtigung berichten, sehen andere noch Verbesserungspotenzial.\n\nGut finden Arbeitnehmende:\n- Attraktives Gehaltsniveau mit zusätzlichen Sozialleistungen\n- Flexible Arbeitszeiten und Home-Office-Möglichkeiten\n- Kollegialer Zusammenhalt und interessante Aufgabenfelder\n\nAls verbesserungswürdig geben sie an:\n- Uneinheitliches Führungsverhalten und mangelnde Transparenz\n- Eingeschränkte Karrieremöglichkeiten durch Sparmaßnahmen\n- Zunehmender Leistungsdruck und Arbeitsintensivierung",
    "company_linkedin_url": null,
    "company_instagram_url": null,
    "company_facebook_url": null,
    "company_twitter_url": null,
    "company_youtube_url": null,
    "company_xing_url": null,
    "salaries": [
        {
            "job_company_slug": "mercedes-benz-group",
            "job_id": 24326,
            "job_role": "Entwicklungsingenieur:in",
            "job_slug": "entwicklungsingenieur-in",
            "average_salary": 89100.0,
            "median_salary": 90000.0,
            "min_salary": 48000.0,
            "max_salary": 116500.0,
            "number_of_reports": 282
        }
    ],
    "reviews": [
        {
            "uuid": "ab1d51ce-c6d0-4c66-836a-030295dfc990",
            "type": "employer",
            "created_at": "2026-05-28T00:00:00Z",
            "updated_at": "2026-05-28T00:00:00Z",
            "position": "employee",
            "title": "Sehr guter Arbeitgeber",
            "score": 5.0,
            "score_rounded": 5.0,
            "recommended": true,
            "multiple_review": false,
            "ratings": [
                {
                    "category": "atmosphere",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": "Sehr gut"
                },
                {
                    "category": "teamwork",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": "Gut"
                },
                {
                    "category": "communication",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": "Gut"
                },
                {
                    "category": "image",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "workLife",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "career",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "salary",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "environment",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "oldColleagues",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "leadership",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "workConditions",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "equality",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                },
                {
                    "category": "tasks",
                    "score": 5.0,
                    "score_rounded": 5.0,
                    "text": null
                }
            ],
            "reactions": {
                "agree_count": 0,
                "helpful_count": 0
            },
            "pros": null,
            "cons": null,
            "suggestions": null,
            "company": "Mercedes Benz",
            "review_company_slug": "mercedes-benz-group",
            "department": "operations",
            "location": "Sindelfingen",
            "response": null
        }
    ]
}
```

#### Review Data

###### `Requires Company Name / Slug or Kununu URL Input`

```json
{
    "uuid": "ab1d51ce-c6d0-4c66-836a-030295dfc990",
    "type": "employer",
    "created_at": "2026-05-28T00:00:00Z",
    "updated_at": "2026-05-28T00:00:00Z",
    "position": "employee",
    "title": "Sehr guter Arbeitgeber",
    "score": 5.0,
    "score_rounded": 5.0,
    "recommended": true,
    "multiple_review": false,
    "ratings": [
        {
            "category": "atmosphere",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": "Sehr gut"
        },
        {
            "category": "teamwork",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": "Gut"
        },
        {
            "category": "communication",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": "Gut"
        },
        {
            "category": "image",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "workLife",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "career",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "salary",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "environment",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "oldColleagues",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "leadership",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "workConditions",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "equality",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        },
        {
            "category": "tasks",
            "score": 5.0,
            "score_rounded": 5.0,
            "text": null
        }
    ],
    "reactions": {
        "agree_count": 0,
        "helpful_count": 0
    },
    "pros": null,
    "cons": null,
    "suggestions": null,
    "company": "Mercedes Benz",
    "review_company_slug": "mercedes-benz-group",
    "department": "operations",
    "location": "Sindelfingen",
    "response": null
}
```

#### Salary Data

###### `Requires Company Name / Slug or Kununu URL Input`

```json
{
    "job_company_slug": "mercedes-benz-group",
    "job_id": 24326,
    "job_role": "Entwicklungsingenieur:in",
    "job_slug": "entwicklungsingenieur-in",
    "average_salary": 89100.0,
    "median_salary": 90000.0,
    "min_salary": 48000.0,
    "max_salary": 116500.0,
    "number_of_reports": 282
}
```

#### Field Reference

| Field                                              | Type                  | Description                                                                    |
| -------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------ |
| `data_captured_at`                                 | string (ISO datetime) | Timestamp when the dataset was captured.                                       |
| `company_uuid`                                     | string (UUID)         | Unique identifier of the company record.                                       |
| `company_slug`                                     | string                | URL-friendly company identifier.                                               |
| `company_name`                                     | string                | Displayed company name.                                                        |
| `industry`                                         | string                | Industry category associated with the company.                                 |
| `employer_segment`                                 | string                | Employer size or segment classification.                                       |
| `employee_number`                                  | number or null        | Number of employees, if available.                                             |
| `revenue`                                          | number or null        | Company revenue, if available.                                                 |
| `verified`                                         | boolean               | Indicates whether the company profile is verified.                             |
| `is_top_company`                                   | boolean               | Indicates whether the company is marked as a top company.                      |
| `top_company_years`                                | array of numbers      | Years in which the company received top company status.                        |
| `paying_top_company_badge`                         | boolean               | Indicates whether the top company badge is paid.                               |
| `company_website`                                  | string (URL)          | Company careers or website URL.                                                |
| `company_overall_score`                            | number                | Displayed overall company rating score.                                        |
| `company_overall_score_trend_last_24_months`       | number                | Overall score based on reviews from the last 24 months.                        |
| `company_overall_score_trend_older_than_24_months` | number                | Overall score based on reviews older than 24 months.                           |
| `company_overall_score_history`                    | array of objects      | Historical yearly company scores and review counts.                            |
| `company_overall_score_history[].year`             | number                | Year represented by the historical score entry.                                |
| `company_overall_score_history[].score`            | number                | Average company score for the year.                                            |
| `company_overall_score_history[].score_rounded`    | number                | Rounded average company score for the year.                                    |
| `company_overall_score_history[].total_reviews`    | number                | Total number of reviews included for the year.                                 |
| `industry_average_score`                           | number                | Average rating score for the company’s industry.                               |
| `employees_overall_score`                          | number                | Overall rating score from employee reviews.                                    |
| `employees_overall_score_rounded`                  | number                | Rounded employee overall rating score.                                         |
| `candidates_overall_score`                         | number                | Overall rating score from candidate/application reviews.                       |
| `candidates_overall_score_rounded`                 | number                | Rounded candidate overall rating score.                                        |
| `newest_employee_review_date`                      | string (ISO datetime) | Date of the newest employee review.                                            |
| `oldest_employee_review_date`                      | string (ISO datetime) | Date of the oldest employee review.                                            |
| `newest_candidate_review_date`                     | string (ISO datetime) | Date of the newest candidate review.                                           |
| `oldest_candidate_review_date`                     | string (ISO datetime) | Date of the oldest candidate review.                                           |
| `company_recommendation_percentage`                | number                | Percentage of reviewers who recommend the company.                             |
| `company_recommended_reviews_count`                | number                | Number of reviews recommending the company.                                    |
| `company_not_recommended_reviews_count`            | number                | Number of reviews not recommending the company.                                |
| `salary_reviews_score`                             | number                | Overall salary satisfaction score.                                             |
| `salary_reviews_score_rounded`                     | number                | Rounded salary satisfaction score.                                             |
| `salary_statisfaction_positive_percentage`         | number                | Percentage of positive salary satisfaction ratings.                            |
| `salary_statisfaction_negative_percentage`         | number                | Percentage of negative salary satisfaction ratings.                            |
| `salary_statisfaction_neutral_percentage`          | number                | Percentage of neutral salary satisfaction ratings.                             |
| `salary_roles_count`                               | number                | Number of salary-related roles represented in the dataset.                     |
| `salary_reviews_count`                             | number                | Number of salary reviews.                                                      |
| `salary_industry_comparison`                       | number                | Salary comparison value relative to the industry benchmark.                    |
| `reviews_count`                                    | number                | Total number of reviews.                                                       |
| `employee_reviews_count`                           | number                | Total number of employee reviews.                                              |
| `reviews_apprenticeship_count`                     | number                | Total number of apprenticeship reviews.                                        |
| `candidate_reviews_count`                          | number                | Total number of candidate/application reviews.                                 |
| `total_reviews_with_text_count`                    | number                | Number of reviews containing written text.                                     |
| `deleted_reviews_count_last_24_months`             | number                | Number of reviews deleted within the last 24 months.                           |
| `candidate_reviews_score_4_to_5`                   | number                | Number of candidate reviews with scores from 4 to 5.                           |
| `candidate_reviews_score_4_to_5_percentage`        | number                | Percentage of candidate reviews with scores from 4 to 5.                       |
| `candidate_reviews_score_3_to_4`                   | number                | Number of candidate reviews with scores from 3 to 4.                           |
| `candidate_reviews_score_3_to_4_percentage`        | number                | Percentage of candidate reviews with scores from 3 to 4.                       |
| `candidate_reviews_score_2_to_3`                   | number                | Number of candidate reviews with scores from 2 to 3.                           |
| `candidate_reviews_score_2_to_3_percentage`        | number                | Percentage of candidate reviews with scores from 2 to 3.                       |
| `candidate_reviews_score_1_to_2`                   | number                | Number of candidate reviews with scores from 1 to 2.                           |
| `candidate_reviews_score_1_to_2_percentage`        | number                | Percentage of candidate reviews with scores from 1 to 2.                       |
| `employee_reviews_score_4_to_5`                    | number                | Number of employee reviews with scores from 4 to 5.                            |
| `employee_reviews_score_4_to_5_percentage`         | number                | Percentage of employee reviews with scores from 4 to 5.                        |
| `employee_reviews_score_3_to_4`                    | number                | Number of employee reviews with scores from 3 to 4.                            |
| `employee_reviews_score_3_to_4_percentage`         | number                | Percentage of employee reviews with scores from 3 to 4.                        |
| `employee_reviews_score_2_to_3`                    | number                | Number of employee reviews with scores from 2 to 3.                            |
| `employee_reviews_score_2_to_3_percentage`         | number                | Percentage of employee reviews with scores from 2 to 3.                        |
| `employee_reviews_score_1_to_2`                    | number                | Number of employee reviews with scores from 1 to 2.                            |
| `employee_reviews_score_1_to_2_percentage`         | number                | Percentage of employee reviews with scores from 1 to 2.                        |
| `reviews_response_time_days`                       | number                | Average number of days taken to respond to reviews.                            |
| `total_reviews_responded_percentage`               | number                | Percentage of total reviews that received a response.                          |
| `total_reviews_response_count`                     | number                | Total number of review responses.                                              |
| `total_employer_reviews_response_count`            | number                | Number of responses to employer reviews.                                       |
| `total_apprenticeship_reviews_response_count`      | number                | Number of responses to apprenticeship reviews.                                 |
| `total_application_reviews_response_count`         | number                | Number of responses to application/candidate reviews.                          |
| `reviews_ai_summary`                               | string                | AI-generated summary of review sentiment, strengths, and improvement areas.    |
| `company_linkedin_url`                             | string (URL) or null  | LinkedIn profile URL of the company, if available.                             |
| `company_instagram_url`                            | string (URL) or null  | Instagram profile URL of the company, if available.                            |
| `company_facebook_url`                             | string (URL) or null  | Facebook profile URL of the company, if available.                             |
| `company_twitter_url`                              | string (URL) or null  | Twitter/X profile URL of the company, if available.                            |
| `company_youtube_url`                              | string (URL) or null  | YouTube profile URL of the company, if available.                              |
| `company_xing_url`                                 | string (URL) or null  | XING profile URL of the company, if available.                                 |
| `salaries`                                         | array of objects      | Individual records for a single job-role salary.                               |
| `salaries[].job_company_slug`                      | string                | Company slug associated with the salary record.                                |
| `salaries[].job_id`                                | number                | Unique identifier of the job role.                                             |
| `salaries[].job_role`                              | string                | Display name of the job role.                                                  |
| `salaries[].job_slug`                              | string                | URL-friendly identifier of the job role.                                       |
| `salaries[].average_salary`                        | number                | Average salary reported for the job role.                                      |
| `salaries[].median_salary`                         | number                | Median salary reported for the job role.                                       |
| `salaries[].min_salary`                            | number                | Minimum reported salary for the job role.                                      |
| `salaries[].max_salary`                            | number                | Maximum reported salary for the job role.                                      |
| `salaries[].number_of_reports`                     | number                | Number of salary reports used for the salary benchmark.                        |
| `reviews`                                          | array of objects      | Individual employee, employer, apprenticeship, or candidate review records.    |
| `reviews[].uuid`                                   | string (UUID)         | Unique identifier of the review.                                               |
| `reviews[].type`                                   | string                | Review type, such as employer or candidate review.                             |
| `reviews[].created_at`                             | string (ISO datetime) | Timestamp when the review was created.                                         |
| `reviews[].updated_at`                             | string (ISO datetime) | Timestamp when the review was last updated.                                    |
| `reviews[].position`                               | string                | Reviewer position or relationship to the company.                              |
| `reviews[].title`                                  | string                | Review title.                                                                  |
| `reviews[].score`                                  | number                | Review score.                                                                  |
| `reviews[].score_rounded`                          | number                | Rounded review score.                                                          |
| `reviews[].recommended`                            | boolean               | Indicates whether the reviewer recommends the company.                         |
| `reviews[].multiple_review`                        | boolean               | Indicates whether the review is part of multiple reviews by the same reviewer. |
| `reviews[].ratings`                                | array of objects      | Category-level rating breakdown for the review.                                |
| `reviews[].reactions`                              | object                | User reaction counts associated with the review.                               |
| `reviews[].pros`                                   | string or null        | Positive feedback provided by the reviewer.                                    |
| `reviews[].cons`                                   | string or null        | Negative feedback provided by the reviewer.                                    |
| `reviews[].suggestions`                            | string or null        | Improvement suggestions provided by the reviewer.                              |
| `reviews[].company`                                | string                | Company name as stated in the review.                                          |
| `reviews[].review_company_slug`                    | string                | Company slug associated with the review.                                       |
| `reviews[].department`                             | string or null        | Department associated with the reviewer.                                       |
| `reviews[].location`                               | string or null        | Location associated with the review.                                           |
| `reviews[].response`                               | object or null        | Employer response to the review, if available.                                 |
| `reviews[].ratings[].category`                     | string                | Rating category, such as atmosphere, teamwork, salary, or leadership.          |
| `reviews[].ratings[].score`                        | number                | Score for the specific rating category.                                        |
| `reviews[].ratings[].score_rounded`                | number                | Rounded score for the specific rating category.                                |
| `reviews[].ratings[].text`                         | string or null        | Optional written comment for the rating category.                              |
| `reviews[].reactions.agree_count`                  | number                | Number of users who agreed with the review.                                    |
| `reviews[].reactions.helpful_count`                | number                | Number of users who marked the review as helpful.                              |

### ❸ Input

<img src="https://i.imgur.com/Omwbqpe.png" alt="Kununu Scraper Input Image" style="border-radius: 15px;" />
<br><br>

| Parameter             | Type               | Default                                                                              | Description                                                                                                                           |
| --------------------- | ------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `companies`           | array (string)     | `["https://www.kununu.com/de/mercedes-benz-group","sap","Bundesagentur für Arbeit"]` | One or more company profile URLs or company slugs to scrape. Supports bulk input via multiple links or slugs.                         |
| `reviewType`          | selection (string) | `All`                                                                                | Review types to scrape. Options include `All`, `Employee`, or `Candidate`.                                                            |
| `sort_by`             | selection (string) | `newest`                                                                             | Sorting order for reviews. Options include `relevance`, `newest`, `oldest`, `best`, or `worst`. On Kununu the default is `relevance`. |
| `review_posted`       | string             | `1 year`                                                                             | Time range filter specifying how many days from today reviews should be retrieved.                                                    |
| `max_reviews`         | string             | `10`                                                                                 | Maximum number of reviews per review type per company. Supports up to 50,000 reviews per run.                                         |
| `max_salaries`        | string             | `20`                                                                                 | Maximum number of salary reports per company to retrieve.                                                                             |
| `include_reviews`     | boolean            | `true`                                                                               | Includes review data in the output. If disabled, only company data and optionally salary data are returned.                           |
| `include_salaries`    | boolean            | `true`                                                                               | Includes salary data in the output. If disabled, only company data and optionally review data are returned.                           |
| `format`              | boolean            | `formatted`                                                                          | Output format selection. `formatted` is optimized for CSV/Excel/Sheets, while `raw` is better suited for programmatic processing.     |
| `external_dataset_id` | string             | None                                                                                 | Include an existing dataset by id into the output                                                                                     |

#### Supported URL Formats

| URL format                                          | Supported |
| --------------------------------------------------- | --------- |
| `https://www.kununu.com/de/sap`                     | ✅        |
| `https://www.kununu.com/at/mercedes-benz-group`     | ✅        |
| `https://www.kununu.com/ch/bmw`                     | ✅        |
| `https://www.kununu.com/sap`                        | ✅        |
| `https://kununu.com/de/mercedes-benz-group`         | ✅        |
| `https://kununu.com/bmw`                            | ✅        |
| `https://www.kununu.com/de/sap/kommentare`          | ✅        |
| `https://kununu.com/mercedes-benz-group/kommentare` | ✅        |
| `bmw`                                               | ✅        |

#### Advanced Options

<img src="https://i.imgur.com/sra5aRl.png" alt="Kununu Scraper Advanced Options Input Image" style="border-radius: 15px;" />

- `proxySettings`: (Optional) (Object)
  Customize the proxy settings used by the scraper. For example Apify Residential proxies from the US can be used for stability and region-specific access.
  You can change the proxy group or country as needed.<br>
  **Default**: <br>`{
  "useApifyProxy": true,
  "apifyProxyGroups": [
    "RESIDENTIAL"
  ],
  "apifyProxyCountry": "DE"
  }`

#### JSON Input

Sample JSON input if you use the apify api via CURL, Python, JS etc.

```json
{
    "companies": [
        "https://www.kununu.com/sap",
        "https://www.kununu.com/de/bmw",
        "mercedes-benz-group"
    ],
    "include_salaries": true,
    "max_reviews": 100,
    "proxySettings": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    },
    "review_posted": "30 days"
}
```

### ❹ Use Cases

- **HR & Employer Branding Teams:**
  Benchmark company reputation, identify sentiment drivers, and track brand perception over time.

- **Recruiters & Talent Acquisition:**
  Understand candidate experiences and feedback to optimize the hiring process.

- **Employer Branding Agencies:**
  Compare and monitor company ratings to guide brand reputation improvement strategies.

- **Data Analysts & Researchers:**
  Collect structured review data for **sentiment analysis**, **trend modeling**, and **retention insights**.

- **Competitor Intelligence & Market Research:**
  Analyze **public perception** and **salary positioning** across industries and competitors.

- **Universities & Labor Market Experts:**
  Study **employee satisfaction**, **salary fairness**, and **organizational culture trends** at scale.

### ❺ Usage Limits

This service has different usage limits depending on your subscription status:

| User Type | Companies per Run | Reviews per Company  | Review History | Salaries per Company  | Monthly Runs   | Reset Period |
| --------- | ----------------- | -------------------- | -------------- | --------------------- | -------------- | ------------ |
| **Free**  | Max 3 companies   | Latest 100 reviews   | Last 365 days  | First 20 salaries     | 25 run(s)      | 30 days      |
| **Paid**  | Unlimited         | Up to 10,000 reviews | Last 10 years  | Up to 10,000 salaries | Unlimited runs | N/A          |

#### How Limits Work

**Free Users:**

- Maximum 3 companies per run
- Latest 100 reviews per company (from last 365 days)
- First 20 salaries per company

**Paid Users:**

- Unlimited companies per run
- Up to 10,000 reviews per company (from last 10 years)
- Up to 10,000 salaries per company

**Note:** All users can scrape multiple companies in a single run (within their respective limits).

### ❻ FAQ

#### What data can you get from the Kununu Scraper?

The Kununu Scraper can extract a wide range of data including company reviews, ratings, salary information, and company metadata. This includes overall company scores, employee and candidate reviews, salary benchmarks, and more.

#### How do I use the Kununu Scraper?

You can use the Kununu Scraper by providing it with either direct Kununu company page URLs, company slugs, or even company names. The scraper will then extract the relevant data based on your input and output it in a structured format.

#### How long does it take to scrape data for a company?

The time it takes to scrape data for a company can vary based on the number of reviews and salaries available for that company. Usually it can take anywhere from a few seconds to several minutes per company for thousands of reviews.

### ❼ While the scraper is running

During the run, the actor will output log messages letting you know what is going on at any point. Each message always contains specific information about the process including which url / page the actor is working on.

If you provide invalid inputs to the actor, it will immediately stop with a failure state and output log messages explaining what is wrong. If you are unsure what went wrong feel free to open up an issue in the issue tab.

### ❽ Legality of web scraping

The **Kununu Company Reviews & Salary Scraper** is designed to ethically extract **only publicly available reviews, salaries and company information**, and it **does not** scrape private user data such as personal email addresses or personal identifiers.

Our services are ethical and **do not extract any private user data**. They only extract **what individuals or companies chose to share publicly**. We therefore believe that our services, when used for ethical purposes by our users, are safe to use. However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. For more information you can read this [blog post](https://blog.apify.com/is-web-scraping-legal/) from Apify for more information on the legality of web scraping

### ❾ Feedback and Support

**Your satisfaction** is **important** to us! Therefore we are constantly striving to enhance the performance of our Actors.

If you have any technical feedback or encounter any bugs with the **Kununu Reviews Scraper**, please create an issue in the Actor’s Issues tab on the Apify Console.

You can also contact us directly for **general help** on **issues** or **integrations** at suppport@radeance.com. <br> For **custom projects**, **general suggestions** or **new use cases** feel free to reach out to us at business@radeance.com

# Changelog

This Actor's version history is a separate document: https://apify.com/radeance/kununu-reviews-scraper/changelog.md

# Actor input Schema

## `companies` (type: `array`):

Company reviews URL or company slug to scrape.  You can specify multiple URLs or slugs by clicking on the Add button or in bulk by clicking on the Bulk edit button.

## `reviewType` (type: `string`):

Select the type of reviews to scrape. Default is all reviews. You can select between all reviews, employee reviews, and application reviews.

## `sort_by` (type: `string`):

Select the sorting order of the reviews. Default is newest. You can select between newest, relevance, oldest, best, and worst.

## `review_posted` (type: `string`):

Select relative date in format: {number} {unit}

## `max_reviews` (type: `integer`):

The maximum number of reviews to scrape from a company of every review type. Defaults to 10. If there are no more reviews to scrape, the actor will stop even if this number is not reached. If you want to scrape all pages, set it to a high number like 50000.

## `max_salaries` (type: `integer`):

The maximum number of salary reports to scrape from a company. Defaults to 20. If there are no more salary reports to scrape, the actor will stop even if this number is not reached.

## `include_reviews` (type: `boolean`):

If set to true, the actor will scrape company reviews. Defaults to true.

## `include_salaries` (type: `boolean`):

If set to true, the actor will scrape company job salaries and salary reviews. Defaults to true.

## `format` (type: `string`):

Select desired output format. Default is formatted, which includes all data in a structured format. Raw will return only the raw output data.

## `only_unique` (type: `boolean`):

If checked, the actor will only return unique reviews. Duplicated reviews will be removed automatically from the dataset. Default: true

## `stream_output` (type: `boolean`):

If checked, the scraper will stream the data to the dataset as it scrapes. This is useful for large queries. Default: true

## `storage_name` (type: `string`):

Saves your dataset to a specific storage name. It is recommended to use a unique name for longer storage retention. If not provided, your data will be saved for 7 days.

## `external_dataset_id` (type: `string`):

If you want to include an existing dataset into the output, provide the dataset id here. The actor will look for the dataset and include its items if applicable

## Actor input object example

```json
{
  "companies": [
    "https://www.kununu.com/de/mercedes-benz-group",
    "sap",
    "Bundesagentur für Arbeit"
  ],
  "reviewType": "all",
  "sort_by": "newest",
  "max_reviews": 10,
  "max_salaries": 20,
  "include_reviews": true,
  "include_salaries": true,
  "format": "formatted",
  "only_unique": true,
  "stream_output": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "companies": [
        "https://www.kununu.com/de/mercedes-benz-group",
        "sap",
        "Bundesagentur für Arbeit"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("radeance/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 = { "companies": [
        "https://www.kununu.com/de/mercedes-benz-group",
        "sap",
        "Bundesagentur für Arbeit",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("radeance/kununu-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 '{
  "companies": [
    "https://www.kununu.com/de/mercedes-benz-group",
    "sap",
    "Bundesagentur für Arbeit"
  ]
}' |
apify call radeance/kununu-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,radeance/kununu-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/GmCWTZgkqLdawwdxf/builds/4MNMvUcz1vadr29cq/openapi.json
