
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Export hotel reviews from HolidayCheck (holidaycheck.de, .at, .ch): review text, 1-6 sun rating, recommendation, traveler type, dates, aspect ratings, hotel replies and hotel details. Paste hotel, review or destination links or type hotel names. No login needed.
Export hotel reviews from HolidayCheck (holidaycheck.de, .at and .ch), the German-language hotel review and travel site. Paste hotel or review links, a destination link or simply type hotel names, and get clean rows with the review text, the 1–6 sun rating, recommendation, traveler type, travel and review dates, every aspect rating and opinion, the hotel's reply and the hotel's own details. No login, no cookies, and you pay only for the reviews you save.
| Field | What it does |
|---|---|
startUrls | holidaycheck.de / .at / .ch links: review pages (/hr/...), hotel pages (/hi/...), single reviews (/hrd/...), destination pages (/dhr/..., /di/...), or a bare hotel id. |
hotelNames | Hotel names to look up, best with the city (e.g. Hotel Adlon Kempinski Berlin). |
maxReviewsPerHotel | Reviews to save per hotel, link or name (default 20, 0 = all). |
maxReviews | Optional cap for the whole run (0 = none). |
includeHotelDetails | Hotel stars, location, rating and counts on every row (on by default). |
sortBy | Relevance (site default), newest, oldest, best or worst rated first. |
travelerTypes | Couples, families, friends, solo travelers. |
minRating / maxRating | Suns, 1 to 6. |
reviewsFrom / reviewsTo | Review date range: YYYY-MM-DD or relative like 30 days. |
recommendation / onlyVerifiedStays | Only (not) recommending reviews; only reviews tied to a confirmed booking. |
{
"startUrls": [
{ "url": "https://www.holidaycheck.de/hr/bewertungen-pickalbatros-dana-beach-resort-hurghada/1aa4c4ad-f9ea-3367-a163-8a3a6884d450" }
],
"hotelNames": ["Hotel Adlon Kempinski Berlin"],
"maxReviewsPerHotel": 100,
"sortBy": "newest",
"travelerTypes": ["FAMILY"],
"reviewsFrom": "6 months"
}
One row per review.
| Field | Description |
|---|---|
review_id, review_url, review_title, review_text | The review and its link. |
rating, overall_rating | Overall rating in suns (1–6) and as the site stores it (0–1). |
recommendation, traveled_with, proofed_reservation | Recommends the hotel; couple, family, friends or single; tied to a confirmed booking. |
entry_date, travel_date | When the review was written and the month of the stay. |
user_first_name, user_age_group, user_hotel_review_count, user_picture_url, … | The reviewer as HolidayCheck shows them. |
owner_comment_text, owner_comment_entry_date | The hotel's reply. |
tour_operator, room_name, room_attributes | Tour operator, room booked, room type and view. |
topic_ids, topic_names, topic_sentiments, topic_quotes | Topics the review mentions, with sentiment and quotes. |
room_size, sleep, tastiness, food_variety, pool_cleanliness, … | Aspect ratings (0–1) the reviewer gave. |
service_opinion, room_opinion, restaurant_opinion, beach_opinion, secret_tip, … | Opinions per topic. |
hotel_id, hotel_name, hotel_url, hotel_stars, hotel_city, hotel_region, hotel_country, hotel_address, hotel_latitude, hotel_longitude | The hotel. |
hotel_rating, hotel_recommendation_rate, hotel_review_count, hotel_aspect_ratings | Hotel averages (suns 1–6, percent, count, per aspect group). |
sort, review_page, review_position, source_url, scraped_at | Where and when the review was read. |
Example row (from a test run, names changed, long texts shortened):
{
"review_id": "3f2b9c1e-7a4d-4e2b-9c8f-1d2e3f4a5b6c",
"review_url": "https://www.holidaycheck.de/hrd/pickalbatros-dana-beach-resort-hurghada/3f2b9c1e-7a4d-4e2b-9c8f-1d2e3f4a5b6c",
"review_title": "Tolles Hotel mit hervorragendem Service und schöner Umgebung Einfach ein Muss für Ägypten Urlauber.",
"review_text": "Einfach ein schönes Hotel \nEigener Sandstrand \nBester Service überhaupt. \nBeste Anlage die wir kennen.\nWir kommen gerne hier her.",
"rating": 6,
"overall_rating": 1,
"recommendation": true,
"traveled_with": "COUPLE",
"entry_date": "2026-09-15T13:55:55.000Z",
"travel_date": "2026-09-01",
"proofed_reservation": true,
"hotel_id": "1aa4c4ad-f9ea-3367-a163-8a3a6884d450",
"hotel_name": "Pickalbatros Dana Beach Resort - Hurghada",
"hotel_url": "https://www.holidaycheck.de/hi/pickalbatros-dana-beach-resort-hurghada/1aa4c4ad-f9ea-3367-a163-8a3a6884d450",
"hotel_stars": 5,
"hotel_city": "Hurghada",
"hotel_region": "Hurghada/Safaga",
"hotel_country": "Ägypten",
"hotel_rating": 5.64,
"hotel_recommendation_rate": 95.9,
"hotel_review_count": 28463,
"user_first_name": "Sabine",
"user_age_group": "FROM_46_TO_50",
"user_hotel_review_count": 4,
"owner_comment_text": "Liebe Sabine,\nes freut uns sehr, dass Sie sich die Zeit genommen haben, Ihre Eindrücke mit uns zu teilen…",
"tour_operator": "Coral Travel Switzerland",
"room_name": "Doppelzimmer Gartenblick",
"topic_names": [
"Animation",
"Strand",
"Sandstrand",
"Hotel",
"Pool"
],
"topic_quotes": [
"Die Animation war super wir haben viel mitgemacht.",
"Eigener Sandstrand",
"Das Wasser ist auch Top."
],
"room_size": 1,
"sleep": 1,
"tastiness": 1,
"food_variety": 0.8,
"service_opinion": "Das Personal ist immer freundlich.\nSehr hilfsbereit.\nWir hatten am Strand ein Strandkleid vergessen.\nHatten gedacht es wäre weg. Nein es…",
"room_opinion": "Die Betten sind gut.\nFernseher vorhanden.\nKaffee in Pulverform, Tee und Kaltgetränke waren immer aufgefüllt.\nJeden Morgen wurde sauber…",
"sort": "relevance",
"review_page": 1,
"review_position": 1
}
$0.80 per 1,000 reviews saved ($0.0008 per review), with no start fee. Platform usage (compute and proxy traffic) is billed on top and is small: about $0.002 per 1,000 reviews in our test runs (256 MB memory, datacenter proxy).
Example: 1,000 reviews ≈ $0.80 in review fees plus about $0.002 of usage. You can cap any run with Maximum reviews or a maximum total charge; the run stops cleanly when the cap is reached.
Is it legal to scrape HolidayCheck? The actor collects publicly shown reviews, the same information any visitor sees without logging in. Reviewers appear with the first name and age group HolidayCheck shows. Check HolidayCheck's terms and the GDPR before you store or publish personal data.
Do I need a login or a proxy? No login. Proxies are built in: datacenter exits by default; if HolidayCheck refuses them, the run switches to German residential exits on its own.
How many reviews can I get? All reviews a hotel has (popular resorts have tens of thousands). Set Maximum reviews per hotel to 0 for everything. Destination links can return hundreds of thousands, so set a limit there.
Why is a field empty? Reviewers answer different questions: aspect ratings and opinions appear only when the reviewer filled them in, older reviews have fewer fields, and many reviews have no hotel reply.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it (for example daily with Newest first), and connect webhooks or integrations. Every run can also be started and read through the API.
Coming from another HolidayCheck reviews tool?
The field names (review_id, review_title, overall_rating, service_opinion, …) follow the common snake_case layout, and the old input names urls, results_wanted and review_sort still work.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalHolidayCheck links
Hotel links from holidaycheck.de, .at or .ch: review pages (/hr/...), hotel pages (/hi/...), offer, media or Q&A pages of a hotel, single reviews (/hrd/...) and destination review pages (/dhr/... or /di/..., every hotel in that city, region or country). Sort and filters in a review link (traveler type, suns, age group, topics, room type, page) are kept. A bare hotel id works too.
hotelNamesarrayOptionalHotel names
Optional. Hotel names to look up on HolidayCheck, one per line, ideally with the city, e.g. 'Hotel Adlon Kempinski Berlin'. The best match is used and logged.
maxReviewsPerHotelintegerOptionaldefault 20Maximum reviews per hotel
How many reviews to save for each hotel, link or name. 0 = all reviews (up to 100,000).
maxReviewsintegerOptionaldefault 0Maximum reviews in total
Optional cap across all hotels in the run. 0 = no total cap.
includeHotelDetailsbooleanOptionaldefault trueAdd hotel details
Add the hotel's stars, city, region, country, address, coordinates, overall rating, recommendation rate, review count and aspect ratings to every review (one extra request per hotel).
sortByenumOptionaldefault "relevance"Sort reviews by
Order in which reviews are read. Relevance is HolidayCheck's own order; a sort in a pasted link is used unless you choose another order here.
travelerTypesarrayOptionalTraveler types
Only reviews from these traveler types. Empty = all.
minRatingintegerOptionalMinimum rating (suns)
Only reviews with at least this many suns (HolidayCheck rates 1 to 6).
maxRatingintegerOptionalMaximum rating (suns)
Only reviews with at most this many suns, e.g. 3 for critical reviews.
reviewsFromstringOptionalReviews written from
Only reviews written on or after this day: YYYY-MM-DD, or relative like '30 days', '6 months', '1 year'.
reviewsTostringOptionalReviews written until
Only reviews written on or before this day (YYYY-MM-DD).
recommendationenumOptionaldefault "any"Recommendation
Only reviews that recommend the hotel, or only those that do not.
onlyVerifiedStaysbooleanOptionaldefault falseOnly verified stays
Only reviews HolidayCheck marks as tied to a confirmed booking.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter exits work for HolidayCheck. If they are refused, the run switches to German residential exits on its own.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| review_id | string | null | HolidayCheck review id |
| review_url | string | null | Link to the review on HolidayCheck |
| review_title | string | null | Review headline |
| review_text | string | null | Main review text (the reviewer's overall opinion) |
| rating | number | null | Overall rating in suns, 1 to 6 |
| overall_rating | number | null | Overall rating as the site stores it, 0 to 1 |
| recommendation | boolean | null | Whether the reviewer recommends the hotel |
| traveled_with | string | null | COUPLE, FAMILY, FRIENDS or SINGLE |
| entry_date | string | null | When the review was written (ISO 8601) |
| travel_date | string | null | Month of the stay (YYYY-MM-DD, first of the month) |
| proofed_reservation | boolean | null | Review tied to a confirmed booking |
| ranking | number | null | HolidayCheck relevance score of the review |
| original_locale | string | null | Language the review was written in |
| returned_locale | string | null | Language of the returned text |
| hotel_id | string | null | HolidayCheck hotel id |
| hotel_name | string | null | Hotel name |
| hotel_url | string | null | Hotel page on HolidayCheck |
| hotel_stars | number | null | Hotel category (stars) |
| hotel_city | string | null | City |
| hotel_region | string | null | Region |
| hotel_country | string | null | Country (German name) |
| hotel_rating | number | null | Hotel's average rating in suns, 1 to 6 |
| hotel_recommendation_rate | number | null | Share of reviewers who recommend the hotel, in percent |
| hotel_review_count | number | null | Number of reviews of the hotel |
| hotel_aspect_ratings | object | null | Hotel averages per aspect group (hotel, room, service, location, food, sport) |
| hotel_address | string | null | Hotel address |
| hotel_latitude | number | null | Latitude |
| hotel_longitude | number | null | Longitude |
| user_id | string | null | Reviewer id |
| user_first_name | string | null | Reviewer's first name as shown |
| user_age_group | string | null | Reviewer age group, e.g. FROM_41_TO_45 |
| user_hotel_review_count | number | null | Hotel reviews the reviewer has written |
| user_has_picture | boolean | null | Reviewer has a profile picture |
| user_picture_url | string | null | Reviewer profile picture |
| user_has_public_profile | boolean | null | Reviewer profile is public |
| user_destination_id | string | null | Reviewer's home region id |
| user_rewards | array | null | Reviewer reward badges |
| owner_comment_text | string | null | Hotel's reply |
| owner_comment_entry_date | string | null | Date of the hotel's reply |
| tour_operator | string | null | Tour operator of the trip |
| room_name | string | null | Room booked |
| room_attributes | array | null | Room type and view |
| topic_ids | array | null | Topics the review mentions |
| topic_names | array | null | Topic names (German) |
| topic_sentiments | array | null | Sentiment per topic (aligned with topic_ids) |
| topic_quotes | array | null | Quoted passages per topic |
| review_categories | array | null | Categories the reviewer rated |
| sort | string | null | Sort order used |
| review_page | number | null | Review page on HolidayCheck (10 reviews per page) |
| review_position | number | null | Position in the hotel's review list |
| source_url | string | null | The link or hotel this review came from |
| scraped_at | string | null | When the review was saved |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Review | One saved HolidayCheck review. | $0.0008 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/holidaycheck-scraper').call({
"startUrls": [
{
"url": "https://www.holidaycheck.de/hr/bewertungen-pickalbatros-dana-beach-resort-hurghada/1aa4c4ad-f9ea-3367-a163-8a3a6884d450"
}
],
"maxReviewsPerHotel": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/holidaycheck-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/holidaycheck-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Type a hotel name (here Hotel Adlon Kempinski Berlin) and get its 10 newest HolidayCheck reviews with ratings, hotel reply and hotel details.
Families only, at most 4 suns, verified bookings, newest first: the 10 latest critical family reviews of a Hurghada resort.
Paste a destination link and get the newest reviews across every hotel on Mallorca, each with the hotel's stars, rating and location.
A holidaycheck.at review link sorted by newest: the latest reviews of an Austrian spa hotel with links on the .at site.
A review link filtered to solo travelers, worst rated first, without hotel details: the fastest way to read complaints.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.