> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Google My Business Integration for AI Agents & Workflows

> Manage Google Business Profile posts, reviews, and replies

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/google-my-business.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=db5434dd348274e3a1289b5bea5c1719" alt="Google My Business logo" width="72" height="72" data-path="logos/google-my-business.svg" />

## Overview

Add **Google My Business** to any ModuleX agent or workflow. Manage Google Business Profile posts, reviews, and replies via the Google My Business API (`mybusiness.googleapis.com/v4`).

<Info>
  **Categories**: Marketing & Advertising · Marketing · Local Business · Reviews · **Auth**: OAuth2 · **Actions**: 6
</Info>

## Authentication

### OAuth2 Authentication

Connect using Google OAuth (recommended)

#### Required Credentials

| Field         | Description                    | Required | Format                                                                  |
| ------------- | ------------------------------ | -------- | ----------------------------------------------------------------------- |
| Client ID     | Google OAuth App Client ID     | Yes      | `123456789-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com` |
| Client Secret | Google OAuth App Client Secret | Yes      | `GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx`                                       |

#### OAuth Configuration

* **Authorization URL**: `https://accounts.google.com/o/oauth2/v2/auth`
* **Token URL**: `https://oauth2.googleapis.com/token`
* **Scopes**: `https://www.googleapis.com/auth/business.manage`

## Available Actions

<AccordionGroup>
  <Accordion title="create_post — Create a new local post associated with a location">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location" type="string" required>
      Location name/ID whose local posts will be created
    </ResponseField>

    <ResponseField name="topic_type" type="string" required>
      Topic type of the local post: STANDARD, EVENT, OFFER, or ALERT
    </ResponseField>

    <ResponseField name="language_code" type="string">
      Language of the local post (e.g. en-US)
    </ResponseField>

    <ResponseField name="summary" type="string">
      Description/body of the local post
    </ResponseField>

    <ResponseField name="call_to_action" type="object">
      Action performed when user clicks through the post. Object with actionType and url fields
    </ResponseField>

    <ResponseField name="event" type="object">
      Event information. Required for topic types EVENT and OFFER. Object with title, schedule (startDate, startTime, endDate, endTime)
    </ResponseField>

    <ResponseField name="media" type="array">
      Media associated with the post. Array of objects with sourceUrl (publicly accessible URL) fields
    </ResponseField>

    <ResponseField name="media_format" type="string">
      Format of the media items: PHOTO or VIDEO
    </ResponseField>

    <ResponseField name="alert_type" type="string">
      Type of alert for ALERT topic type: ALERT\_TYPE\_UNSPECIFIED or COVID\_19
    </ResponseField>

    <ResponseField name="offer" type="object">
      Additional data for offer posts (only for OFFER topic type). Object with couponCode, redeemOnlineUrl, termsConditions
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LocalPost": {
          "additionalProperties": false,
          "description": "A Google My Business local post.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "summary": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Summary"
            },
            "topic_type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Topic Type"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "create_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Create Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            },
            "search_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Search Url"
            },
            "event": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Event"
            },
            "offer": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Offer"
            },
            "call_to_action": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Call To Action"
            }
          },
          "title": "LocalPost",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "post": {
          "anyOf": [
            {
              "$ref": "#/$defs/LocalPost"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CreatePostOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="create_update_reply_to_review — Create or update a reply to the specified review">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location" type="string" required>
      Location name/ID of the review
    </ResponseField>

    <ResponseField name="review" type="string" required>
      Review name/ID to reply to
    </ResponseField>

    <ResponseField name="comment" type="string" required>
      Body of the reply as plain text (max 4096 bytes)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "comment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Comment"
        },
        "update_time": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Update Time"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateUpdateReplyToReviewOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_reviews_multiple_locations — Get reviews from multiple locations at once">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location_names" type="array" required>
      List of location name/ID strings to get reviews from
    </ResponseField>

    <ResponseField name="page_size" type="integer">
      Number of reviews to return per location (max 50) (Default: `50`)
    </ResponseField>

    <ResponseField name="order_by" type="string">
      How to order reviews: 'createTime desc', 'createTime asc', 'updateTime desc', or 'updateTime asc'
    </ResponseField>

    <ResponseField name="ignore_rating_only_reviews" type="boolean">
      If true, only return reviews that have textual content (Default: `false`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LocationReview": {
          "additionalProperties": false,
          "description": "A review associated with a location in a batch response.",
          "properties": {
            "location_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Location Name"
            },
            "reviews": {
              "items": {
                "$ref": "#/$defs/Review"
              },
              "title": "Reviews",
              "type": "array"
            }
          },
          "title": "LocationReview",
          "type": "object"
        },
        "Review": {
          "additionalProperties": false,
          "description": "A Google My Business review.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "review_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Review Id"
            },
            "reviewer_display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Reviewer Display Name"
            },
            "star_rating": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Star Rating"
            },
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "create_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Create Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            },
            "review_reply": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ReviewReply"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            }
          },
          "title": "Review",
          "type": "object"
        },
        "ReviewReply": {
          "additionalProperties": false,
          "description": "A reply to a review.",
          "properties": {
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            }
          },
          "title": "ReviewReply",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "location_reviews": {
          "items": {
            "$ref": "#/$defs/LocationReview"
          },
          "title": "Location Reviews",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetReviewsMultipleLocationsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_specific_review — Return a specific review by name">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location" type="string" required>
      Location name/ID of the review
    </ResponseField>

    <ResponseField name="review" type="string" required>
      Review name/ID to retrieve
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "Review": {
          "additionalProperties": false,
          "description": "A Google My Business review.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "review_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Review Id"
            },
            "reviewer_display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Reviewer Display Name"
            },
            "star_rating": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Star Rating"
            },
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "create_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Create Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            },
            "review_reply": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ReviewReply"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            }
          },
          "title": "Review",
          "type": "object"
        },
        "ReviewReply": {
          "additionalProperties": false,
          "description": "A reply to a review.",
          "properties": {
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            }
          },
          "title": "ReviewReply",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "review": {
          "anyOf": [
            {
              "$ref": "#/$defs/Review"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "GetSpecificReviewOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_all_reviews — List all reviews of a location to audit reviews in bulk">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location" type="string" required>
      Location name/ID whose reviews will be listed
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "Review": {
          "additionalProperties": false,
          "description": "A Google My Business review.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "review_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Review Id"
            },
            "reviewer_display_name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Reviewer Display Name"
            },
            "star_rating": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Star Rating"
            },
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "create_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Create Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            },
            "review_reply": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ReviewReply"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            }
          },
          "title": "Review",
          "type": "object"
        },
        "ReviewReply": {
          "additionalProperties": false,
          "description": "A reply to a review.",
          "properties": {
            "comment": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comment"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            }
          },
          "title": "ReviewReply",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "reviews": {
          "items": {
            "$ref": "#/$defs/Review"
          },
          "title": "Reviews",
          "type": "array"
        },
        "next_page_token": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Page Token"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListAllReviewsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_posts — List local posts associated with a location">
    ### Parameters

    <ResponseField name="account" type="string" required>
      Account name/ID for the Google Business Profile account
    </ResponseField>

    <ResponseField name="location" type="string" required>
      Location name/ID whose local posts will be listed
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Max number of posts to retrieve (each request retrieves up to 100, maximum 1000) (Default: `100`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "LocalPost": {
          "additionalProperties": false,
          "description": "A Google My Business local post.",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "summary": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Summary"
            },
            "topic_type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Topic Type"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "State"
            },
            "create_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Create Time"
            },
            "update_time": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Update Time"
            },
            "search_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Search Url"
            },
            "event": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Event"
            },
            "offer": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Offer"
            },
            "call_to_action": {
              "anyOf": [
                {
                  "additionalProperties": true,
                  "type": "object"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Call To Action"
            }
          },
          "title": "LocalPost",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "posts": {
          "items": {
            "$ref": "#/$defs/LocalPost"
          },
          "title": "Posts",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListPostsOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Google My Business API is subject to Google Cloud project quotas (typically 60 requests/minute per project by default).
* Some endpoints may return 429 status if quota is exceeded.
* Error model: non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Ahrefs" href="/integrations/tools/ahrefs" />

  <Card title="Google Ad Manager" href="/integrations/tools/google-ad-manager" />

  <Card title="Google Search Console" href="/integrations/tools/google-search-console" />
</CardGroup>

## Links

* [Google My Business](https://business.google.com)
