Retrieve Property Static Data

SDP (Static Data Platform) provides various types of static data that don't change frequently, such as property IDs, names, descriptions, addresses, amenities, and more.

One way to utilize this platform is to host this data locally on your side, update it regularly, and only call Lodging APIs for volatile data like availability and price. Doing so can reduce live API calls and improve the performance of your application.

This page demonstrates how to retrieve the accessible property ID list and the location information for these properties using the SDP DownloadURL API. For details on accessing other static data supported by SDP, you can find more information here.

Retrieve accessible Expedia property IDs from SDP DownloadURL API

GetFeedDownloadUrlOperationParams getPropertyIdListParams =
    GetFeedDownloadUrlOperationParams.builder()
        // Use the type LISTINGS to get the list of accessible property IDs.
        .type(GetFeedDownloadUrlOperationParams.Type.LISTINGS)
        // Without any filters, this operation will return the information of all lodging
        // properties in en_US by default.
        .build();

GetFeedDownloadUrlOperation getFeedDownloadUrlOperation =
        new GetFeedDownloadUrlOperation(getPropertyIdListParams);

Response<PresignedUrlResponse> downloadUrlListingsResponse =
    client.execute(getFeedDownloadUrlOperation);

// Get the download URL from the response.
String listingsDownloadUrl = downloadUrlListingsResponse.getData()
    .getBestMatchedFile()
    .getDownloadUrl();

The download URL points to a zip file containing various jsonl files. Each line in the jsonl files contains a JSON object representing a property.

An example JSON line from the LISTINGS file (the propertyId.expedia field is the Expedia property ID):

{
  "propertyId": {
    "expedia": "1234567",
    "hcom": "123456789",
    "vrbo": "123.1234567.7654321"
  },
  "bookable": {
    "expedia": true,
    "hcom": true,
    "vrbo": true
  },
  "propertyType": {
    "id": 16,
    "name": "Apartment"
  },
  "lastUpdated": "10-27-2024 13:41:16",
  "country": "France",
  "inventorySource": "vrbo",
  "referencePrice": {
    "value": "89.52",
    "currency": "USD"
  },
  "vrboPropertyType": {
    "instantBook": true
  }
}

The property IDs retrieved from LISTINGS file can be used to call Lodging Listings API. You can see the example of getting the content, pricing and availability for properties in Property ID Search.

However, Vrbo properties that are NOT instant-bookable are NOT accessible in Lodging Listings for now.

In the LISTINGS file, you can identify Vrbo properties by checking if the propertyId.vrbo fields are empty and filter them by vrboPropertyType.instantBook field.

Retrieve Vrbo property IDs from SDP DownloadURL API

GetFeedDownloadUrlOperationParams getPropertyIdListParams =
    GetFeedDownloadUrlOperationParams.builder()
        // Use the type VACATION_RENTAL to get the list of accessible Vrbo property IDs.
        .type(GetFeedDownloadUrlOperationParams.Type.VACATION_RENTAL)
        // Without any filters, this operation will return the information of all Vrbo
        // properties in en_US by default.
        .build();

GetFeedDownloadUrlOperation getFeedDownloadUrlOperation =
        new GetFeedDownloadUrlOperation(getPropertyIdListParams);

Response<PresignedUrlResponse> downloadUrlVacationRentalResponse =
    client.execute(getFeedDownloadUrlOperation);

// Get the download URL from the response.
String vacationRentalDownloadUrl = downloadUrlListingsResponse.getData()
    .getBestMatchedFile()
    .getDownloadUrl();

Similar to the LISTINGS file, the download URL points to a zip file containing jsonl files, in which each line contains a JSON object representing a Vrbo property.

An example JSON line from the VACATION_RENTAL file (the propertyId.expedia field is the Expedia ID of this Vrbo property):

{
  "propertyId": {
    "expedia": "1234567",
    "hcom": "987654321",
    "vrbo": "123.1234567.7654321"
  },
  "country": "France",
  "propertySize": {
    "measurement": 441,
    "units": "SQUARE_FEET"
  },
  "maxOccupancy": 4,
  "bathrooms": {
    "numberOfBathrooms": 1
  },
  "bedrooms": {
    "numberOfBedrooms": 2
  },
  "houseRules": {
    "partyOrEventRules": {
      "partiesOrEventsPermitted": false,
      "ownerPartyFreeText": "No events allowed"
    },
    "smokingRules": {
      "smokingPermitted": false,
      "ownerSmokingFreeText": "Smoking is not permitted"
    },
    "petRules": {
      "petsPermitted": true,
      "ownerPetsFreeText": "Pets allowed"
    },
    "childRules": {
      "childrenPermitted": true,
      "ownerChildrenFreeText": "Children allowed: ages 0-17 "
    }
  },
  "propertyManager": {
    "name": "Résidences Louis",
    "hostType": "Professional"
  },
  "premierHost": true,
  "propertyLiveDate": "2022-05-31"
}

The Expedia property IDs retrieved from VACATION_RENTAL file can be used to call Lodging Quotes API or Lodging Availability Calendars API. You can see the example of getting the pricing and availability for properties in Lodging Quotes and Vrbo Availability Calendar.

Retrieve the names and location information of properties

GetFeedDownloadUrlOperationParams getPropertyLocationParams =
    GetFeedDownloadUrlOperationParams.builder()
        // Use the type LOCATIONS to get the names and address of accessible properties.
        .type(GetFeedDownloadUrlOperationParams.Type.LOCATIONS)
        // If you are looking for Vrbo properties specifically, you can also filter the properties by brand.
        // .brand(GetFeedDownloadUrlOperationParams.Brand.VRBO)
        .build();

GetFeedDownloadUrlOperation getFeedDownloadUrlOperation =
        new GetFeedDownloadUrlOperation(getPropertyLocationParams);

Response<PresignedUrlResponse> downloadUrlLocationsResponse =
    client.execute(getFeedDownloadUrlOperation);

// Get the download URL from the response.
String locationsDownloadUrl = downloadUrlLocationsResponse.getData()
    .getBestMatchedFile()
    .getDownloadUrl();

The file structure is similar to other SDP files.

An example JSON line from the LOCATIONS file:

{
  "propertyId": {
    "expedia": "1234567",
    "hcom": "987654321",
    "vrbo": "123.1234567.1234567"
  },
  "propertyType": {
    "id": 16,
    "name": "Apartment"
  },
  "propertyName": "Property Name",
  "address1": "",
  "address2": "",
  "city": "Newark",
  "province": "Delaware",
  "country": "United States",
  "postalCode": "19711",
  "geoLocation": {
    "latitude": "10.999999",
    "longitude": "-10.999999",
    "obfuscated": false
  },
  "locationAttribute": {
    "neighborhood": {
      "id": "553248635976468695",
      "name": "Westmoreland"
    },
    "city": {
      "id": "8946",
      "name": "Newark"
    },
    "region": {
      "id": "6055689",
      "name": "North Wilmington"
    },
    "airport": {
      "id": "6028579",
      "code": "ILG",
      "name": "Wilmington, DE (ILG-New Castle)",
      "distance": "13.17",
      "unit": "km"
    },
    "distanceFromCityCenter": {
      "distance": "1.24",
      "unit": "km"
    }
  }
}

At this point, you can combine the property name and location information with the property IDs to build your local cache.

Flexible usage of SDP can help you reduce the number of live calls to the Lodging APIs and save your costs. You can also use the data to build your own search engine or recommendation system.

Did you find this page helpful?
How can we improve this content?
Thank you for helping us improve!