Make requests

This guide assumes you've worked through our Getting Started guide and are set up to make authorized requests.

After you've set everything up, you can send requests to the Google Content API for Shopping. The following code samples demonstrate how to send a few simple requests:

  • Create a product.
  • Get a list of products.
  • Retrieve a specific product from the list.
  • Update a product's price.

For a full list of methods, see the reference documentation .

For more information, see the Best Practices page, which explains how to best use the API. This page also explains why batch requests are recommended.

If you're having issues with the Content API, check the Merchant Center status dashboard for outages, and the Support page.

Create a product

You can find full details of all the attributes that a product can have in the Products Feed Specification . To create a product , use the following code:

Protocol

POST /content/v2.1/ YOUR_MERCHANT_ID 
/products

{
  "offerId": "book123",
  "title": "A Tale of Two Cities",
  "description": "A classic novel about the French Revolution",
  "link": "http://my-book-shop.com/tale-of-two-cities.html",
  "imageLink": "http://my-book-shop.com/tale-of-two-cities.jpg",
  "contentLanguage": "en",
  "targetCountry": "GB",
  "feedLabel": "GB",
  "channel": "online",
  "availability": "in stock",
  "condition": "new",
  "googleProductCategory": "Media > Books",
  "gtin": "9780007350896",
  "price": {
    "value": "2.50",
    "currency": "GBP"
  },
  "shipping": [{
    "country": "GB",
    "service": "Standard shipping",
    "price": {
      "value": "0.99",
      "currency": "GBP"
    }
  }],
  "shippingWeight": {
    "value": "200",
    "unit": "grams"
  }
}

Java

 Product 
  
 product 
  
 = 
  
 new 
  
 Product 
 (); 
 product 
 . 
 setOfferId 
 ( 
 "book123" 
 ); 
 product 
 . 
 setTitle 
 ( 
 "A Tale of Two Cities" 
 ); 
 product 
 . 
 setDescription 
 ( 
 "A classic novel about the French Revolution" 
 ); 
 product 
 . 
 setLink 
 ( 
 "http://my-book-shop.com/tale-of-two-cities.html" 
 ); 
 product 
 . 
 setImageLink 
 ( 
 "http://my-book-shop.com/tale-of-two-cities.jpg" 
 ); 
 product 
 . 
 setContentLanguage 
 ( 
 "en" 
 ); 
 product 
 . 
 setTargetCountry 
 ( 
 "GB" 
 ); 
 product 
 . 
 setChannel 
 ( 
 "online" 
 ); 
 product 
 . 
 setAvailability 
 ( 
 "in stock" 
 ); 
 product 
 . 
 setCondition 
 ( 
 "new" 
 ); 
 product 
 . 
 setGoogleProductCategory 
 ( 
 "Media > Books" 
 ); 
 product 
 . 
 setGtin 
 ( 
 "9780007350896" 
 ); 
 Price 
  
 price 
  
 = 
  
 new 
  
 Price 
 (); 
 price 
 . 
 setValue 
 ( 
 "2.50" 
 ); 
 price 
 . 
 setCurrency 
 ( 
 "GBP" 
 ); 
 product 
 . 
 setPrice 
 ( 
 price 
 ); 
 Price 
  
 shippingPrice 
  
 = 
  
 new 
  
 Price 
 (); 
 shippingPrice 
 . 
 setValue 
 ( 
 "0.99" 
 ); 
 shippingPrice 
 . 
 setCurrency 
 ( 
 "GBP" 
 ); 
 ProductShipping 
  
 shipping 
  
 = 
  
 new 
  
 ProductShipping 
 (); 
 shipping 
 . 
 setPrice 
 ( 
 shippingPrice 
 ); 
 shipping 
 . 
 setCountry 
 ( 
 "GB" 
 ); 
 shipping 
 . 
 setService 
 ( 
 "Standard shipping" 
 ); 
 ArrayList 
   
 shippingList 
  
 = 
  
 new 
  
 ArrayList 
  (); 
 shippingList 
 . 
 add 
 ( 
 shipping 
 ); 
 product 
 . 
 setShipping 
 ( 
 shippingList 
 ); 
 Product 
  
 result 
  
 = 
  
 service 
 . 
 products 
 (). 
 insert 
 ( 
 merchantId 
 , 
  
 product 
 ). 
 execute 
 (); 
 
 

PHP

 $product = new Google_Service_ShoppingContent_Product(); 
 $product->setOfferId('book123'); 
 $product->setTitle('A Tale of Two Cities'); 
 $product->setDescription('A classic novel about the French Revolution'); 
 $product->setLink('http://my-book-shop.com/tale-of-two-cities.html'); 
 $product->setImageLink('http://my-book-shop.com/tale-of-two-cities.jpg'); 
 $product->setContentLanguage('en'); 
 $product->setTargetCountry('GB'); 
 $product->setChannel('online'); 
 $product->setAvailability('in stock'); 
 $product->setCondition('new'); 
 $product->setGoogleProductCategory('Media > Books'); 
 $product->setGtin('9780007350896'); 
 $price = new Google_Service_ShoppingContent_Price(); 
 $price->setValue('2.50'); 
 $price->setCurrency('GBP'); 
 $shipping_price = new Google_Service_ShoppingContent_Price(); 
 $shipping_price->setValue('0.99'); 
 $shipping_price->setCurrency('GBP'); 
 $shipping = new Google_Service_ShoppingContent_ProductShipping(); 
 $shipping->setPrice($shipping_price); 
 $shipping->setCountry('GB'); 
 $shipping->setService('Standard shipping'); 
 $shipping_weight = new Google_Service_ShoppingContent_ProductShippingWeight(); 
 $shipping_weight->setValue(200); 
 $shipping_weight->setUnit('grams'); 
 $product->setPrice($price); 
 $product->setShipping(array($shipping)); 
 $product->setShippingWeight($shipping_weight); 
 $result = $service->products->insert($merchant_id, $product); 

Get a list of products

To get a list of products , use the following code:

Protocol

GET /content/v2.1/ YOUR_MERCHANT_ID 
/products

Java

List productsList = service.products().list(merchantId);

ProductsListResponse page = productsList.execute();
while ((page.getResources() != null) && !page.getResources().isEmpty()) {
  for (Product product : page.getResources()) {
    System.out.printf("%s %s%n", product.getId(), product.getTitle());
  }

  if (page.getNextPageToken() == null) {
    break;
  }

  productsList.setPageToken(page.getNextPageToken());
  page = productsList.execute();
}

PHP

 $ 
 products 
  
 = 
  
 $ 
 service 
 -> 
 products 
 -> 
 listProducts 
 ( 
 $ 
 merchantId 
 ); 
 $ 
 parameters 
  
 = 
  
 array 
 (); 
 while 
  
 ( 
 ! 
 empty 
 ( 
 $ 
 products 
 -> 
 getResources 
 ()) 
  
 { 
  
 foreach 
  
 ( 
 $ 
 products 
 -> 
 getResources 
 () 
  
 as 
  
 $ 
 product 
 ) 
  
 { 
  
 printf 
 ( 
 "%s %s\n" 
 , 
  
 $ 
 product 
 -> 
 getId 
 (), 
  
 $ 
 product 
 -> 
 getTitle 
 ()); 
  
 } 
  
 if 
  
 ( 
 ! 
 empty 
 ( 
 $ 
 products 
 -> 
 getNextPageToken 
 ()) 
  
 { 
  
 break 
 ; 
  
 } 
  
 $ 
 parameters 
 [ 
 'pageToken' 
 ] 
  
 = 
  
 $ 
 products 
 -> 
 nextPageToken 
 ; 
  
 $ 
 products 
  
 = 
  
 $ 
 service 
 -> 
 products 
 -> 
 listProducts 
 ( 
 $ 
 merchantId 
 , 
  
 $ 
 parameters 
 ); 
 } 

Retrieve a specific product

To retrieve a specific product from the list , use the following code:

Protocol

GET /content/v2.1/ YOUR_MERCHANT_ID 
/products/online:en:GB:book123

Java

 Product 
  
 product 
  
 = 
  
 service 
 . 
 products 
 () 
  
 . 
 get 
 ( 
 merchantId 
 , 
  
 "online:en:GB:book123" 
 ) 
  
 . 
 execute 
 (); 
 System 
 . 
 out 
 . 
 printf 
 ( 
 "%s %s\n" 
 , 
  
 product 
 . 
 getId 
 (), 
  
 product 
 . 
 getTitle 
 ()); 

PHP

 $ 
 product 
  
 = 
  
 $ 
 service- 
 > 
 products- 
 > 
 get 
 ($ 
 merchant_id 
 , 
  
 'online:en:GB:book123' 
 ); 
 printf 
 ( 
 "%s %s\n" 
 , 
  
 $ 
 product- 
 > 
 getId 
 (), 
  
 $ 
 product- 
 > 
 getTitle 
 ()); 

Update online product availability

You can use Supplemental Feeds in the Products resource to update online product data with the following code:

Protocol

POST /content/v2.1/ YOUR_MERCHANT_ID 
/products? YOUR_SUPPLEMENTAL_FEED_ID 
{
  "offerId": "book123",
  "contentLanguage": "en",
  "targetCountry": "GB",
  "feedLabel": "GB",
  "channel": "online",
  "availability": "out of stock"
}

Java

Product product = new Product();
// Mandatory Fields
product.setOfferId("book123");
product.setContentLanguage("en");
product.setTargetCountry("GB");
product.setChannel("online");

// Optional Fields to Update
product.setAvailability("out of stock");

// Your unique supplemental feedId
feedId=123456789

Product result = service.products().insert(merchantId, product, feedId).execute();

PHP

 $ 
 product 
  
 = 
  
 new 
  
 Google_Service_ShoppingContent_Product 
 (); 
 // Mandatory Fields 
 $ 
 product 
 -> 
 setOfferId 
 ( 
 'book123' 
 ); 
 $ 
 product 
 -> 
 setContentLanguage 
 ( 
 'en' 
 ); 
 $ 
 product 
 -> 
 setTargetCountry 
 ( 
 'GB' 
 ); 
 $ 
 product 
 -> 
 setChannel 
 ( 
 'online' 
 ); 
 // Optional Fields to Update 
 $ 
 product 
 -> 
 setAvailability 
 ( 
 'out of stock' 
 ); 
 // Your unique supplemental feedId 
 $ 
 feedId 
 = 
 123456789 
 $ 
 result 
  
 = 
  
 $ 
 service 
 -> 
 products 
 -> 
 insert 
 ( 
 $ 
 merchant_id 
 , 
  
 $ 
 product 
 , 
  
 $ 
 feedId 
 ); 

Update local product availability

You can use the Local Inventory Service to update local product data with the following code:

Protocol

POST /content/v2.1/ YOUR_MERCHANT_ID 
/localinventory/online/products/online:en:GB:book123

{
  "availability": "out of stock"
}

Java

Product product = new Product();
// Mandatory Fields
product.setOfferId("book123");
product.setContentLanguage("en");
product.setTargetCountry("GB");
product.setChannel("online");

// Optional Fields to Update
product.setAvailability("out of stock");

Product result = service.localinventory().insert(merchantId, product).execute();

PHP

 $ 
 product 
  
 = 
  
 new 
  
 Google_Service_ShoppingContent_Product 
 (); 
 // Mandatory Fields 
 $ 
 product 
 -> 
 setOfferId 
 ( 
 'book123' 
 ); 
 $ 
 product 
 -> 
 setContentLanguage 
 ( 
 'en' 
 ); 
 $ 
 product 
 -> 
 setTargetCountry 
 ( 
 'GB' 
 ); 
 $ 
 product 
 -> 
 setChannel 
 ( 
 'online' 
 ); 
 // Optional Fields to Update 
 $ 
 product 
 -> 
 setAvailability 
 ( 
 'out of stock' 
 ); 
 $ 
 result 
  
 = 
  
 $ 
 service 
 -> 
 localinventory 
 -> 
 insert 
 ( 
 $ 
 merchant_id 
 , 
  
 $ 
 product 
 ); 
Design a Mobile Site
View Site in Mobile | Classic
Share by: