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

# Google reviews

> Read Google Business Profile reviews and post the owner's public reply.

When someone finds your business on Google or Maps, reviews are the first thing they read. MADIAD
Hub reads every review on a location and posts the owner's reply, over the same Google connection
the Profile already uses for Google Business posts — no extra permission needed.

<Note>
  Requires a Profile with **Google Business** connected. See [Channels](/concepts/channels).
</Note>

## List locations

One Google account can own several locations. Call this first to get a `location_id`.

```bash theme={null}
curl "https://api.madiad.com/v1/gbp/locations?profile_id=$PROFILE_ID" \
  -H "Authorization: Bearer $MADIAD_API_KEY"
```

## Read reviews

<Note>
  **Platforms:** Google Business only. Reviews on Facebook, TikTok Shop or marketplaces are not
  readable here.
</Note>

```bash theme={null}
curl "https://api.madiad.com/v1/gbp/reviews?profile_id=$PROFILE_ID&location_id=locations/1578..." \
  -H "Authorization: Bearer $MADIAD_API_KEY"
```

| Parameter                | Required    | Notes                                                                                                                  |
| ------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------- |
| `profile_id`             | Yes         | One of your Profiles                                                                                                   |
| `location_id`            | Conditional | Omit when the Profile has exactly one location, or when a default location was chosen while connecting Google Business |
| `pageSize` · `pageToken` | No          | Pagination; `pageToken` comes from the prior `nextPageToken`                                                           |
| `orderBy`                | No          | e.g. `updateTime desc`, `rating desc`                                                                                  |

The response carries the location's `averageRating` and `totalReviewCount`. Each review's `name`
is its full resource path — that is what you pass back to reply.

<Warning>
  If the Profile has **more than one** location and you omit `location_id`, the default location
  chosen while connecting Google Business is used. Without a default the request answers `400` with
  `code: "location_required"` and names the locations: picking one for you is how a public reply eventually lands on the wrong
  storefront. The response's `location_source` says which applied (`requested`, `only_location` or
  `connection_default`), `location_id` names the location used, and `locations` lists every location
  of the Profile (`location_id` + `title`).

  A `location_id` the Profile does not own answers `404`.
</Warning>

## Reply to a review

<Note>
  Replying to a review needs the **Business** plan or above, alongside private messaging and
  AutoDM. Reading reviews is open to every active plan.

  This differs from [replying to a comment](/concepts/engagement), which is included from Starter:
  a comment sits under your own post, whereas a review sits on the business's Google profile and
  the reply stands there long-term next to the star rating.
</Note>

```bash theme={null}
curl -X POST https://api.madiad.com/v1/gbp/reviews/reply \
  -H "Authorization: Bearer $MADIAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "'$PROFILE_ID'",
    "review_name": "accounts/1180.../locations/1578.../reviews/AbFvOqk",
    "comment": "Thank you for taking the time to write this. See you again soon."
  }'
```

Pass either `review_name` (copied from the reviews list) or `review_id` + `location_id`.
`review_name` is the tidier one: the location is already inside the path, so the two cannot disagree.

Calling it again on the same review **replaces** the existing reply rather than adding a second one.
