Holidu Whitelabels
Welcome to the developer hub for the Holidu Whitelabel!
On this page you will learn how to integrate the Holidu whitelabel into your website. The organization who will use the whitelabel is referred to as "partner", this could be the company we have the contract with directly, or a technical agency working for this company.
At the top of this website you'll find a navigation, which will bring you to the developer hub for building an API with Holidu. This has no relevance with the Whitelabel, therefore please stay on this page (https://developer.holidu.com/page/holidu-whitelabels)
Table of Contents
- 1 - Whitelabel options
- 2 - Details around the expected work
- 3 - Configuring the domain
- 4 - Design
- 5 - Adjustment of Quick Search and other (deep-)links on the website
- 6 - GTM Tracking
- 7 - Inventory API
1. The whitelabel options
The whitelabel comes in three forms:
- Digital Starter
- Whitelabel Standard
- Whitelabel Pro
Technically the "Digital Starter" and the "Standard", are the same. Only the payment conditions differ, which has no influence on the technical part.
Whitelabel Digital Starter or Whitelabel Standard | Whitelabel Pro | |
---|---|---|
Domain | Subdomain Holidu (e.g. partner.holidu.de) | Subdomain Partner (e.g. book.partner.de) or Reverse Proxy (e.g. www.partner.de/book) |
Design | Header & Footer provided by Holidu + Logo & colors of the partner are included in the whitelabel |
Header & Footer created & hosted by partner + Logo & colors of the partner are included in the whitelabel |
Adjustment of the quick search on the partner website | Done by the partner, based on the provided documentation |
Done by the partner, based on the provided documentation |
Deeplinking | Available, including documentation | Available, including documentation |
GTM Tracking | Not Available | Available, is to be added to the header provided by the partner |
Inventory API | Access to the Inventory API from Holidu, where the partner can connect and load inventory into their CMS | Access to the Inventory API from Holidu, where the partner can connect and load inventory into their CMS |
Guest cards & certifications | Not supported | This functionality can be booked in addition. |
Indexation of Whitelabel content | The Whitelabel content is not being indexed. In order to index content, please refer to the Inventory API | The Whitelabel content is not being indexed. In order to index content, please refer to the Inventory API |
1.1. Effort related to the whitelabel implementation for the partner or their agency.
Work to be expected
Please examine this and the next chapter carefully. It will help you plan the work and if you are an agency, it will help you to draft an offer to your customer.
For agencies: please bear in mind, that we don't take responsibility for what you include in the estimation for your work and the amount of effort related to it - as an agency you are still responsible for evaluating what will all be needed to implement the whitelabel and make your customer happy.
Based on the chosen product and the desires that you as a partner have (or your customer, in case you are an agency), different work is to be expected. The table provides a high level overview, the next chapter provides more details for each part.
Whitelabel Digital Starter or Whitelabel Standard | Whitelabel Pro | |
---|---|---|
Domain | No effort from partner needed | Setup of DNS entries, update cookie banner and for reverse proxy: configuration nginx |
Design | No effort from partner needed | Header & Footer created & hosted by partner, based on the requirements specified by Holidu on this page |
Adjustment of the quick search on the partner website | Done by the partner, based on the provided documentation |
Done by the partner, based on the provided documentation |
Deeplinking | Done by the partner, based on the provided documentation |
Done by the partner, based on the provided documentation |
GTM Tracking | Not Available | Script is to be added to the header, provided by the partner. Most likely also involves work setting up Google Analytics on side of the partner |
Inventory API | Setting up the connection to load inventory from the API into the CMS to be done by the partner, including scripts to update & maintain the inventory. Most likely additional work is needed on the side of the partner to update their website with the new content in their CMS. |
Setting up the connection to load inventory from the API into the CMS to be done by the partner, including scripts to update & maintain the inventory. Most likely additional work is needed on the side of the partner to update their website with the new content in their CMS. |
Guest cards & certifications | Not Available | No effort from partner needed |
Indexation of Whitelabel content | Not Available | Not Available |
In the chapter below you will find more details around the expected work
2. Details around the expected work
2.1 Domain
In case of the Digital Starter or Whitelabel Standard:
- No action is needed by you, the partner
In case of whitelabel Pro:
- In case of a subdomain: Together with you, the partner, we need to setup the DNS entries to support the page on the side of the partner.
- The list of cookies provided by Holidu (documentation below) is to be added to the cookie banner by you, the partner. Also the consent manager has to come from you.
- In case of Reverse Proxy, the configuration in nginx is to be setup by you, the partner (documentation provided below).
2.2 Design
In case of the Digital Starter or Whitelabel Standard:
- No action is needed by you, the partner
In case of whitelabel Pro:
- When it is desired that the header & footer from you, the partner, are included in the whitelabel, these need to be seperately hosted by you, the partner, and these need to be delivered according to the technical specifications listed below. Please read these carefully, as for instance the header & footer need to be scoped and this can require some work from your side. Requirements header & footer
2.3 Adjustment of the quick search & other (deep)links on the website
In case of the Digital Starter or Whitelabel Standard:
- The quick search needs to be updated by the partner, so that it links to the whitelabel and that the search is translated into the right parameters that the whitelabel recognizes (documentation is found below).
- Any other (deep)links on the website need to be adjusted by the partner so that they redirect to the new whitelabel (documentation is found below). The partner will need to identify on which pages the links are to be updated and then update these.
In case of whitelabel Pro:
- The same as above.
2.4 GTM Tracking
In case of the Digital Starter or Whitelabel Standard:
- GTM Tracking is not available here. The partner will receive predefined PDF & CSV reports, but no data in GTM.
In case of whitelabel Pro:
- The partner adds the GTM script into the header, that the partner provides. In case the partner decides not to add a header and uses the Holidu header, the GTM container can be provided to Holidu which then adds it to their script. In case additional Gtags or tracking proxies are desired to be added, the partner must provide the script that is to be included in the whitelabel.
2.5 Inventory API
In case of the Digital Starter or Whitelabel Standard:
- The Inventory API can be used to load inventory into the CMS of the partner. The partner will need to set up the connection based on the documentation provided below. Important to understand is that the partner is bound to some conditions using this API.
- The partner is only allowed to index inventory that "belongs to you", in other words, with which you, the partner, have a contractual agreement with. Other inventory can not be made indexable by search engines as stated in the contract between Holidu and you, the partner. In case the partner would like to index the inventory that belongs to them, the partner should set this up themselves.
- The partner should make sure the inventory is regularly updated, as stated in the contract between Holidu and you, the partner, so that any changes in description and other property related information, are kept up to date. For this we use the variable "updatedSince", so not all inventory has to be redownloaded everyday. The partner needs to configure a script for this themselves, and write a script that updates information on the website when needed.
- The partner should make sure that inventory that has gone offline, should be removed from the CMS and the partner's website. For this the partner needs to configure a script that identifies, when a property is not provided via the API anymore and then deletes it from the CMS & website.
- The API has a rate limit which is described later on this page. In the beginning the requests have to be spread, so that all of the inventory can be downloaded. Partners who have a smaller amount of inventory (usually <10k) will most likely not have an issues with the rate limit.
In case of whitelabel Pro:
- The same as the above.
2.6 Guest cards & Certifications
In case of the Digital Starter or Whitelabel Standard:
- This is not supported.
In case of whitelabel Pro:
- This is an additional option that can be booked with Whitelabel Pro. This means that this is not always available in Whitelabel Pro.
- If it is chosen, the only effort that is needed is to provide us with the logo + description text for each of the guest cards & certifications. The rest of the work will be done by Holidu.
The remainder of this page describes the technical details of the elements described earlier.
3. Configuring the Domain
3.1 Hosting under a Holidu subdomain
This is the integration that is being used for "Digital Starter" and "Whitelabel Standard"
Example: alps-region.holidu.com
No action is needed by the partner to set up this domain, besides providing the first part of the domain name [provided_by_the_Partner].holidu.com.
About hosting under a Holidu subdomain
Advantages
- Easy setup and management: The DNS entries and SSL certificates are entirely with Holidu.
- Load balancing & hosting: Since we host the website completely, it is faster and we can quickly scale automatically in case of sudden load peaks in website visits. (e.g. for short posts on news channels, especially TV.
- SSL certificates do not expire: These are automatically renewed by Holidu systems.
Particularly suitable when there is little technical support from an agency partner and a set-up needs to be very quick and cost-effective.Disadvantages
- The perception of one's own brand may be weaker.
3.2 Hosting under a partner subdomain
This is one of the integration options that can be used when Whitelabel Pro is chosen.
Example: book.alps-region.com
Action needed from the partner:
- Provide the first part of the domain name [provided_by_the_partner].[here comes the partner website].com
- e.g. book.alps-region.com
- Need to set up the DNS entries together with Holidu to setup the hosting
- As the website is owned by you, the partner, your cookie banner will be shown and we need to add functional cookies from Holidu to your cookie banner. Holidu will turn their cookie banner off.
3.2.1 Cookies to be added to the partner's cookie banner
One of the service providers that is to be added, is Google reCAPTCHA (as essential service). In addition, the following cookies are to be listed:
Cookiename | Example value | Type | Expiry date |
---|---|---|---|
SHOULD_DISPLAY_NEWSLETTER_POPUP | 1 | Functional | 365 days |
HAS_CLOSED_NEWSLETTER_NOT_LISTPAGE | 1 | Functional | 365 days |
HAS_SEEN_APP_TRAFFIC_OVERLAY | 1 | Functional | 100 days |
searchPathname | Bayern--Deutschland | Functional | 24 hours |
_lo | de-DE | Functional | 365 days |
_cu | EUR | Functional | 365 days |
userId | 11a1a11-1111-1111-1aa1-111a11aa1111 | Functional | 365 days |
uuid | v_DjyhLVoJ | Functional | 365 days |
historyFiltersKeys | 1-1 | Functional | 24 hours |
_historyFilter | 1-1 | Functional | 24 hours |
PLAY_LANG | de-DE | Functional | SESSION |
About hosting under your partner subdomain
Advantages
- Load Balancing & Hosting: Since we host the website completely, it is faster and we can quickly scale automatically in case of sudden load peaks in website visits. (e.g. for short features on news channels, especially TV).
- SSL certificates do not expire: These are automatically renewed by the Holidu systems. (as long as all DNS entries were set up correctly at the beginning)
- Strong perception of own brand
Disadvantages
- Setting up the hosting solution is a little more time-consuming than using a Holidu subdomain (a few hours). Several DNS entries have to be added.
3.3 Hosting using Reverse Proxy
This is one of the integration options that can be used when Whitelabel Pro is chosen.
Example: www.alps-region.com/book
Action needed from the partner:
- Provide the path for the domain www.alps-region.com/[here_comes_the_path]
- Need to setup the nginx configuration as described below under 3.3.1., and maintain this overtime when the whitelabel continues to develop itself
- Intensive testing is needed to ensure that no consent manager whitelisting issues arise and other domain related complexities remain. For this subsequent time/effort needs to be planned
- As the website is owned by you, the partner, your cookie banner will be shown and we need to add functional cookies from Holidu to your cookie banner. Holidu will turn their cookie banner off.
- You can find the list of cookies under 3.2.1. List of Cookies
3.3.1 Reverse Proxy Configuration in nginx
The configuration described below has to be setup. In this example the path was "/book". In case another path is chosen, /book has to be replaced with the chosen path. The part [INTERNAL DOMAIN NAME] will be provided by holidu. (e.g. [dmo.holidu.com])
Whenever on the whitelabel new pages are added, this configuration needs to be updated by the partner.
server {
listen 8080;
server_name localhost;
location /book {
access_log off;
proxy_pass https\://[INTERNAL DOMAIN NAME]/;
}
location /api {
access_log off;
proxy_pass https\://[INTERNAL DOMAIN NAME]/api;
}
location /assets {
access_log off;
proxy_pass https\://[INTERNAL DOMAIN NAME]/assets;
}
location / {
return 308 /book/s$is_args$args;
}
location ~ ^/s$ {
return 308 /book/s$is_args$args;
}
location ~ ^/s/(._)$ {
return 308 /book/s/$1$is_args$args;
}
location ~ ^/d/(._)$ {
return 308 /book/d/$1$is_args$args;
}
location ~ ^/c/(._)$ {
return 308 /book/c/$1$is_args$args;
}
location ~ ^/payment/(._)$ {
return 308 /book/payment/$1$is_args$args;
}
location ~ ^/booking/(._)$ {
return 308 /book/booking/$1$is_args$args;
}
location ~ ^/pending-booking/(._)$ {
return 308 /book/pending-booking/$1$is_args$args;
}
location ~ ^/help(._)$ {
return 308 /book/help$1$is_args$args;
}
location ~ ^/redirect/(._)$ {
return 308 /book/redirect/$1$is_args$args;
}
location ~ ^/request/(._)$ {
return 308 /book/request/$1$is_args$args;
}
location ~ ^/go/(._)$ {
return 308 /book/go/$1$is_args$args;
}
location /gtc {
return 308 /book/gtc$is_args$args;
}
location /imprint {
return 308 /book/imprint$is_args$args;
}
location /privacy {
return 308 /book/privacy$is_args$args;
}
location /legal-info {
return 308 /book/legal-info$is_args$args;
}
}
About hosting using reverse proxy
Advantages
- Strong perception of own brand
Disadvantages
- The set-up of the hosting solution is more complex and test-intensive.
- Regular adjustments by your hosting or agency partner are necessary, as the Holidu booking platform is constantly being further developed, this may entail additional costs.
- Load peaks in website visits cannot be covered 100% by the scaling of the Holidu platform, as the reverse proxy / load balancer is provided by your hosting partner.
4. Design
4.1. Colors & Logo's
Colors
We will need some colors to set up the whitelabel in the desired CI. You can try around with the different color codes in our playground. Important: Any bookings made here, are REAL bookings.
https://playground.holidu.de/s
Click "copy color values" and the colors are coped and can be shared with us.
Logo's
We need your logo 6 times:
- 1x Logo in svg (your normal dimensions)
- 5x Logo in png
- 1x with your normal dimensions
- 1x in 76x76
- 1x in 152x152
- 1x in 57x57
- 1x in 120x120
4.2. Header & Footer
For the Whitelabel Pro, we can include your header & footer (this is not a must, you can also choose to still take the Holidu header & footer). Important is, that the header & footer have to be provided in a specific format, for us to be able to use it. We will not re-build the header & footer for you.
Important:
- The header & footer are hosted by you, the partner and in two elements. This means we will have 2 Html codes.
- The header & footer have to adhere to the requirements listed below.
You can try whether the header & footer function as you like them to, in our playground. Important: any bookings made on this page, are real bookings.
https://playground.holidu.de/s
4.2.1. Requirements for header & footer
Requirements header & footer
These requirements are to be fulfilled, and can cost some considerable resources and time investment. If not planned properly, this can delay the go-live of the whitelabel or cause unexpected costs from your technical agency!
- The header & footer are provided in two separate HTML codes, which are not connected to each other.
- The CSS & Javascript is inserted inline into the HTML code.
- The HTML should only contain the necessary elements, i.e. without < html>, < body> etc. tags.
- The header cannot be made "sticky", once the user scrolls down it should not be visible anymore, otherwise it collides with existing elements.
- The JavaScript does not add global variables and functions and is contained in the header or footer elements. Ideally, there is no JavaScript or only a very limited one.
- The sources (HTML and possibly others) of these elements are requested from the partner's own servers. The response time and uptime should be fast and stable. Holidu will cache the data for a few minutes to hours to ensure stable operation and to compensate for peak loads.
- The HTML code should contain the Cookie Consent banner, in a < script> tag.
- The following exceptions have to be added: "holidu.com", "holidu.de", "adyen.com", "maps.googleapis.com", "sentry.io", "gstatic.com", "polyfill.io", "adyen.com", "paypal.com", "paypalobjects.com", "https://www.google.com/recaptcha/enterprise.js"
- The HTML code should contain the GTM container, in a < script> tag.
You can try whether the header & footer function as you like them to, in our playground. Important: any bookings made on this page, are real bookings.
https://playground.holidu.de/s
4.2.2. Header
The header can contain elements that appear in the look and feel of the rest of the website. This gives the user a sense of continuity and makes the whitelabel appear more integrated. Ideally, the logo, colors and navigation elements are consistent with the rest of the website.
4.2.3. Footer
The footer can contain elements that fit in with the look and feel of the rest of the website, and ideally is similar to the other footers on the rest of the website.
5 Adjustment of the Quick Search and other (deep)links on the website
5.1 Construction of the search URLs
The following link:
Consists of:
https://buchen.alpenregion.de --> The domain
/s --> Path to search
/Kampen-(Sylt)--Nordsee--Deutschland --> Region/Travel destination
?checkin=2023-06-05&checkout=2023-06-11&adults=2&children=2&childrenAges=3%2C5 --> Search parameters
- All search parameters are optional.
- Region / Travel destination
- If the entire inventory in the partner's region is to be searched, the red part can be removed.
- If a search is to be made locally rather than through the entire inventory, a drop-down selection can facilitate the search and make important locations easy to find even for people without detailed knowledge of the region.
Dropdown value | Search entry Holidu |
---|---|
North Sea | North-Sea--Germany |
Nordfriesland | Nordfriesland--Germany |
Amrum | Amrum--North-Sea--Germany |
Kampen | Kampen-(Sylt)--North-Sea--Germany |
5.2 Search parameters
5.2.1. Search with fixed travel dates
To search with fixed travel dates, the parameters checkin and checkout must be specified.
5.2.2. Search with flexible travel dates
To search with flexible travel dates, the parameters dateRanges and duration must be specified. Optionally, the parameter checkinWeekdays can be specified to determine the day of the week of arrival.
Example 1 - One week in July:
?dateRanges=2023-07-01~2023-07-31&duration=7
Example 2 - A weekend (Fri. - Sun.) in July:
?dateRanges=2023-07-01~2023-07-31&duration=2&checkinWeekdays=5
5.2.3. Overview of the most important search parameters
Parameter | Format | Description |
---|---|---|
Search with fixed travel dates | ||
checkin | Date yyyy-mm-dd | Arrival day Example: 2023-06-05 |
checkout | Date yyyy-mm-dd | Departure day Example: 2023-06-07 |
Search with flexible travel dates | ||
dateRanges | Date / Period yyyy-mm-dd~yyyy-mm-dd | Period (Start day ~ End day) Example: 2023-07-01~2023-07-31 |
duration | Whole number (Integer) | Number of travel days Example: 7 |
checkinWeekdays | Whole number (Integer) | Week day of arrival Mo: 1, So: 7 |
Travellers / Rooms | ||
adults | Whole number (Integer) | Number of adults Example: 2 |
children | Whole number (Integer) | Number of children Example: 2 |
childrenAges | Whole number (Integer) comma separated | Age of the children Example: 7 Example comma-separated for multiple ages: 7,9 (Value must then be urlencoded 7%2C9) |
bedrooms | Whole number (Integer) | Number of bedrooms Example: 2 |
Search categories | ||
propertyType | string | Type of property -> example: propertyType=VACATION_HOME Example comma-separated for multiple property types (Value must then be urlencoded %2C) propertyType=VACATION_HOME%2CVACATION_APARTMENT Potential property types that can be used are listed here: https://developer.holidu.com/page/holidu-whitelabels#7311-potential-propertytype-responses |
rating | Whole number (Integer) | Filter on rating of e.g. 6 (60) stars or more . Only works for the ratings of 60, 70, 80 and 90 --> Example: rating=90 Example: rating=60 |
withoutRating | true | Filter on properties without any rating -> Example: withoutRating=true |
amenities | string | Available amenities -> Example: amenities=SAUNA Example comma-separated for multiple amenities (Value must then be urlencoded %2C) amenities=INTERNET%2CSAUNA |
propertyViews | string | view from the property -> propertyViews=VIEW_SEA propertyViews=VIEW_LAKE propertyViews=VIEW_MOUNTAIN |
onlyCancellable | true | Flexible cancellation options available -> Example: onlyCancellable=true |
toSkiArea | Whole number (Integer) | Max Distance in meters to ski lift (1km, 3km or 10km) toSkiArea=1000 |
toBeach | Whole number (Integer) | Max Distance in meters to beach (1km, 3km or 10km) toBeach=3000 |
toCityCenter | Whole number (Integer) | Max Distance in meters to city center (1km, 3km or 10km) toCityCenter=10000 |
toCoast | Whole number (Integer) | Max Distance in meters to coast (1km, 3km or 10km) toCoast=1000 |
toLake | Whole number (Integer) | Max Distance in meters to lake (1km, 3km or 10km) toLake=1000 |
regionIds | Whole number (Integer) | Combine specific areas in 1 search, using the regionIds assigned by Holidu --> regionIds=13386 Example comma-separated for multiple regions (Value must then be urlencoded %2C) regionIds=13386%2C12726 |
sustainability=GREEN_PROPERTY | string | Filter on properties with the "sustainability label" --> sustainability=GREEN_PROPERTY |
minPrice=[number]&maxPrice=[number] | Whole number (Integer) | Search based on Price. Only works (1) using preditermined combinations of parameter at the same time AND (2) when travel dates are selected. minPrice=0&maxPrice=50 minPrice=0&maxPrice=100 minPrice=0&maxPrice=150 minPrice=0&maxPrice=200 minPrice=200 (this is one exception) |
5.3. Deeplinking
General note: The easiest way to generate deep links is to use the search function on the Whitelabel.
All parameters that can be filtered in the search such as location/region, exact travel period, flexible travel period, price category, type of accommodation or any equipment features can be filtered on the page. All parameters are contained in the URL, so it can simply be copied from the address bar of the web browser and integrated into the CMS.
If the Whitelabel is already being tested, you can use it to view the results in your region with selected sources. If the whitelabel is not yet available and you would like to prepare yourself, you can use www.holidu.com. Please note that holidu.com may have additional sources and the region may be set up differently based on decisions made with the partner. Accordingly, it cannot be guaranteed that you will get the same number of results on the whitelabel for the same search.
5.3.1. Example 1 - Period and duration
- Search criteria
- Accommodation available for 1 week in July
- Deeplink
- Used parameters
- dateRanges (Period)
- duration (in days)
5.3.2. Example 2 - Accommodation for guests with pets
- Search criteria
- Accommodation with the filter "Pets allowed”
- No restriction on travel dates
- Deeplink
- Used parameters
- amenities (Filter value PETS_ALLOWED)
5.3.3. Example 3 - A couples weekend near a ski resort
- Search criteria
- from 02.12. - 14.04. on any weekend from Friday - Sunday.
- Accommodation with the filter "Distance ski area or ski slope" with the value "less than 3km".
- For 2 adults
- Accommodation with sauna
- Deeplink
- Used parameters
- dateRanges (period)
- duration (in days)
- checkinWeekdays (Day of check-in, in the example 5 for Friday)
- adults (Number of adults)
- amenities (Filter value SAUNA)
- toSkiArea (Distance from 3000m to the ski area)
6. GTM Tracking
6.1. How to include GTM
GTM Tracking is available in the Whitelabel Pro version. When a header & footer are provided by the partner, the GTM code snippet is to be included there. See Requirements Header & Footer.
In case the partner decides not to add a header and uses the Holidu header, the GTM container can then be provided to Holidu which then adds it to their script. In case additional Gtags or tracking proxies are desired to be added, the partner must provide the script that is to be included in the whitelabel.
6.2. GTM Events
We commit events to the datalayer sing the GA4 standards. Important to note is that we don't have a shopping cart logic in the whitelabel and therefore don't have the add to cart and remove from cart events. Please note, that we do not support any additional custom events.
Below the events are described that we provide
- view_item_list event
- view_item event
- Begin_checkout event
- purchase event
6.2.1. View_item_list Event

{
event: 'SearchPage-Listing',
...queryParams,
content_ids: <offer-ids>, All offers
content_type: 'hotel',
offers: <offer-ids>, First 3 offers
num_adults: <adults-number>,
num_children: <kids-number>,
checkin_date: <checkin-date>,
checkout_date: <checkout-date>,
isDesktop: <is-desktop>,
}
6.2.2. View_item Event

{
event: 'viewcontent',
content_ids: <offer-id>,
content_type: 'hotel',
suggested_hotels: <first-5-recommended-offers>,
num_adults: <adults-number>,
num_children: <kids-number>,
checkin_date: <checkin-date>,
checkout_date: <checkout-date>,
}
6.2.3. begin_checkout Event

{
event: 'initiatecheckout',
content_ids: <offer-id>,
content_type: 'hotel',
num_adults: <adults-number>,
num_children: <kids-number>,
checkin_date: <checkin-date>,
checkout_date: <checkout-date>,
}
6.2.4. purchase Event

{
event: 'purchase',
content_type: 'hotel',
content_ids: <offer-id>,
checkin_date: <checkin-date>,
checkout_date: <checkout-date>,
num_adults: <adults-number>,
num_children: <kids-number>,
currency: <currency>,
value: <price>,
}
7. Inventory API
Indexation of content is only allowed for properties which you as a partner own
All property information is bound to legal conditions. Based on the legal contract between Holidu and you, the partner, you will only be allowed to index information from inventory that you also "own", in other words inventory with which you have a contract.
Making other inventory that is provided through the API indexable, is a breach of contract.
Please keep the following into account
- You have the responsibility of keeping the Token confidential
- As inventory can go offline at some point, you'll need to setup a process of identifying inventory that is outdated and then exclude this property id from your CMS, and delete it.
7.1. Apartment API for import into Content Management Systems (CMS)
7.1.1. Offer search
Provides access to Holidu’s inventory of apartments via a search-like interface that is optimized for exhaustive inventory exports.
The consumer of the endpoint is expected to retrieve the inventory via multiple REST calls. REST calls are paginated; they have a fixed page size of 50, and a maximum page index of 199. Therefore, the maximum number of apartments that an API consumer can retrieve for any given time frame is 9.950.
The consumer can filter for results that meet recency requirements, e.g. by asking to only see apartments that have been updated within the last day.
For technical reasons, returning more than 9.950 apartments with a single paginated chain of requests is not possible. To import inventories larger than that, we suggest choosing a smaller time interval and more frequent import jobs. A valid example strategy would be to import apartments updated within the last 24 hours every night.
Since our internal indexation processes cover all apartments eventually, this will make sure that updated apartments are not dropped.
7.1.2. Example request
GET https://api.holidu.com/rest/v6/search/dmo/v1/offers?domain=partner.de&locale=de-DE&updatedSince=2023-05-12
Authorization
Connection keep-alive
Accept application/json
Accept-Encoding gzip, deflate, br
?domain=partner.de has to be exchanged with the website of the partner.
When you have multiple domains (.de and .es for instance) the credentials will work the same, but to get the Spanish content you must change:
- The domain to your .es domain
- The "&locale=de-DE" to &locale=es-ES"
7.1.2. Query parameters
Parameter | Type | Description | Example | Required |
domain | string | The name of the domain that the request originates from. | yourdomain.de | yes |
updatedSince | string with date format yyyy-MM-dd | Filter for apartments that have been updated since the specified point in time. Requesting updatedSince with a value that is in the future will result in a valid response with response code 200 without apartments. Using a malformed string will result in a response with response code 500. | 2023-05-12 | no (defaults to “no restrictions”) |
pageIndex | integer | The result page number. pageIndex starts counting at 0. The highest value that will return results is numberOfPages (from the response body) - 1. Requesting a page index that is >= numberOfPages will result in a valid response with response code 200 which contains no apartments. Requesting a pageIndex that is below 0 will result in a response with response code 400. Requesting a pageIndex that is above 200 will result in a response with response code 400. | 2 | no (defaults to 0, i.a. the first page) |
locale | string | Target language that text fields will be retrieved as. | de-DE | yes |
7.2. Security
The combination of “domain” and a token serves as credentials.
The domain is a required query parameter.
The token is sent via the “Authorization”-header.
Credentials are evaluated per request.
7.3. Responses
7.3.1. Response 200
Search was successful and contains 0-50 results.
Example response body
Note: The example response body’s apartments field has been shortened. In a real response with a second page, it would have 50 entries.
Zipcodes/postcode & city
Many partners don't send us the zipcode or city, and therefore we are not able to pass this information on to you. The "location" field is the unique identifier which contains the coordinates of the property.
{
"totalNumberOfPages": 2,
"nextPage": "/rest/v6/search/dmo/v1/offers?domain=dmo-domain.com&locale=de-DE&updatedSince=2023-05-12&pageIndex=1"
"apartments": \[
{
"id": 1234567890,
"apartmentType": "VACATION_HOME",
"name": "Villa Havelblick",
"description": "Die Ferienwohnungen „Villa Havelblick“ in Rathenow in Brandenburg liegen 37 km vom Kloster Jerichow entfernt und bieten Unterkünfte mit kostenfreiem WLAN, Grillmöglichkeiten, einem Garten und kostenfreien Privatparkplätzen. Alle Unterkünfte verfügen über einen Sitzbereich, einen Flachbild-Sat-TV und ein eigenes Bad mit einem Haartrockner und einer Dusche. Die Küche ist mit einem Kühlschrank, einem Backofen, einem Geschirrspüler und einer Kaffeemaschine ausgestattet.",
"postcode": "14712",
"city": "Rathenow",
"location": {
"lng": 7.723984400000063,
"lat": 53.6603108
},
"images": [
"https://img.holidu.com/images/6e108c78-7b50-41dc-862a-286acbf1cf4d/l.jpg",
"https://img.holidu.com/images/c0cccefd-c957-4970-8acf-0358f393685b/l.jpg"
],
"detailPageUrl": "/d/1234890",
"facilities": [
"VIEW_GARDEN",
"TV",
"TOWELS",
"QUIET",
"SMOKING_NOT_ALLOWED",
"MOBILITY_PUBLIC_TRANSPORT",
"RECYCLING_ORGANIC",
"ENERGY_SOLAR_THERMAL_PANELS",
"VIEW_MOUNTAIN",
"DISHCLOTH",
"BIKING",
"BED_QUEEN",
"GARDEN_FURNITURE",
"HIKING",
"FRIDGE",
"DISH_DETERGENT",
"ENTRANCE_PRIVATE",
"RECYCLING_GLASS",
"ENERGY_SAVING_LIGHTING",
"CUTLERY",
"HAIRDRYER",
"SINK",
"PARKING_AT_OBJECT",
"RECYCLING_PAPER",
"KETTLE",
"KITCHEN",
"SMOKE_DETECTOR",
"TV_SATELLITE",
"ECO_CLEANING_PRODUCTS",
"VENTILATOR",
"PETS_NOT_ALLOWED",
"COFFEE_MACHINE",
"SHOWER",
"IRONING_BOARD",
"TERRACE_UNCOVERED",
"BED_SLEEPING_COUCH",
"TOASTER",
"COOKTOP",
"VIEW_LANDMARK",
"HEATING",
"CHILDREN_ALLOWED",
"BEDLINEN",
"INTERNET_WIFI",
"OVEN",
"FLAT_IRON",
"RECYCLING_PLASTIC",
"TOILETRIES",
"RADIO",
"DISHES",
"ENERGY_GREEN_ELECTRICITY_PROVIDER"
]
}
]
}
Content-Type application/json
Content-Encoding gzip
Content-Length 9697
Date Fri, 19 May 2023 11:36:37 GMT
Cache-Control 86400
7.3.1.1. potential propertyType responses
Potential responses for propertyType are as follows, but are not limited to this list. The different types is a dynamic list that is always growing and it can also be that in your region specific types are not available.
AGRITOURISM
APARTMENT_HOTEL
APARTMENT
BEACH_HOUSE
BED_AND_BREAKFAST
BOAT
BUNGALOW
CABIN
CAMPING
CARAVAN
CASTLE
CHALET
COTTAGE
FINCA
GITE
GLAMPING
HOLIDAY_VILLAGE
HOTEL
HUT
LODGE
LOFT
LOG_CABIN
MANOR
MANSION
RARE
RIAD
ROOM
STUDIO
TENT
VACATION_APARTMENT
VACATION_HOME
VILLA
7.3.1.2. potential amenities responses
The list with amenities is endless (over 1000 entries). A list of the most common amenities will be shared at a later point in time.
7.3.2. Reponse 400
At least one of the following conditions is met:
there is no locale provided in the request
updatedSince parameter is malformed
pageIndex parameter cannot be parsed to an integer
pageIndex parameter is negative
pageIndex parameter is greater than 199
Example response body
Note that the response only contains the first error encountered; this is something we are aware of and will likely adjust in the future.
{
"status": 400,
"error": "BAD_REQUEST",
"message": "updatedSince must represent a valid date in yyyy-MM-dd, was '2023-05-123'."
}
7.3.3. Response 401
there is no domain provided in the request
the domain provided in the request does not exist
there is no Authorization header provided with the request
the token provided with the Authorization header does not match the provided domain
7.3.4. Response 500
any other internal server error, for instance when you surpass the limit of page requests.
7.3.5. Response 503
service temporarily unavailable
7.4. Example script (full inventory export per domain)
The following Python3 script performs a full export for the specified domain, token and updatedSince. It dumps all response bodies into json file, one file per page of results.
Usage: python3 inventory-export.py my-domain.de 09128031293293n398n 2023-05-12
https://gist.github.com/DiscoSascha/1bfd5d5a24cc7e2a84eb6ddbf6bf88c7