Product Statuses API

The purpose of the Product Statuses API is to identify and gather information about product issues. In v2.1, all products are returned from the list method, regardless of their validity. We recommend that you call the Product Statuses API periodically to identify issues with your products.

get

The productstatuses.get method retrieves the data quality status of one product.

GET https://www.googleapis.com/content/v2.1/{merchantID}/productstatuses/{productId}?destinations=Shopping&fields=productId%2Ctitle

The following are the optional URL parameters for the productstatuses.get method:

{merchantID}
The merchant ID.
{productID}
The product ID. For a product ID example, refer to the REST ID attribute in the Product ID guide.
destinations
A comma-separated list of destinations. The default value is Shopping, which corresponds to the Shopping Ads program.

Here is a sample JSON response from a productstatuses.get call:

{
"kind": "content#productStatus",
"productId": "online:en:US:63",
"title": "Third Product",
"link": "http://examplemenc.com/",
"destinationStatuses": [
 {
   "destination": "Shopping",
   "status": "disapproved"
 },
 {
   "destination": "ShoppingActions",
   "status": "disapproved"
 },
 {
   "destination": "SurfacesAcrossGoogle",
   "status": "disapproved"
 }
],
"itemLevelIssues": [
 {
  "code": "strong_id_inaccurate",
  "servability": "disapproved",
  "resolution": "merchant_action",
  "attributeName": "mpn",
  "destination": "Shopping",
  "description": "Incorrect product identifier [mpn]",
  "detail": "Use the manufacturer's product identifiers (GTIN, brand, MPN)",
  "documentation": "https://support.google.com/merchants/answer/160161"
 },
 {
  "code": "image_link_internal_error",
  "servability": "disapproved",
  "resolution": "merchant_action",
  "attributeName": "image link",
  "destination": "Shopping",
  "description": "Processing failed [image link]",
  "detail": "Wait for the product image to be crawled again (up to 3 days)",
  "documentation": "https://support.google.com/merchants/answer/6240184"
 },
 {
  "code": "landing_page_error",
  "servability": "disapproved",
  "resolution": "merchant_action",
  "attributeName": "link",
  "destination": "Shopping",
  "description": "Unavailable desktop landing page",
  "detail": "Update your website or landing page URL to enable access from desktop devices",
  "documentation": "https://support.google.com/merchants/answer/6098155"
 },
 {
  "code": "missing_condition_microdata",
  "servability": "unaffected",
  "resolution": "merchant_action",
  "destination": "Shopping",
  "description": "Missing or invalid data [condition]",
  "detail": "Add valid structured data markup to your landing page",
  "documentation": "https://support.google.com/merchants/answer/6183460"
 },
 {
  "code": "mobile_landing_page_error",
  "servability": "disapproved",
  "resolution": "merchant_action",
  "attributeName": "link",
  "destination": "Shopping",
  "description": "Unavailable mobile landing page",
  "detail": "Update your website or landing page URL to enable access from mobile devices",
  "documentation": "https://support.google.com/merchants/answer/6098296"
 }
],
"creationDate": "2019-02-15T20:30:15Z",
"lastUpdateDate": "2019-02-26T16:40:11Z",
"googleExpirationDate": "2019-03-28T16:40:11Z"
}

Resources

The JSON body returned from the get call has several sections. All products have the basic information and the destination statuses returned, but only products with problems have the item level issues returned. The basic information is a series of individual attributes, but the other sections are blocks of attributes since there may be multiple issues for a product.

Basic information

kind
The value of kind is always content#productStatus to indicate the body from a productstatuses call.
creationDate
The date that the product was created.
lastUpdateDate
The last time that the product was updated.
googleExpirationDate
The date that the product expires.
productId
The REST ID of the product.
title
The title of the product.
link
The URL link of the product.

Destination statuses

destination
Destinations such as:
  • shopping ads
  • ShoppingActions
  • surfaces across google
  • shopping
status
The status can be one of the following:
  • approved
  • disapproved
  • pending

Item-level issues

code
The error code that is used to determine the problem.
servability
Indicates whether the product is shown as:
  • disapproved, which means that the problem prevents the product from being shown.
  • unaffected, which means that the data quality problem doesn't prevent the product from being shown on the mall.
resolution
Informs if the merchant can solve the issue.
attributeName
The attribute name that's affected.
destination
The destination that's affected.
description
The description of the product.
detail
Gives more information about the problem.
documentation
Tells where to find the documentation about the problem.

list

The productstatuses.list method retrieves a list of all products, regardless of their validity.

GET https://www.googleapis.com/content/v2.1/{merchantID}/productstatuses?destinations=Shopping&maxResults=3&pageToken=5108b52782905aa9

The following are the optional parameters for the productstatuses.list method:

destinations

The destination, in this case Shopping. The base URL is

https://www.googleapis.com/content/v2.1
{merchantID}

Replace with your merchant ID.

pageToken

Used to get the 2nd and subsequent pages. Every page has a nextPageToken and you pass that back to get the next page in the sequence.

destinations

A comma-separated list of destinations. The default value is Shopping.

maxResults

The number of results to return per page.

The following is a sample JSON response from a productstatuses.list call (note that the resource returned in the productstatuses.list follows a similar format as the productstatuses.get API call):

{
"kind": "content#productstatusesListResponse",
"nextPageToken": "632fd090c95712c6",
"resources": [
 {
   "kind": "content#productStatus",
   "productId": "online:en:US:online-en-US-GGL614",
   "title": "Green Headphones",
   "link": "https://example.com/green-headphones/",
   "destinationStatuses": [
     {
       "destination": "Shopping",
       "status": "disapproved"
     },
     {
       "destination": "ShoppingActions",
       "status": "disapproved"
     },
     {
       "destination": "SurfacesAcrossGoogle",
       "status": "disapproved"
     }
   ],
   "itemLevelIssues": [
     {
       "code": "mobile_landing_page_crawling_not_allowed",
       "servability": "disapproved",
       "resolution": "merchant_action",
       "attributeName": "link",
       "destination": "Shopping",
       "description": "Mobile page not crawlable due to robots.txt",
       "detail": "Update your robots.txt file to allow user-agents \"Googlebot\" and \"Googlebot-Image\" to crawl your site",
       "documentation": "https://support.google.com/merchants/answer/6098296"
     },
     {
       "code": "pending_initial_policy_review",
       "servability": "disapproved",
       "resolution": "pending_processing",
       "destination": "Shopping",
       "description": "Pending initial review",
       "documentation": "https://support.google.com/merchants/answer/2948694"
     },
     {
       "code": "ambiguous_gtin",
       "servability": "unaffected",
       "resolution": "merchant_action",
       "attributeName": "gtin",
       "destination": "Shopping",
       "description": "Ambiguous value [gtin]",
       "detail": "Use the full GTIN. Include leading zeroes, and use the full UPC, EAN, JAN, ISBN-13, or ITF-14.",
       "documentation": "https://support.google.com/merchants/answer/7000891"
     }
   ],
   "creationDate": "2020-01-09T15:36:39Z",
   "lastUpdateDate": "2020-01-14T19:17:02Z",
   "googleExpirationDate": "2020-02-13T19:17:02Z"
 },
 {
  "kind": "content#productStatus",
  "productId": "online:en:US:43",
  "title": "Green shirt",
  "link": "https://example.com/shirt-green/",
  "destinationStatuses": [
   {
    "destination": "ShoppingActions",
    "status": "approved",
   },
   {
    "destination": "SurfacesAcrossGoogle",
    "status": "approved",

   }
  ],
  "creationDate": "2019-01-29T21:14:36Z",
  "lastUpdateDate": "2019-02-21T18:47:44Z",
  "googleExpirationDate": "2019-03-23T18:47:44Z"
 },
 {
  "kind": "content#productStatus",
  "productId": "online:en:US:40",
  "title": "Black hat",
  "link": "https://example.com/hat-black/",
  "destinationStatuses": [
   {
    "destination": "SurfacesAcrossGoogle",
    "status": "approved",
   }
  ],
  "creationDate": "2019-01-29T21:14:36Z",
  "lastUpdateDate": "2019-02-21T18:47:44Z",
  "googleExpirationDate": "2019-03-23T18:47:44Z"
 }
]
}

Testing the productstatuses.list API

The productstatuses.list API is safe to test in production because it does not make any changes to your data; instead, it issues a read request to report on your products' statuses.

V2 to V2.1 changes

  • The product attribute was removed, along with the includeAttributes parameter. To retrieve attributes of the product corresponding to a status, use the Products service and the value of the new productId field.

  • The parameter includeInvalidInsertedItems has been removed. The productId of every product is now returned regardless of whether the product is valid.

  • The fields intention, approvalStatus, and approvalPending in destinationStatuses have been replaced by status, which is a string that can be one of approved, disapproved, or pending.

  • dataQualityIssues have been replaced by itemLevelIssues.

For more information about the changes in V2.1, refer to Migrating from V2 to V2.1.