Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Google Business Profile

Scalekit connector
Open markdown

The Google Business Profile connector lets your AI agent act in each user's Google Business Profile account. Each user signs in to Google Business Profile once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 56 tools.

Tools
56
What they doRead · write · destructive
28 · 20 · 828 read20 write8 destructive
Users sign in with
OAuth app
Your own Google app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Google Business Profile connection

    In AgentKit > Connections, create a Google Business Profile connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register a Google OAuth app

    Google Business Profile connections use your own OAuth app. Register one with Google and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Google Business Profile connection.

    Console steps with screenshots

    Register your Scalekit environment with the Google Business Profile connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Google Business Profile and click Create. Click Use your own credentials and copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

      • Navigate to Google Cloud Console → APIs & Services → Credentials. Select + Create Credentials, then OAuth client ID. Choose Web application from the Application type menu.

        Select Web Application in Google OAuth settings

      • Under Authorized redirect URIs, click + Add URI, paste the redirect URI, and click Create.

        Add authorized redirect URI in Google Cloud Console

    2. Enable the Google Business Profile API

      • In Google Cloud Console, go to APIs & Services → Library. Search for “Google Business Profile API” (previously “My Business Business Information API”) and click Enable.
    3. Get client credentials

      • Google provides your Client ID and Client Secret after you create the OAuth client ID in step 1.
    4. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      • Copy the Connection name shown on that connection and use that exact value in your code as connection_name or connectionName. It may be something like local-seo-agent-googlebusinessprofile, not googlebusinessprofile.

      • Enter your credentials:

        Add credentials in Scalekit dashboard

      • Click Save.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'googlebusinessprofile'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Google Business Profile:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'googlebusinessprofile_list_accounts',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • googlebusinessprofile_categories_batch_getFetch the localized display names for one or more specific Google Business Profile category IDs at once, given a language code.Read-only

    Batch Get Business Categories

    Fetch the localized display names for one or more specific Google Business Profile category IDs at once, given a language code. Complements List Business Categories, which enumerates all available categories, by resolving a known set of category resource names directly.

    Inputs

    language_codestringrequired
    BCP 47 language code to localize the category display names, e.g. en.
    namesarrayrequired
    The category resource names to look up, e.g. categories/gcid:restaurant. Obtain valid IDs from the List Business Categories tool.
    region_codestring
    ISO 3166-1 alpha-2 country code to further localize the results.
    viewstring
    The level of detail to return for each category. BASIC returns only name; FULL also returns additional details.one of CATEGORY_VIEW_UNSPECIFIEDBASICFULL
  • googlebusinessprofile_get_accountFetch details for a single Google Business Profile account by its resource name.Read-only

    Get Account

    Fetch details for a single Google Business Profile account by its resource name. Returns the account's display name, type (PERSONAL, LOCATION_GROUP, USER_GROUP, ORGANIZATION), the caller's role (PRIMARY_OWNER, OWNER, MANAGER, SITE_MANAGER), verification state, vetted state, and account number.

    Inputs

    namestringrequired
    The account resource name to fetch, in the form accounts/{account_id}. Example: accounts/106234523651626475467.
  • googlebusinessprofile_get_chainGet a single business chain's full details by its resource name (chains/{chain_id}): its chain names and the websites and location counts associated with it.Read-only

    Get Chain

    Get a single business chain's full details by its resource name (chains/{chain_id}): its chain names and the websites and location counts associated with it. Use Search Business Chains first to find a chain's resource name by its display name.

    Inputs

    namestringrequired
    The resource name of the chain to retrieve, in the form chains/{chain_id}.
  • googlebusinessprofile_get_daily_metricFetch a time series for a single daily performance metric (views, searches, calls, direction requests, bookings, food orders, etc.) for a Google Business Profile location over a specified daily date range.Read-only

    Get Daily Metric Time Series

    Fetch a time series for a single daily performance metric (views, searches, calls, direction requests, bookings, food orders, etc.) for a Google Business Profile location over a specified daily date range. Requires the location resource name, exactly one DailyMetric enum value, and a complete start/end date (year, month, day for each). Returns a time series of daily values for the requested metric. Use Get Location Insights instead if you need multiple metrics in one call.

    Inputs

    dailyMetricstringrequired
    The single DailyMetric enum value to fetch a time series for. Valid values: BUSINESS_IMPRESSIONS_DESKTOP_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH, BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH, BUSINESS_CONVERSATIONS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS, WEBSITE_CLICKS, BUSINESS_BOOKINGS, BUSINESS_FOOD_ORDERS, BUSINESS_FOOD_MENU_CLICKS.one of DAILY_METRIC_UNKNOWNBUSINESS_IMPRESSIONS_DESKTOP_MAPSBUSINESS_IMPRESSIONS_DESKTOP_SEARCHBUSINESS_IMPRESSIONS_MOBILE_MAPSBUSINESS_IMPRESSIONS_MOBILE_SEARCHBUSINESS_CONVERSATIONSBUSINESS_DIRECTION_REQUESTSCALL_CLICKSWEBSITE_CLICKSBUSINESS_BOOKINGSBUSINESS_FOOD_ORDERSBUSINESS_FOOD_MENU_CLICKS
    end_dayintegerrequired
    Day of the end date for the metric range (1-31), e.g. 30. Required together with end_year and end_month.
    end_monthintegerrequired
    Month of the end date for the metric range (1-12), e.g. 6. Required together with end_year and end_day.
    end_yearintegerrequired
    Year of the end date for the metric range, e.g. 2026. Required together with end_month and end_day to form a complete end date.
    namestringrequired
    The location resource name to fetch the metric for, in the form locations/{location_id}. Example: locations/12345678901234567890.
    start_dayintegerrequired
    Day of the start date for the metric range (1-31), e.g. 1. Required together with start_year and start_month.
    start_monthintegerrequired
    Month of the start date for the metric range (1-12), e.g. 6. Required together with start_year and start_day.
    start_yearintegerrequired
    Year of the start date for the metric range, e.g. 2026. Required together with start_month and start_day to form a complete start date.
  • googlebusinessprofile_get_insightsFetch one or more daily performance metrics (views, searches, calls, direction requests, bookings, food orders, etc.) for a Google Business Profile location over a specified daily date range.Read-only

    Get Location Insights

    Fetch one or more daily performance metrics (views, searches, calls, direction requests, bookings, food orders, etc.) for a Google Business Profile location over a specified daily date range. Requires the location resource name, at least one DailyMetric enum value, and a complete start/end date (year, month, day for each). Returns a time series of daily values per requested metric.

    Inputs

    dailyMetricsarrayrequired
    One or more DailyMetric enum values to fetch time series for. At least one is required. Valid values: BUSINESS_IMPRESSIONS_DESKTOP_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH, BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH, BUSINESS_CONVERSATIONS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS, WEBSITE_CLICKS, BUSINESS_BOOKINGS, BUSINESS_FOOD_ORDERS, BUSINESS_FOOD_MENU_CLICKS.
    end_dayintegerrequired
    Day of the end date for the metrics range (1-31), e.g. 30. Required together with end_year and end_month.
    end_monthintegerrequired
    Month of the end date for the metrics range (1-12), e.g. 6. Required together with end_year and end_day.
    end_yearintegerrequired
    Year of the end date for the metrics range, e.g. 2026. Required together with end_month and end_day to form a complete end date.
    locationstringrequired
    The location resource name to fetch performance metrics for, in the form locations/{location_id}. Example: locations/12345678901234567890.
    start_dayintegerrequired
    Day of the start date for the metrics range (1-31), e.g. 1. Required together with start_year and start_month.
    start_monthintegerrequired
    Month of the start date for the metrics range (1-12), e.g. 6. Required together with start_year and start_day.
    start_yearintegerrequired
    Year of the start date for the metrics range, e.g. 2026. Required together with start_month and start_day to form a complete start date.
  • googlebusinessprofile_get_locationFetch merchant-set data for a single Google Business Profile location by its resource name.Read-only

    Get Location

    Fetch merchant-set data for a single Google Business Profile location by its resource name. Requires a readMask specifying which Location fields to return (e.g. name,title,storefrontAddress,phoneNumbers,regularHours,categories). Returns only the requested fields.

    Inputs

    namestringrequired
    The location resource name to fetch, in the form locations/{location_id}. Example: locations/12345678901234567890.
    readMaskstring
    Required. Comma-separated list of Location fields to return, using the Location resource's field names. Defaults to name,title,storefrontAddress,phoneNumbers,regularHours,categories if not specified.default name,title,storefrontAddress,phoneNumbers,regularHours,categories
  • googlebusinessprofile_get_location_attributesFetch the merchant-set attributes for a Google Business Profile location, such as amenities, payment options, accessibility features, and other category-specific attributes.Read-only

    Get Location Attributes

    Fetch the merchant-set attributes for a Google Business Profile location, such as amenities, payment options, accessibility features, and other category-specific attributes. Requires the attributes resource name in the form locations/{location_id}/attributes. Returns the current attribute values (booleans, enums, URLs, or repeated-enum selections) for the location.

    Inputs

    namestringrequired
    The resource name of the attributes to fetch, in the form locations/{location_id}/attributes. Example: locations/12345678901234567890/attributes.
  • googlebusinessprofile_get_location_google_updatedSee Google's version of a Business Profile location's data, including any crowd-sourced edits Google has applied that differ from the data the business submitted.Read-only

    Get Location (Google-Updated View)

    See Google's version of a Business Profile location's data, including any crowd-sourced edits Google has applied that differ from the data the business submitted. Useful for auditing drift between what the merchant set and what is actually showing on Google Search and Maps.

    Inputs

    namestringrequired
    The location resource name to check, in the form locations/{location_id}.
    read_maskstring
    Comma-separated list of Location fields to return, e.g. title,phoneNumbers,storefrontAddress. Defaults to all fields if omitted.