Link a Google business profile

A Google business group is like a shared folder for your locations. A business group provides a safe way to share management of your locations with multiple users. For more information, see About business groups.

Before you upload your local inventory, specify the business group that your Merchant Center account will be responsible for. You can get the list of eligible business groups from the Business Profile using the Merchant API, but to get access you first need to link your account to a Business Profile.

Request access to a Business Profile

To get access to a business profile, use the gbpAccounts.LinkGbpAccount method:

POST https://merchantapi.googleapis.com/accounts/v1beta/accounts/<var>ACCOUNT_ID</var>/gbpAccounts:linkGbpAccount

{
  "gbpEmail": "admin@example.com",
}

Replace the following:

  • ACCOUNT_ID: the unique identifier of your Merchant Center account
  • GBP_EMAIL: the email of the administrator for the Business Profile

Upon calling this method, the service sends an email to the specified administrator, asking to either accept or decline the access request. If the administrator does not respond within 7 days, the request expires automatically.

List the available business groups

Once the administrator has approved the request, you can check available business groups using the gbpAccounts.List method.

Here's a sample request and successful response:

GET https://merchantapi.googleapis.com/accounts/v1beta/accounts/<var>ACCOUNT_ID</var>/gbpAccounts

Response:
200 OK
{
  "gbpAccounts": [
    {
      "name": "accounts/<var>ACCOUNT</var>/gbpAccounts/12345",
      "gbpAccountId": 12345,
      "type": USER,
      "gbpAccountName": "admin@example.com",
      "listingCount": 15
    }, {
      "name": "accounts/<var>ACCOUNT</var>/gbpAccounts/67890",
      "gbpAccountId": 67890,
      "type": BUSINESS_ACCOUNT,
      "gbpAccountName": "Google My Business Account",
      "listingCount": 23
    }
  ],
  "nextPageToken": 50
}

You can utilize this code sample to retrieve all the eligible business groups:

package shopping.merchant.samples.accounts.v1beta;

// [START merchantapi_list_gbp_accounts]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1beta.AccountName;
import com.google.shopping.merchant.accounts.v1beta.GbpAccount;
import com.google.shopping.merchant.accounts.v1beta.GbpAccountsServiceClient;
import com.google.shopping.merchant.accounts.v1beta.GbpAccountsServiceClient.ListGbpAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1beta.GbpAccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.ListGbpAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 *   This class demonstrates how to get the list of GBP accounts for a given Merchant Center account
 */
public class ListGbpAccountsSample {

  public static void listGbpAccounts(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the retrieved credentials.
    GbpAccountsServiceSettings gbpAccountsServiceSettings =
        GbpAccountsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String accountId = config.getAccountId().toString();
    // Creates parent to identify the omnichannelSetting from which to list all Lfp Providers.
    String parent = AccountName.newBuilder().setAccount(accountId).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (GbpAccountsServiceClient gbpAccountsServiceClient =
        GbpAccountsServiceClient.create(gbpAccountsServiceSettings)) {
      ListGbpAccountsRequest request =
          ListGbpAccountsRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list GBP accounts request:");
      ListGbpAccountsPagedResponse response = gbpAccountsServiceClient.listGbpAccounts(request);

      int count = 0;

      // Iterates over all the entries in the response.
      for (GbpAccount gbpAccount : response.iterateAll()) {
        System.out.println(gbpAccount);
        count++;
      }
      System.out.println(String.format("The following count of elements were returned: %d", count));
    } catch (Exception e) {
      System.out.println("An error has occurred: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    listGbpAccounts(config);
  }
}
// [END merchantapi_list_gbp_accounts]

Specify the business group for the Merchant Center account

list of available business groups, you can associate the business group with your Merchant Center account. For example, if you wanted to choose the business group with the GBP account ID 12345 (returned from the previous step), you can use AccountServices.proposeAccountService:

POST
https://merchantapi.googleapis.com/accounts/v1beta/accounts/<var>ACCOUNT_ID</var>/services:propose
{
  provider: "providers/GOOGLE_BUSINESS_PROFILE",
  account_service: {
    external_account_id: "12345",
    local_listing_management {}
  }
}

Note that the provider field must be providers/GOOGLE_BUSINESS_PROFILE. You must set an empty LocalListingManagement field in the request.

Submit product and inventory data

Now that you have associated your Merchant Center account with a business group, you can upload your product and local inventory data. For more information, see