Version v2 of the Content API is scheduled for sunset on September 30th, 2021. Onboarding to v2 ended on April 30, 2021. To avoid disruptions with your integration, please migrate to v2.1 as soon as possible.

For more information, see Migrating to v2.1 and this blog post.

Overview

Reporting API

The Reporting API lets a merchant engage with their performance data programmatically through the Merchant Center Query Language. This is similar to the ability to create custom reports directly in Merchant Center. The Reporting API has the following benefits:

  • Lets large merchants import performance data for product listings into their internal or third-party reporting systems.
  • Lets users, third-party partners, and aggregators who manage Merchant Center accounts access reporting.

API users can specify which performance data they would like to retrieve in the Search call response, such as:

  • Metrics to be returned (for example: Clicks, Impressions)
  • Dimensions in which to segment the data (for example: OfferId, Date)
  • Conditions which need to be met (for example: Clicks > 100)

The Reporting API query language can query the Content API for Shopping for performance metrics (clicks, impressions), possibly segmented by various dimensions (reported event attributes like program and date, and product attributes like brand, category, etc.), using the Search method on the Reports service.

The result from a query to the Reports service is a list of ReportRow instances, with each ReportRow representing the values of requested metrics for segments you specified in your query. If no segments are specified, a single row is returned with metrics aggregated across all segments. Otherwise, if any segments are requested alongside metrics, then the response shows one row for each unique segment tuple. It is possible to select multiple segments and multiple metrics in a single query.

Querying for metrics

You can query for metrics (Clicks, Impressions, CTR, etc.) that you want returned. You must add a filter on the date range to query the Reports service. The sample query below returns a single row: the aggregate amount of clicks within the added condition of a date range.

SELECT metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN '2020-12-01' AND '2020-12-21';

Sample response

The sample JSON code response below shows how this merchant has had 4,440 clicks summed together across all their products across all their destinations between December 1st, 2020 and December 21st, 2020.

{"results": [
    {
      "metrics": {
        "clicks": "4,440"
      }
    }
]}

Querying for segments

Alongside metrics, you can also query for segments, which can be an attribute of a product (offer_id, brand, category, etc.) or an attribute of a reported event (date, program). A reported event is an impression or click for a product.

Segments act similarly to a GROUP BY in SQL. Segments split the selected metrics, grouping by each segment in the SELECT clause. The sample query below returns clicks per day, ordered by clicks descending within the added condition of a date range. Only rows where at least one requested metric is non-zero will be returned.

SELECT
  segments.date,
  metrics.clicks
FROM MerchantPerformanceView
WHERE segments.date BETWEEN '2020-12-01' AND '2020-12-03'
ORDER BY metrics.clicks DESC;

Sample response

The sample JSON code response below shows how this merchant has had 1,546 clicks across all their products across all their destinations on December 1st, 2020 and 829 clicks across all their products across all their destinations on December 2nd, 2020. No object will be returned for December 3rd, 2020 since the merchant had no clicks on that day.

{
  "results": [
    {
      "segments": {
        "date": {
          "year": 2020,
          "month": 12,
          "day": 1
        }
      },
      "metrics": {
        "clicks": "1546"
      }
    },
    {
      "segments": {
        "date": {
          "year": 2020,
          "month": 12,
          "day": 2
        }
      },
      "metrics": {
        "clicks": "829"
      }
    }
]}