Last updated

DSA compliance

Learn how to utilise the trader information from the accommodations/details response to manage properties availability for EEA users, ensuring compliance with the Digital Services Act (DSA).


Introduction to DSA compliance

The Digital Services Act (DSA) and particularly, the Article 30 (Traceability of Traders) mandates online platforms to collect, verify, and display certain essential information about professional hosts (traders).

Note this is only applicable to accommodations, not to car rentals.

For platforms to remain compliant, they must display trader information for EEA travellers browsing or making bookings on their websites and apps. Failure to verify or collect the required trader data may result in restrictions on services for EEA users.

DSA compliance is mandatory for EEA users.
If a trader fails to provide the necessary information or if it cannot be verified, the DSA mandates that platforms apply certain consequences and restrict services to EEA guests.

Key fields in DSA compliance

Demand API provides two key fields host_type and trader, which are included as "description" extras in the accommodations/details respose.

Key fields
Description
host_type
  • This field helps further distinguish the nature of the accommodation provider:
    • Private - This is considered a non-professional host, renting their properties for purposes which are outside their trade, business or, profession. They are not officially traders.

    • Professional - This is typically a party that rents out their properties for purposes relating to their primary trade, business or profession, or as a significant secondary source of income.

    • Unknown - When the trader has not been determined or identified.

  • It is crucial for determining whether specific trader details are required or excluded from the response.
trader
  • This object contains Personally Identifiable Information (PII) about the trader, including address, email, name, email, registration number, phone number, trade register and trader verified field.

Example of request and response

Here's an example of the accommodations/details request including the "description" field as extras:

{
  "accommodations": [
    10507360
  ],
  "extras": [
    "description",
  ],
  "languages": [
    "en-gb"
  ]
}

Here's an example of the response including the host_type and trader fields:

{
  "description": {
    "host_type": "professional",
    "important_information": {
      "en-gb": "The credit card used to book a non-refundable rate will be charged on the day of booking and must be presented upon check-in..."
    },
    "license_numbers": [],
    "text": {
      "en-gb": "The Demand API sandbox Hotel Orion offers elegant accommodation alongside the famous Keizersgracht canal, near the Anne Frank House..."
    },
    "trader": {
      "address": {
        "address_line": "Keizersgracht 12345",
        "city": "Amsterdam",
        "country": "nl",
        "post_code": "1015CZ"
      },
      "email": "info@sandboxhotel.nl",
      "name": "Demand API sandbox Hotel Orion",
      "registration_number": "1234562",
      "telephone": "+31xxxxxxxxx",
      "trade_register": "Sandbox",
      "trader_verified": true
    }
  }
}

Interpreting host type and trader info

The following table explains how to interpret the host_type and trader fields and their significance for compliance:

Host type
trader infotrader_verified
PrivateThe trader object will be returned with all values set to null.
  • The absence of trader information ensures no personally identifiable information (PII) is unnecessarily exposed.
  • It will always be true.
  • Verification is not applicable as this is a private, non-professional host.

Professional

The trader object may contain populated fields such as address, registration number, and contact details.

  • True or false.
  • Only verified properties (true) should be displayed to EEA users.
  • If false, the platform must exclude this property from EEA search results.

(See guidelines for more details)

UnknownThe trader object will be shown with all values set to null.
  • True or false.
  • This status indicates that the host's type is indeterminate, but the verification status should still be considered for compliance.
  • Apply the same rules as for professional hosts and only display accommodations where trader_verified is true.

Storing, and displaying trader information

As part of the DSA compliance process, it's important to handle trader information with care, especially since it contains Personally Identifiable Information (PII).

It is important to display and store trader information based on the host type classification, ensuring that the correct information is shown to EEA travellers.

Here are some suggestions for storing and displaying trader details:

EEA-only visibility
  • Trader information should only be visible to EEA travellers.
  • For users outside the EEA, this information should remain hidden to comply with privacy regulations.
  • This ensures compliance with privacy regulations and avoids exposing sensitive data unnecessarily.
PII Compliance
  • Trader information is classified as PII, which refers to data that can identify a specific individual.
  • As per the PII guidelines outlined in the Orders section, trader information must be handled in accordance with relevant privacy laws and data protection regulations.
Secure storage and access control
  • Store trader information securely, and ensure it is retained only as long as necessary.
  • Additionally, implement strict access controls to prevent unauthorised access.

Consult your legal team to ensure that the display of this information in your application complies with DSA criteria.


Trader verification

To comply with DSA, Demand API provides a mechanism to expose current status in verification process by means of the trader_verified field included in the accommodations/details response.

This field indicates whether a trader has met the verification requirements, ensuring that only verified properties are displayed to EEA travellers.

Interpreting the true/false value

The trader_verified field can have one of two values: true or false.

The following table explains how to handle each value:

ValueDescriptionAction
True✓ The accommodation has been internally verified and can be displayed to EEA and non-EEA travellers.
  • It might be the case, the trader is still in the process of verification (up to 60 days).
✓ Display this accommodation.
False✗ The trader may have failed verification due to missing required documentation or has been in the process of verification for more than 60 days.✗ Exclude this accommodation from search and availability results for EEA travellers.

Caching strategy

The following table outlines the actions needed according to the caching strategy you are implementing for availability data:

CachingDescriptionAction

If you are not caching availability information, Demand API will automatically filter out non-verified properties for EEA travellers.

  • The system identifies EEA travellers by the booker.country field included in the search request, and returns availability only for verified properties.

No action is required

If you are caching availability data:

  • You must filter non-verified traders out from your cached results.

Exclude non-verified properties from search and availability responses for EEA users.

Follow the guidelines for detailed instructions.


Guidelines - Excluding properties for EEA travellers

If your system caches accommodation availability, you must take extra care to filter non-verified properties for EEA users.

Follow these guidelines to manually exclude them from results:

1. Filter by "host_type"

  • Check the value of host_type
  • Filter by "Professional" hosts.

Example:


{
  "description": {
    "host_type": "professional",
    ...},

2. Filter by "trader_verified: false"

  • Check the value of trader_verified
  • If the value is false , you should exclude the accommodation from your search and availability results to EEA travellers.

Example:


"trader": {
  "trader_verified": false
}

3. Filter by EEA country

Check the booker.country field included in the accommodations/search and availability requests to identify EEA travellers.

Example:

{
  "booker": {
    "country": "nl",
    "platform": "desktop"
  },

Apply restrictions to all EEA booker countries requests.

Handling private hosts

If the trader object has all the fields as null, this indicates the accommodation is listed by a private, non-professional host.

  • The host_type field will also indicate this sort of host.

Example:

{
  "description": {
    "host_type": "private",
    "important_information": {
      "en-gb": "Guests are required to show a photo identification and credit card upon check-in..."
    },
    "license_numbers": [],
    "text": {
      "en-gb": "This property offers access to a terrace, free private parking and free WiFi..."
    },
    "trader": {
      "address": null,
      "email": null,
      "name": null,
      "registration_number": null,
      "telephone": null,
      "trade_register": null,
      "trader_verified": true
    }
  }
}

Make sure you do not exclude these listings from your search and availability results.

Benefits of this approach

By filtering accommodations based on the trader_verified and host_type fields, you ensure that only verified professional properties are shown to EEA travellers.

This approach:

  • Helps you avoid displaying properties that may violate the DSA requirements, reducing the risk of non-compliance and ensuring a smooth user experience.

  • Allows you to confidently display verified properties and exclude non-compliant listings, ensuring both legal compliance and the best experience for your users.


Curious to know more?