Вы можете использовать подинтерфейс API «Inventories» для указания наличия ваших товаров в физических магазинах. Подробнее о миграции из Content API for Shopping см. в разделе «Миграция управления запасами» . Для локальных товаров требуется дополнительная информация, например, storeCode и availability . Подробнее о полях, которые можно указать, см. в разделе «Спецификация данных о локальных запасах» .
Ключевой термин: в подинтерфейсе API «Запасы» продукты, которые вы продаете в физических магазинах, называются локальными продуктами.
Вот шаги, которые нужно выполнить для добавления информации о местных товарах в магазине:
Подключите свой бизнес к Merchant Center
Для размещения местных товаров в Google вам понадобится профиль компании и аккаунт продавца .
Настройте свои учетные записи для размещения локальных листингов продуктов и Настройте свою учетную запись для местного инвентаря .
После настройки учетных записей свяжите свой бизнес-профиль и учетную запись Merchant Center .
Подпишитесь на бесплатные местные объявления
После привязки профиля компании к аккаунту Merchant Center вы сможете бесплатно размещать местные объявления . Обязательно соблюдайте правила бесплатного размещения объявлений .
Участвуя в бесплатных локальных листингах , ваши товары, продающиеся в магазине, могут отображаться в бесплатных листингах на всех ресурсах Google.
Убедитесь, что у вас есть местные продукты
Прежде чем добавлять локальные запасы к продуктам, вам следует проверить, есть ли у вас продукты, ориентированные на локальные (физические магазины) пункты назначения (это также известно как методы маркетинга ).
Вставьте информацию о магазине
 После добавления локальных товаров в аккаунт Merchant Center вы можете добавить информацию о магазине, например, store_code , price и availability . Вот пример добавления информации о магазине к товару с помощью localInventories.insert : 
Ява
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.InsertLocalInventoryRequest;
import com.google.shopping.merchant.inventories.v1.LocalInventory;
import com.google.shopping.merchant.inventories.v1.LocalInventoryAttributes;
import com.google.shopping.merchant.inventories.v1.LocalInventoryAttributes.Availability;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.LocalInventoryServiceSettings;
import com.google.shopping.type.Price;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to insert a Local inventory for a given product */
public class InsertLocalInventorySample {
  private static String getParent(String accountId, String productId) {
    return String.format("accounts/%s/products/%s", accountId, productId);
  }
  public static void insertLocalInventory(Config config, String productId, String storeCode)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();
    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();
    String parent = getParent(config.getAccountId().toString(), productId);
    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {
      Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();
      InsertLocalInventoryRequest request =
          InsertLocalInventoryRequest.newBuilder()
              .setParent(parent)
              .setLocalInventory(
                  LocalInventory.newBuilder()
                      .setStoreCode(storeCode)
                      .setLocalInventoryAttributes(
                          LocalInventoryAttributes.newBuilder()
                              .setAvailability(Availability.OUT_OF_STOCK)
                              .setPrice(price)
                              .build())
                      .build())
              .build();
      System.out.println("Sending insert LocalInventory request");
      LocalInventory response = localInventoryServiceClient.insertLocalInventory(request);
      System.out.println("Inserted LocalInventory Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // An ID assigned to a product by Google. In the format
    // channel:contentLanguage:feedLabel:offerId
    String productId = "local:en:label:1111111111";
    // The code uniquely identifying each store.
    String storeCode = "Example1";
    insertLocalInventory(config, productId, storeCode);
  }
}
cURL
  curl --location
  'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/en~US~12345/localInventories:insert' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
     "storeCode": "123456",
     "localInventoryAttributes": {
       "price": {
         "amountMicros": "33450000",
         "currencyCode": "USD"
       },
       "availability": "OUT_OF_STOCK"
     }
  }'
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\LocalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\LocalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\InsertLocalInventoryRequest;
use Google\Shopping\Merchant\Inventories\V1\LocalInventoryAttributes;
use Google\Shopping\Merchant\Inventories\V1\LocalInventoryAttributes\Availability;
use Google\Shopping\Type\Price;
/**
 * Class to insert a `LocalInventory` to a given product in your
 * merchant account.
 *
 * Replaces the full `LocalInventory` resource if an entry with the same
 * [`storeCode`]
 * [google.shopping.merchant.inventories.v1beta.LocalInventory.storeCode]
 * already exists for the product.
 *
 * It might take up to 30 minutes for the new or updated `LocalInventory`
 * resource to appear in products.
 */
class InsertLocalInventory
{
    // ENSURE you fill in the merchant account and product ID for the sample to
    // work.
    private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
    // ENSURE you fill in store code for the sample to work.
    private const LOCAL_INVENTORY_STORE_CODE = 'INSERT_STORE_CODE_HERE';
    /**
     * Inserts a local inventory underneath the parent product.
     *
     * @param string $parent The account and product where this inventory will be inserted.
     *     Format: `accounts/{account}/products/{product}`
     * @param string $localInventoryRegion
     *     ID of the region for this
     *     `LocalInventory` resource. See the [Local availability and
     *     pricing](https://support.google.com/merchants/answer/9698880) for more details.
     */
    public function insertLocalInventorySample(
        string $parent,
        string $localInventoryStoreCode
    ): void {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();
        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];
        // Creates a client.
        $localInventoryServiceClient = new LocalInventoryServiceClient($options);
        // Creates a price object.
        $price = new Price(
            [
                'currency_code' => "USD",
                'amount_micros' => 33450000,
            ]
        );
        // Creates a new local inventory object.
        $localInventory = (new LocalInventory())
            ->setStoreCode($localInventoryStoreCode)
            ->setLocalInventoryAttributes((new LocalInventoryAttributes())
                ->setAvailability(Availability::IN_STOCK)
                ->setPrice($price));
        $request = (new InsertLocalInventoryRequest())
            ->setParent($parent)
            ->setLocalInventory($localInventory);
        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var LocalInventory $response */
            $response = $localInventoryServiceClient->insertLocalInventory($request);
            printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }
    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        // Makes the call to insert the local inventory to the parent product
        // for the given region.
        $this->insertLocalInventorySample($this::PARENT, $this::LOCAL_INVENTORY_STORE_CODE);
    }
}
$sample = new InsertLocalInventory();
$sample->callSample();
Питон
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
from google.shopping.merchant_inventories_v1.types import LocalInventoryAttributes
# ENSURE you fill in product ID and store code for the sample to
# work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# ENSURE you fill in product ID for the sample to work.
_PRODUCT = "INSERT_PRODUCT_HERE"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
# ENSURE you fill in store code for the sample to work.
_STORE_CODE = "INSERT_STORE_CODE_HERE"
def insert_local_inventory():
  """Inserts a `LocalInventory` to a given product.
  Replaces the full `LocalInventory` resource if an entry with the same
  `region` already exists for the product.
  It might take up to 30 minutes for the new or updated `LocalInventory`
  resource to appear in products.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()
  # Creates a client.
  client = merchant_inventories_v1.LocalInventoryServiceClient(
      credentials=credentials
  )
  # Creates a Local inventory and populate its attributes.
  local_inventory = merchant_inventories_v1.LocalInventory()
  local_inventory.store_code = _STORE_CODE
  local_inventory.local_inventory_attributes.availability = (
      LocalInventoryAttributes.Availability.IN_STOCK
  )
  local_inventory.local_inventory_attributes.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }
  # Creates the request.
  request = merchant_inventories_v1.InsertLocalInventoryRequest(
      parent=_PARENT,
      local_inventory=local_inventory,
  )
  # Makes the request and catch and print any error messages.
  try:
    response = client.insert_local_inventory(request=request)
    print("Insert successful")
    print(response)
  except RuntimeError as e:
    print("Insert failed")
    print(e)
if __name__ == "__main__":
  insert_local_inventory()
Этот вызов возвращает точно такие же значения, которые вы отправляете, и может не полностью отражать окончательные данные по инвентаризации.
 Отображение нового LocalInventory в продукте может занять до 30 минут.