HolidayCheck Reviews Scraper avatar

HolidayCheck Reviews Scraper

Pricing

from $4.90 / 1,000 results

Go to Apify Store
HolidayCheck Reviews Scraper

HolidayCheck Reviews Scraper

Scrape HolidayCheck hotel reviews: full review text, hotelier owner response, category ratings (1-6), review & travel dates, recommendation, traveler type, topics with sentiment, reviewer photos, user info and tour operator — as structured JSON. Works with holidaycheck.de/.at/.ch.

Pricing

from $4.90 / 1,000 results

Rating

0.0

(0)

Developer

valiant quarter

valiant quarter

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Scrapes hotel reviews from HolidayCheck with the fields the existing Apify actors are missing: full review text, category ratings (1–6 scale) and the hotelier owner response.

How it works

The scraper combines two public sources per hotel and merges them by review id:

  1. JSON APIGET /api/hotel-reviews;filter=hotel.id:<uuid>;...;sort=entryDate:desc (100 reviews/page). Provides the review body (texts.GENERAL), textAdvice, category ratings, travel/entry dates, locale and user info. This endpoint does not expose the hotelier reply (every reply-like field in select is rejected with HTTP 400).
  2. Review listing pages/hr/bewertungen-<slug>/<uuid>?sort=entrydate&p=<n> (10 reviews/page). The server-rendered window.__FLUXIBLE_STATE__ payload carries ownerComment (reply text + date), recommendation and traveledWith.

Both sources are requested in the same newest-first order, so limiting maxReviewsPerHotel keeps the run proportionally cheap. No browser is used — plain HTTP only.

Input

FieldTypeDefaultDescription
startUrlsarrayHolidayCheck hotel URLs. Any URL containing the hotel UUID works.
maxReviewsPerHotelinteger0Max reviews per hotel, newest first. 0 = all.
includeOwnerResponsesbooleantrueCrawl listing pages to attach the hotelier reply. Disable for a faster, API-only run.
includeRawDatabooleanfalseAttach raw API/page payloads under raw.
proxyConfigurationobjectApify proxyProxy settings.

Output

One dataset item per review:

{
"hotelId": "2e44d958-7e5e-4423-92b2-84bb298826b0",
"hotelName": "Lago Hotel",
"hotelUrl": "https://www.holidaycheck.de/hr/bewertungen-lago-hotel/2e44d958-...",
"reviewId": "d6aa73e9-74a0-4318-94a4-b12ca3741f43",
"reviewUrl": "https://www.holidaycheck.de/hrd/x/d6aa73e9-74a0-4318-94a4-b12ca3741f43",
"title": "Super empfehlenswert und immer wieder gerne",
"text": "Sehr gut gelegen. Nettes Personal. ...",
"textAdvice": null,
"extraTexts": { "ROOM_OPINION": "...", "BEACH_OPINION": "...", "TRANSPORTATION_OPINION": "..." },
"ratings": { "GENERAL": { "GENERAL": 6 }, "FOOD": { "GENERAL": 6 }, "...": {} },
"generalRating": 6,
"recommendation": true,
"traveledWith": "FAMILY",
"proofedReservation": true,
"travelDate": "2026-06-01T00:00:00.000Z",
"entryDate": "2026-06-24T09:47:54.000Z",
"originalLocale": "de",
"returnedLocale": "de",
"tourOperator": { "id": "770085e5-...", "name": "ITS" },
"costPerformance": "GOOD",
"roomName": "Family room Deluxe Sea View",
"topics": [ { "id": "FOOD", "name": "Restaurants & Bars", "sentiment": 1 } ],
"ranking": 0.76,
"media": [ { "id": "...", "type": "PICTURE", "title": "Pool", "url": "https://media-cdn.holidaycheck.com/ugc/images/..." } ],
"user": {
"id": "...", "firstName": "Zafer", "ageGroup": "FROM_36_TO_40",
"hotelReviewCount": 1, "hasPublicProfile": true, "profilePictureUrl": null
},
"ownerResponse": {
"text": "Sehr geehrter Gast, vielen herzlichen Dank für Ihre ...",
"respondedAt": "2026-06-25T00:00:00.000Z"
}
}

Field notes:

  • ownerResponse is null when the hotel has not replied (common for reviews only a few days old).
  • reviewUrl 301-redirects to the canonical review permalink.
  • extraTexts are the reviewer's free-text answers to sub-questions (room, beach, transportation, service, sustainability...), keyed by question id.
  • topics are HolidayCheck's automatic topic tags with sentiment (-1/0/1, sometimes null).
  • ranking is HolidayCheck's internal relevance/helpfulness score (0-1).
  • recommendation, traveledWith, proofedReservation, extraTexts, tourOperator, costPerformance, roomName, topics, ranking and media come from the listing pages, so they are null when includeOwnerResponses is off.

A per-hotel run summary (counts, errors) is stored in the key-value store under SUMMARY.

Notes

  • Ratings use HolidayCheck's 1–6 scale (6 = best).
  • Works with holidaycheck.de/.at/.ch URLs (origin is taken from the input URL).
  • Listing-page failures are non-fatal: the affected reviews are still output, just without ownerResponse.
  • When includeOwnerResponses is on, the scraper automatically switches to residential proxies if HolidayCheck blocks datacenter IPs (HTTP 403). Residential proxy traffic is billed as platform usage — roughly 6 MB per 100 reviews. Disable includeOwnerResponses for the cheapest possible run.