Method: accounts.participationReportViews.query

Provides the ability to query (get, filter, and segment) a participation report for a particular account.

HTTP request

GET https://travelpartner.googleapis.com/v3/{name=accounts/*}/participationReportViews:query

The URL uses gRPC Transcoding syntax.

Path parameters

Parameters
name

string

The resource name of the account being queried. The format is accounts/{account_id}.

Query parameters

Parameters
filter

string

The conditions (fields and expressions) used to filter the participation metrics for the account being queried. The syntax requires spaces surrounding the in operator. Otherwise, spaces can be omitted. Conditions can be joined using the and operator.

The date field is required. All other fields are optional.

Examples of valid conditions are as follows:

  • advanceBookingWindow = 2
  • advanceBookingWindow >= 0
  • advanceBookingWindow <= 5
  • advanceBookingWindow between 1 and 5
  • checkinDate = '2020-10-01'
  • checkinDate >= '2020-10-01'
  • checkinDate <= '2020-10-01'
  • checkinDate between '2020-10-01' and '2020-10-05'
  • date = '2020-02-04'
  • date between '2020-02-04' and '2020-02-09'
  • deviceType = 'TABLET'
  • deviceType in ('MOBILE', 'TABLET')
  • hotelRegionCode = 'US'
  • hotelRegionCode in ('US', 'CA')
  • lengthOfStayDays = 2
  • lengthOfStayDays >= 0
  • lengthOfStayDays <= 5
  • lengthOfStayDays between 1 and 5
  • occupancy = 2
  • occupancy >= 0
  • occupancy <= 5
  • occupancy between 1 and 5
  • partnerHotelId = 'AAA'
  • partnerHotelId in ('AAA', 'BBB')
  • userRegionCode = 'US'
  • userRegionCode in ('US', 'CA')
aggregateBy

string

Specifies how to segment the metrics returned by the query. For example, if userRegionCode is specified as the aggregateBy value, the participationResult will provide metrics aggregated by user region.

The string value is a comma-separated list of fields. Valid fields are: date, userRegionCode, deviceType, partnerHotelId, hotelRegionCode, advanceBookingWindow, lengthOfStayDays, checkinDate, and occupancy. Fields that are not specified are not included in the ParticipationResult.

Using an aggregateBy specification that produces a large number of rows will cause an error. This is especially true when aggregating by partnerHotelId or more than two fields. To reduce the possibiliy of an error, filter by partnerHotelId and date to only include a select number of hotels and dates. Accounts with a large number of hotels will need to further reduce data with more filtering.

pageSize

integer

The maximum number of participation results to return. The service may return fewer than this value. If unspecified, at most 10,000 results will be returned. The maximum value is 10,000; values above 10,000 will be coerced to 10,000.

pageToken

string

A page token, received from a previous participationReportViews.query request. Provide this to receive the subsequent page.

When paginating, all other parameters provided to participationReportViews.query must match the call that provided the page token.

Request body

The request body must be empty.

Response body

Response message for ParticipationReportService.QueryParticipationReport.

If successful, the response body contains data with the following structure:

JSON representation
{
  "results": [
    {
      object (ParticipationResult)
    }
  ],
  "nextPageToken": string
}
Fields
results[]

object (ParticipationResult)

The list of results that matches the query.

nextPageToken

string

Pagination token used to retrieve the next page of results.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/travelpartner

For more information, see the OAuth 2.0 Overview.

ParticipationResult

Represents a result from querying for participation stats for an account.

JSON representation
{
  "key": {
    object (Key)
  },
  "opportunityCount": string,
  "participationCount": string,
  "participationPercent": number,
  "missedParticipationCount": string,
  "missedParticipationCountDetails": {
    object (MissedParticipationCountDetails)
  },
  "partnerHotelDisplayName": string
}
Fields
key

object (Key)

Key of the result.

opportunityCount

string (int64 format)

For a specific hotel, the total number of opportunities that were available. Opportunities are the total number of instances when a hotel ad could have been displayed to a user.

participationCount

string (int64 format)

The total number of opportunities for which you were eligible to enter in the Google Ads auction process.

participationPercent

number

The percentage rate of participation where the number of successfully participated opportunities is divided by the total number of opportunities. For example, if a property was eligible to enter the Google Ads auction 90 times out of 100 opportunities, the participation rate is 90%.

missedParticipationCount

string (int64 format)

The total number of opportunities not eligible for the Google Ads auction process. Comprised of the following:

  • Landing page missing
  • Price missing
  • Price problem
  • Price unavailable
  • Other
missedParticipationCountDetails

object (MissedParticipationCountDetails)

The reasons that contributed to the missed participation count (for example, no availability) and a total count for each reason.

partnerHotelDisplayName

string

Partner's hotel display name. This field is only populated when the result is aggregated by partnerHotelId.

Key

Key of a result.

JSON representation
{
  "date": {
    object (Date)
  },
  "userRegionCode": string,
  "deviceType": enum (Device),
  "partnerHotelId": string,
  "hotelRegionCode": string,
  "advanceBookingWindow": integer,
  "lengthOfStayDays": integer,
  "checkinDate": {
    object (Date)
  },
  "occupancy": integer
}
Fields
date

object (Date)

The date for which you are requesting metrics.

If date is not a value of the aggregateBy parameter in the request call, then the date field is not returned in the Key.

userRegionCode

string

ISO 3116 region code of the country/region of the user.

If userRegionCode is not a value of the aggregateBy parameter in the request call, then the userRegionCode field is not returned in the Key.

deviceType

enum (Device)

The user’s device type.

If deviceType is not a value of the aggregateBy parameter in the request call, then the deviceType field is not returned in the Key.

partnerHotelId

string

Partner's hotel ID.

If partnerHotelId is not a value of the aggregateBy parameter in the request call, then the partnerHotelId field is not returned in the Key.

hotelRegionCode

string

CLDR region code of the country/region of the hotel.

If hotelRegionCode is not a value of the aggregateBy parameter in the request call, then the hotelRegionCode field is not returned in the Key.

advanceBookingWindow

integer

The number of days in advance the user wants to book the itinerary.

If advanceBookingWindow is not a value of the aggregateBy parameter in the request call, then the advanceBookingWindow field is not returned in the Key.

lengthOfStayDays

integer

The number of nights for the itinerary.

If lengthOfStayDays is not a value of the aggregateBy parameter in the request call, then the lengthOfStayDays field is not returned in the Key.

checkinDate

object (Date)

The check-in date of the itinerary.

If checkinDate is not a value of the aggregateBy parameter in the request call, then the checkinDate field is not returned in the Key.

occupancy

integer

The total occupancy of the itinerary.

If occupancy is not a value of the aggregateBy parameter in the request call, then the occupancy field is not returned in the Key.

MissedParticipationCountDetails

Missed participation count broken down by reason.

JSON representation
{
  "noAvailabilityCount": string,
  "hotelSuspendedCount": string,
  "noTaxBreakdownCount": string,
  "noLandingPageCount": string,
  "noPriceCount": string,
  "noPriceCountDetails": {
    object (NoPriceCountDetails)
  },
  "otherReasonCount": string,
  "priceMissingCount": string,
  "priceMissingCountDetails": {
    object (PriceMissingCountDetails)
  },
  "priceProblemCount": string,
  "priceProblemCountDetails": {
    object (PriceProblemCountDetails)
  },
  "priceUnavailableCount": string,
  "priceUnavailableCountDetails": {
    object (PriceUnavailableCountDetails)
  }
}
Fields
noAvailabilityCount
(deprecated)

string (int64 format)

The total number of missed participation due to the hotel/itinerary combination being unavailable, or the traveler was ineligible for the rates. To participate in these auctions, you may need to provide more pricing information.

hotelSuspendedCount
(deprecated)

string (int64 format)

The total number of missed participations due to one or more of your hotels being suspended due to price accuracy violations.

noTaxBreakdownCount
(deprecated)

string (int64 format)

The total number of missed participation due to one or more of your hotels not specifying taxes and fees separately.

noLandingPageCount

string (int64 format)

No landing page matched the user.

noPriceCount
(deprecated)

string (int64 format)

The total number of missed participations due to a price not being offered for the requested itinerary.

noPriceCountDetails
(deprecated)

object (NoPriceCountDetails)

The reasons that contributed to the no price count (for example, live pricing not available) and the total count for each reason.

otherReasonCount

string (int64 format)

Hotel did not participate for an unknown reason.

priceMissingCount

string (int64 format)

The total number of missed participations due to either a price not being present in Google's cache or failing to successfully respond to live pricing. Comprised of the following:

  • Bandwidth depleted
  • Cache rate missing
  • Itinerary blocked
  • Live pricing not set up
  • Live pricing timeout
  • Live pricing error
priceMissingCountDetails

object (PriceMissingCountDetails)

The reasons that contributed to the price missing count.

priceProblemCount

string (int64 format)

The total number of missed participation due to an issue with the accuracy of the price provided for the itinerary. Comprised of the following:

  • Hotel suspended
  • Price unusually high
  • Price unusually low
  • Taxes and feeds missing
priceProblemCountDetails

object (PriceProblemCountDetails)

The reasons that contributed to the price problem count.

priceUnavailableCount

string (int64 format)

The total number of missed participation due to price listed as unavailable (-1) for the requested itinerary. Comprised of the following:

  • Price unavailable
  • Participation not likely
  • Other
priceUnavailableCountDetails

object (PriceUnavailableCountDetails)

The reasons that contributed to the price unavailable count.

NoPriceCountDetails

The reasons that contributed to the no price count and the total count for each reason.

JSON representation
{
  "livePricingTechnicalIssueCount": string,
  "livePricingNotTriggeredCount": string,
  "livePricingConfigIssueCount": string,
  "livePricingNotAvailableCount": string,
  "livePricingOtherReasonCount": string
}
Fields
livePricingTechnicalIssueCount

string (int64 format)

The total number of missed participation due to technical issues with live pricing for any of the following reasons:

  • You didn’t respond quickly enough and exceeded the response deadline (around 4000 milliseconds).
  • You returned an error.
  • Your response was malformed.
livePricingNotTriggeredCount

string (int64 format)

The total number of missed participation due to live pricing not being triggered for any of the following reasons:

  • You didn't set a bid.
  • You didn't have a valid landing page.
  • There weren't enough prices in the cache.
livePricingConfigIssueCount

string (int64 format)

The total number of missed participation due to live pricing not being triggered for any of the following reasons:

  • You didn't have live pricing configured for these searches.
  • You restricted Google from accessing the hotel itinerary in question.
livePricingNotAvailableCount

string (int64 format)

The total number of missed participation due to live pricing being unavailable. Live pricing will not be triggered for certain default itineraries or UIs. In this scenario, partners will need a cached price to participate.

livePricingOtherReasonCount

string (int64 format)

The number of missed participations due to other issues with live pricing.

PriceMissingCountDetails

The reasons that contributed to the price missing count and the total count for each reason.

JSON representation
{
  "cacheRateMissingCount": string,
  "itineraryBlockedCount": string,
  "livePricingNotSetupCount": string,
  "bandwidthDepletedCount": string,
  "livePricingTimeoutCount": string,
  "livePricingErrorCount": string
}
Fields
cacheRateMissingCount

string (int64 format)

No price exists in the cache for this itinerary. A live query was not done due to page constraints.

itineraryBlockedCount

string (int64 format)

The itinerary was outside of your basic parameters, so no price was pulled for the itinerary from either live query or cache fill.

livePricingNotSetupCount

string (int64 format)

No price was cached for this itinerary, and live query was not configured for this account.

bandwidthDepletedCount

string (int64 format)

No price was cached for this itinerary, and there was no live query quota remaining.

livePricingTimeoutCount

string (int64 format)

No price was cached for this itinerary, and a live query sent to your system timed out.

livePricingErrorCount

string (int64 format)

No price was cached for this itinerary. A live query did not time out, but your system returned an error.

PriceProblemCountDetails

The reasons that contributed to the price problem count and the total count for each reason.

JSON representation
{
  "hotelSuspendedCount": string,
  "priceUnusuallyHighCount": string,
  "priceUnusuallyLowCount": string,
  "taxesAndFeesMissingCount": string
}
Fields
hotelSuspendedCount

string (int64 format)

The hotel was suspended. This may be due to persistent problems in areas such as incorrect taxes and fees.

priceUnusuallyHighCount

string (int64 format)

The price given for this itinerary seemed oddly high compared to regional trends.

priceUnusuallyLowCount

string (int64 format)

The price given for this itinerary seemed oddly low compared to regional trends.

taxesAndFeesMissingCount

string (int64 format)

Taxes and fees were missing from pricing.

PriceUnavailableCountDetails

The reasons that contributed to the price unavailable count and the total count for each reason.

JSON representation
{
  "priceUnavailableCount": string,
  "participationNotLikelyCount": string
}
Fields
priceUnavailableCount

string (int64 format)

Hotel did not participate because it wasn't available for the itinerary dates.

participationNotLikelyCount

string (int64 format)

No price was cached for this itinerary, and no live query was done because your server usually tells us the hotel is unavailable or sold out.