Holidaycheck.de Hotels Scraper
Pricing
Pay per usage
Holidaycheck.de Hotels Scraper
Extract HolidayCheck hotel listings from destination hotel pages and destination landing pages. Collect hotel names, destination hierarchy, review summaries, selling points, pricing context, travel details, and offer metadata in a structured dataset that is ready for research and market analysis.
Pricing
Pay per usage
Rating
5.0
(2)
Developer
Shahid Irfan
Maintained by CommunityActor stats
2
Bookmarked
1
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
What does HolidayCheck Hotels Scraper do?
HolidayCheck Hotels Scraper extracts hotel listings from HolidayCheck (holidaycheck.de), Germany's leading travel review and booking platform. Give the Actor one or more HolidayCheck destination hotel URLs and it collects structured records for every hotel on those listing pages, including hotel identity, destination hierarchy, review scores, star ratings, pricing context, travel details, and offer metadata.
The Actor turns browsing a destination into a repeatable dataset. Instead of copying hotels from a browser, you paste a HolidayCheck URL, choose how many results you want, and download clean JSON, CSV, Excel, or XML rows for research, monitoring, and analytics.
Why use HolidayCheck Hotels Scraper?
- Reliable hotel datasets - Collect hundreds of hotel records from HolidayCheck destination pages without manual copy-paste.
- Automation-ready output - Export results to JSON, CSV, Excel, or XML, or push them into Google Sheets, webhooks, Make, or Zapier.
- Review and price context - Each record includes review ratings, recommendation rates, pricing, travel dates, and destination details that make the dataset useful on its own.
- Package and hotel-only searches - The Actor preserves the search mode already encoded in your HolidayCheck URL, so package and hotel-only listings stay accurate.
- Schedule and monitor - Run the Actor on demand or schedule repeat runs to track hotel supply and review signals for the same destinations over time.
What data can you extract from HolidayCheck?
| Field | Description |
|---|---|
name | Hotel name |
hotel_url | Direct HolidayCheck hotel detail URL |
stars | Star rating for the hotel |
destination_name | Destination shown on the source page |
destination_type | Destination type such as continent, country, region, or city |
review_rating | Overall review score |
review_recommendation_rate | Share of reviewers who recommend the hotel |
offer_price_per_person | Price per person for the current search context |
offer_currency | Currency of the returned price |
travelkind | Search mode such as package or hotelonly |
parents | Parent destination hierarchy |
coordinates | Latitude and longitude of the hotel |
offer | Dates, room, meal, airports, and travel details for the search context |
How to use HolidayCheck Hotels Scraper
- Open the Actor on Apify Store.
- Add one or more HolidayCheck hotel listing or destination URLs under
urls. - Set the maximum number of results with
results_wanted. - Optionally set
max_pagesto control how many result pages each URL may request. - Run the Actor.
- Download the dataset or connect it to your workflow.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | Array | Yes | - | One or more HolidayCheck URLs. Direct /dh/ hotel listing URLs are preferred; destination pages (/urlaub/, /ferien/, or short URLs such as /alpen) are resolved automatically. |
results_wanted | Integer | No | 20 | Maximum number of hotels to collect across all provided URLs. |
max_pages | Integer | No | 3 | Safety cap for how many result pages to request per URL. Each page contains up to 12 hotels. |
proxyConfiguration | Object | No | {"useApifyProxy": false} | Proxy mode. Use Apify Residential or your own residential proxy for reliable access. See the Proxy Configuration section below. |
Proxy Configuration
HolidayCheck restricts automated traffic, and datacenter IPs or repeated requests are often blocked with an error page instead of hotel data. Light testing from your own connection usually works, but a residential proxy is the reliable way to keep production and scheduled runs smooth.
| Mode | When to use |
|---|---|
None (default) | Quick local testing or small one-off runs from your own connection. |
| Apify Residential | Recommended for production, scheduled, and large runs. Residential IPs look like real visitors, so blocks are rare. |
| Custom residential | Bring your own residential or ISP proxy pool. |
The recommended setup uses Apify Residential proxy:
{"urls": [{"url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=package"}],"results_wanted": 20,"max_pages": 3,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
To use your own proxy pool, set proxyConfiguration.proxyUrls to a list of proxy server URLs.
How proxy handling works
- Stable IP per destination - Each destination is processed through one consistent proxy connection, so the whole run for that destination looks like a single visitor session.
- Automatic recovery on blocks - If a request is blocked or rate limited, the Actor retries with a fresh proxy connection and refreshes the page context automatically. Runs recover on their own.
- No extra setup - Enable the proxy mode in the input and the Actor manages IP rotation and retries for you.
Output Data
Each dataset item can contain the following fields:
| Field | Type | Description |
|---|---|---|
id | String | HolidayCheck hotel ID |
name | String | Hotel name |
hotel_url | String | HolidayCheck hotel detail URL |
stars | Number | Hotel star rating |
stars_source | String | Source of the star classification |
destination_id | String | Destination ID from the source page |
destination_name | String | Destination name |
destination_type | String | Destination type such as continent, country, region, or city |
destination_page_path | String | Destination path on HolidayCheck |
listing_url | String | Listing page used for extraction |
source_url | String | Original URL provided as input |
locale | String | Locale of the extracted page |
travelkind | String | Search mode such as package or hotelonly |
position | Number | Position in the collected dataset |
coordinates | Object | Latitude and longitude |
parents | Array | Parent destination hierarchy |
fingerprint_tags | Array | Positive fingerprint tags returned for the hotel |
fingerprint_filters | Array | Fingerprint filters attached to the hotel |
fingerprint_scores | Object | Fingerprint scores keyed by fingerprint name |
review | Object | Rating, recommendation rate, ranking, trend, counts, and selling points |
latest_award | Object | Latest known HolidayCheck award information |
campaigns | Array | Campaign tags attached to the listing |
should_index | Boolean | Indexing flag returned for the hotel |
offer | Object | Price, dates, room, meal, airports, cashback labels, flights, and travel details for the current search context |
Usage Examples
Scrape a single destination
Collect the first hotels from a HolidayCheck destination hotel listing:
{"urls": [{"url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=package"}],"results_wanted": 20,"max_pages": 3}
Scrape multiple destinations
Collect hotels from more than one destination in a single run:
{"urls": [{"url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=package"},{"url": "https://www.holidaycheck.de/dh/hotels-deutschland/f85228c2-8b9d-4be8-aa0f-ca7a90ffcbad?duration=7&rooms=a-a&travelkind=hotelonly"}],"results_wanted": 48,"max_pages": 2}
Hotel-only search context
Keep the hotelonly search mode from the input URL to collect room-rate listings:
{"urls": [{"url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=hotelonly"}],"results_wanted": 12,"max_pages": 2}
Destination page input
Start from a destination page and let the Actor resolve the matching hotel listing:
{"urls": [{"url": "https://www.holidaycheck.de/urlaub/afrika"},{"url": "https://www.holidaycheck.de/ferien/afrika"}],"results_wanted": 24,"max_pages": 2}
Sample Output
{"id": "c15c4047-b815-3282-8366-82c036d575c3","name": "Pickalbatros Jungle Aqua Park Resort - Neverland Hurghada","hotel_url": "https://www.holidaycheck.de/hi/pickalbatros-jungle-aqua-park-resort-neverland-hurghada/c15c4047-b815-3282-8366-82c036d575c3","stars": 4,"destination_id": "7de062f4-676c-3e2b-ad4a-12fd69afbeb6","destination_name": "Afrika","destination_type": "CONTINENT","destination_page_path": "/urlaub/afrika","listing_url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=package","source_url": "https://www.holidaycheck.de/dh/hotels-afrika/7de062f4-676c-3e2b-ad4a-12fd69afbeb6?duration=7&rooms=a-a&travelkind=package","locale": "de-DE","travelkind": "package","position": 1,"review_rating": 5.6486,"review_recommendation_rate": 0.9701,"offer_price_per_person": 717,"offer_currency": "EUR","coordinates": {"longitude": 33.9289,"latitude": 27.2925},"parents": [{"id": "77aeb81d-a0d3-3544-92df-d355846f7c82","name": "Hurghada","destination_type": "CITY"}],"review": {"rating": 5.6486,"recommendation_rate": 0.9701,"count_unarchived": 12860},"offer": {"type": "package","price_per_person": 717,"currency": "EUR","start_date": "2026-09-08","end_date": "2026-09-15","room_name": "Doppelzimmer","meal_type": "GT06-AI","departure_airport": "DUS","destination_airport": "HRG"}}
Tips for Best Results
- Prefer direct hotel listing URLs - Use
/dh/destination hotel URLs when possible. They preserve the exact search context already configured on HolidayCheck. - Keep result size practical - Start with
results_wanted: 20for a quick validation run, then increasemax_pagesonly when you need deeper pagination. - Use search-specific URLs - If you care about a specific travel context, use a URL that already contains the right dates and travel mode. The Actor keeps that context when collecting offer details.
- Use a residential proxy for production runs - HolidayCheck restricts automated traffic, so use Apify Residential or your own residential proxy when running scheduled or large jobs.
- Check for missing fields - HolidayCheck does not return every field for every hotel or search context. Missing fields usually reflect what the source page publishes, not an Actor failure.
Integrations
Connect your hotel dataset with:
- Google Sheets - Export hotel lists for review and comparison.
- Webhooks - Trigger downstream workflows after each run.
- Make or Zapier - Connect results to no-code automations.
- API - Access datasets programmatically from your own systems.
Export formats
- JSON - For APIs and engineering workflows.
- CSV - For spreadsheet and reporting workflows.
- Excel - For business sharing and analysis.
- XML - For structured system integrations.
Frequently Asked Questions
Can I export HolidayCheck data to CSV or Excel?
Yes. Apify datasets can be downloaded in CSV, Excel, JSON, XML, and other supported formats.
Do I need a proxy to run this Actor?
A residential proxy is strongly recommended for reliable results. HolidayCheck restricts automated traffic and blocks datacenter IPs. The Actor runs without a proxy for light testing, but production and scheduled runs should use Apify Residential proxy or your own residential proxy pool.
Can I run this Actor on a schedule?
Yes. You can schedule the Actor in Apify Console to refresh data hourly, daily, weekly, or at another interval.
Which HolidayCheck URLs work best?
Direct /dh/ destination hotel listing URLs work best. Destination pages under /urlaub/ and /ferien/, and short destination URLs such as /alpen, are also supported and are resolved to the matching hotel listing automatically.
Can I use more than one URL in a single run?
Yes. Add multiple HolidayCheck URLs to urls, and the Actor will process them in order until it reaches the requested result limit.
Does the Actor support package and hotel-only searches?
Yes. The Actor keeps the search mode that is already encoded in the provided URL, so both package and hotelonly listings are collected correctly.
Why do some records contain more fields than others?
HolidayCheck does not return the same data for every hotel and every search context. Empty values are removed instead of being returned as null.
Is this Actor suitable for non-technical users?
Yes. The Actor can be run from Apify Console with form-based inputs, and the output can be downloaded without writing code.
Is it legal to scrape HolidayCheck?
Scraping public web data can be legal, but you are responsible for complying with applicable laws, website terms, and privacy rules.
Related Actors
Support
For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.
Legal Notice
This Actor is designed for legitimate data collection from publicly available sources. Users are responsible for using the data responsibly and complying with applicable laws and website terms.