Migrate products management

You can use the Merchant API to upload and manage your products programmatically. The accounts.products resource lets you create an online store catalog, that is a list of products and offers. For more information about uploading and managing your products using Merchant API, see Overview of Merchant Products API.

Resource changes

The products and productstatuses resources of Content API are replaced by productInputs and products resources.

You can use the productInputs resource of Merchant API to upload your product information. The product resource of Merchant API can be used to retrieve your processed products including statuses.

Data source requirement

In Merchant API, you must specify the target data source when uploading products. This can either be a primary data source or a supplemental data source. You can retrieve your existing data sources using dataSources.list or create a new data source using dataSources.create.

Alternatively, you can use the Merchant Center UI to manage your data sources.

For more information about data sources and how to create and manage them, see Overview of Merchant Data sources API.

Identifier changes

Merchant API uses name to identify the product. The name of the product will follow the accounts/{account}/products/{product} format, where {product} has the channel~language~feedLabel~offerId format.

Content API resources used : instead of ~ between each value in the ID: channel:language:feedLabel:offerId.

All Merchant API calls return the new format with ~ between the values of the ID. We recommend storing the new name field from the response and using it in your future calls.

Methods

Here's a comparison of the products methods in the Content API for Shopping and the Merchant Products API:

Content API for Shopping Merchant Products API
products.custombatch Not available
products.insert productInputs.insert
products.update Not available yet
products.delete productInputs.delete
products.get products.get
products.list products.list
productstatuses.custombatch Not available
productstatuses.get products.get
productstatuses.list products.list

Requests

Content API Method URL in Content API for Shopping URL in Merchant Products API Identifier in Content API Identifier in Merchant Products API
products.insert POST https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/products POST https://merchantapi.googleapis.com/products/v1beta/{PARENT}/productsInputs:insert?dataSource=accounts/{MERCHANT_ID}/dataSources/{DATASOURCE_ID} MERCHANT_ID PARENT=accounts/{MERCHANT_ID}
products.update PATCH https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/products/{PRODUCT_ID} Not available
products.delete DELETE https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/products/{PRODUCT_ID} DELETE https://merchantapi.googleapis.com/products/v1beta/{NAME}?dataSource=accounts/{MERCHANT_ID}/dataSources/{DATASOURCE_ID} MERCHANT_ID, PRODUCT_ID NAME=accounts/{MERCHANT_ID}/productInputs/{PRODUCT_ID_WITH_TILDES}
products.get GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/products/{PRODUCT_ID} GET https://merchantapi.googleapis.com/products/v1beta/{NAME} MERCHANT_ID, PRODUCT_ID NAME=accounts/{MERCHANT_ID}/products/{PRODUCT_ID_WITH_TILDES}
products.list GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/products GET https://merchantapi.googleapis.com/products/v1beta/{PARENT}/products MERCHANT_ID PARENT=accounts/{MERCHANT_ID}
productstatuses.get GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/productstatuses/{PRODUCT_ID} GET https://merchantapi.googleapis.com/products/v1beta/{NAME} MERCHANT_ID, PRODUCT_ID NAME=accounts/{MERCHANT_ID}/products/{PRODUCT_ID_WITH_TILDES}
productstatuses.list GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/productstatuses GET https://merchantapi.googleapis.com/products/v1beta/{PARENT}/products MERCHANT_ID PARENT=accounts/{MERCHANT_ID}