Product statuses

You can use the productstatuses resource to view information about the status of your Shopping products. The list method returns all products, regardless of their validity. We recommend that you call the productstatuses resource periodically to identify issues with your products.

See the Product issues reference for details of common product issues.

Merchants are responsible for complying with the Shopping ads and free listings policies. Google Shopping reserves the right to enforce these policies and respond appropriately if we find content or behavior that violates these policies.

productstatuses.get

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

GET https://shoppingcontent.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",
   "disapprovedCountries": [
            "US", "UK"
   ]
 },
 {
   "destination": "ShoppingActions",
   "status": "disapproved",
   "disapprovedCountries": [
            "US"
   ]
 },
 {
   "destination": "SurfacesAcrossGoogle",
   "status": "disapproved",
   "disapprovedCountries": [
            "US"
   ]
 }
],
"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",
  "applicableCountries": [
            "US", "UK"
  ]
 },
 {
  "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",
  "applicableCountries": [
            "US, UK"
  ]
 },
 {
  "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",
  "applicableCountries": [
            "US", "UK"
  ]
 },
 {
  "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",
  "applicableCountries": [
            "US", "UK"
  ]
 },
 {
  "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",
  "applicableCountries": [
            "US", "UK"
  ]
 }
],
"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
approvedCountries
A list of the countries where the offer is approved per destination.
pendingCountries
A list of the countries where the offer is pending per destination.
disapprovedCountries
A list of the countries where the offer is disapproved per destination.

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
Indicates where to find the documentation about the problem.
applicableCountries
Indicates in which countries the issue affects the product.

productstatuses.list

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

GET https://shoppingcontent.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://shoppingcontent.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",
       "disapprovedCountries": [
            "US", "UK"
       ]
     },
     {
       "destination": "ShoppingActions",
       "status": "disapproved",
       "disapprovedCountries": [
            "US"
       ]
     },
     {
       "destination": "SurfacesAcrossGoogle",
       "status": "disapproved",
       "disapprovedCountries": [
            "US"
       ]
     }
   ],
   "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",
       "applicableCountries": [
            "US"
       ]
     },
     {
       "code": "pending_initial_policy_review",
       "servability": "disapproved",
       "resolution": "pending_processing",
       "destination": "Shopping",
       "description": "Pending initial review",
       "documentation": "https://support.google.com/merchants/answer/2948694",
       "applicableCountries": [
            "US, UK"
       ]
     },
     {
       "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",
       "applicableCountries": [
            "US", "UK"
       ]
     }
   ],
   "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",
    "approvedCountries": [
            "US"
    ]
   },
   {
    "destination": "SurfacesAcrossGoogle",
    "status": "approved",
    "approvedCountries": [
            "US"
    ]
   }
  ],
  "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",
    "approvedCountries": [
            "US"
    ]
   }
  ],
  "creationDate": "2019-01-29T21:14:36Z",
  "lastUpdateDate": "2019-02-21T18:47:44Z",
  "googleExpirationDate": "2019-03-23T18:47:44Z"
 }
]
}

Test productstatuses.list

The productstatuses.list call 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.