# Zoover Reviews Scraper - Hotel Reviews & Ratings (`scrapewise/zoover-reviews-scraper`) Actor

Scrape Zoover hotel and holiday reviews (zoover.nl, .be, .de) without login: review text, score, scores per aspect, travel date, who they traveled with, language and hotel replies, plus a hotel summary with ratings per aspect. Date filter. Errors are free.

- **URL**: https://apify.com/scrapewise/zoover-reviews-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 1,000 review delivereds

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

## Zoover Reviews Scraper - Hotel Reviews & Ratings

**Scrape Zoover hotel and holiday reviews from zoover.nl, zoover.be and zoover.de without a login: review text, title, score, scores per aspect (hygiene, location, price/quality, room, service, child friendly), review and travel dates, who they traveled with, language, photo count and hotel replies. Plus one summary row per hotel with the overall rating, ratings per aspect, stars and location.**

For hotels and hotel groups tracking what Dutch, Belgian and German guests say, reputation and review-management tools, tour operators comparing properties, and researchers studying travel reviews.

### Zoover reviews scraper at a glance

- **Price:** US$ 2.50 per 1,000 reviews on the Free plan; the hotel summary row is US$ 0.0025 per hotel
- **Every review of a hotel**, newest first, up to the cap you set
- **Scores per aspect** for each review and for the hotel as a whole
- **Date filter** (`reviewsSince`) for daily or weekly monitoring of new reviews
- **No login, no browser.** Wrong links and hotels without data return free error rows

### Quick start

```json
{
  "startUrls": [{ "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa" }],
  "maxReviewsPerHotel": 500
}
```

Daily monitoring, only reviews from the last day:

```json
{
  "startUrls": [{ "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa" }],
  "reviewsSince": "1 days",
  "includeHotelSummary": false
}
```

A real review row from a run of 2026-10-22 (text shortened):

```json
{
  "type": "review",
  "hotelName": "Side Mare Resort & Spa",
  "hotelUrl": "https://www.zoover.nl/a/128192/side-mare-resort-spa",
  "hotelId": 128192,
  "countryCode": "TR",
  "city": "Side",
  "reviewId": "92444",
  "reviewTitle": "Super hotel",
  "reviewText": "Dit hotel geeft jouw echt een vakantie gevoel ...",
  "score": 9,
  "aspectScores": { "hygiene": 9, "location": 9, "priceQuality": 9, "room": 9, "service": 9 },
  "reviewDate": "2026-10-09",
  "travelDate": "2026-09-01",
  "traveledWith": "FRIENDS",
  "language": "nl",
  "verified": true
}
```

The hotel summary row of the same run:

```json
{
  "type": "hotel",
  "hotelName": "Side Mare Resort & Spa",
  "stars": 5,
  "rating": 9.2,
  "reviewCount": 510,
  "aspectRatings": { "childFriendly": 9.23, "hygiene": 9.29, "location": 8.93, "priceQuality": 9.11, "room": 9.01, "service": 9.37, "general": 9.16 },
  "country": "Turkije",
  "city": "Side"
}
```

### What data the Zoover scraper returns

| Field | What it is |
|---|---|
| `type` | `review`, `hotel` (summary) or `error` |
| `hotelName`, `hotelUrl`, `hotelId`, `country`, `countryCode`, `region`, `city` | The hotel, on every row |
| `reviewId`, `reviewTitle`, `reviewText` | The review |
| `score`, `aspectScores` | Overall score (1 to 10) and the score per aspect |
| `reviewDate`, `travelDate` | When it was written and when they traveled (YYYY-MM-DD) |
| `traveledWith` | COUPLE, FAMILY_WITH_YOUNG_CHILDREN, FAMILY_WITH_OLDER_CHILDREN, FRIENDS, SINGLE... |
| `language`, `likes`, `verified`, `photoCount` | Review language, likes, verified stay, number of photos |
| `hotelReplies` | The hotel's public replies with their dates |
| `stars`, `rating`, `reviewCount`, `aspectRatings`, `accommodationType`, `giataId` | On the hotel summary row |

The reviewer's name is not collected.

### Pricing

Pay per event, no monthly fee. Error rows are free.

| Event | Free plan price |
|---|---|
| Review delivered | US$ 0.0025 (US$ 2.50 per 1,000) |
| Hotel summary delivered | US$ 0.0025 per hotel |

| Job | Cost at the Free plan price |
|---|---|
| 500 reviews of one hotel, with summary | US$ 1.25 |
| Daily watch of 20 hotels, ~3 new reviews each per day, for a month | about US$ 4.50 |

### FAQ

**Which Zoover sites work?** zoover.nl, zoover.be and zoover.de accommodation pages (`/a/<id>/<name>`).

**Does it need a Zoover account?** No.

**How do I get only new reviews?** Set `reviewsSince` to `1 days` and schedule the Task daily; reviews come newest first and the run stops at the first older one.

**Is it legal to scrape Zoover?** The Actor reads public review pages without logging in and does not collect reviewer names. You are responsible for how you use the data.

### Limitations

- Accommodation pages only; search and region pages are not supported yet.
- Photos are counted, not downloaded.

If this Actor saves you time, a short review on the Store page helps other people find it.

### Related scrapers

- [Trip.com Hotel Reviews](https://apify.com/scrapewise/tripcom-hotel-reviews): hotel reviews from Trip.com.
- [Trustpilot Reviews Scraper](https://apify.com/scrapewise/trustpilot-reviews-scraper): company reviews from Trustpilot.
- [Kurzurlaub Reviews Scraper](https://apify.com/scrapewise/kurzurlaub-reviews-scraper): German hotel reviews from kurzurlaub.de.
- [Tabelog Scraper](https://apify.com/scrapewise/tabelog-scraper): Japanese restaurants, ratings and reviews.

### Changelog

- **2026-10-22, 0.1:** first release. Every review of a hotel with scores per aspect, hotel summary, date filter.

This Actor collects only publicly visible data from Zoover. Independent tool, not affiliated with Zoover.

# Actor input Schema

## `startUrls` (type: `array`):

Accommodation pages on zoover.nl, zoover.be or zoover.de, like https://www.zoover.nl/a/128192/side-mare-resort-spa. One per hotel.

## `maxReviewsPerHotel` (type: `integer`):

Stops after this many reviews for each hotel, newest first. Default 100.

## `reviewsSince` (type: `string`):

Only reviews written on or after this date: 2026-01-01, or a period like '30 days' or '6 months'. Schedule a daily Task with '1 days' to get only new reviews.

## `onlyWithText` (type: `boolean`):

Skip reviews that have a score but no written text.

## `includeHotelSummary` (type: `boolean`):

Adds one row per hotel with the overall rating, ratings per aspect, review count, stars and location.

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

Apify Proxy by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa"
    }
  ],
  "maxReviewsPerHotel": 100,
  "onlyWithText": false,
  "includeHotelSummary": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `resultsCsv` (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 = {
    "startUrls": [
        {
            "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa"
        }
    ],
    "maxReviewsPerHotel": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/zoover-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 = {
    "startUrls": [{ "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa" }],
    "maxReviewsPerHotel": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/zoover-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 '{
  "startUrls": [
    {
      "url": "https://www.zoover.nl/a/128192/side-mare-resort-spa"
    }
  ],
  "maxReviewsPerHotel": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/zoover-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/zoover-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/wkXuxclfHJl87EPCx/builds/e1RYvE1wYOqTJl9WQ/openapi.json
