# List a Google Maps place's reviews

Returns a Google Maps place's reviews, with rating, text, author, date and the owner's response. Use it to track what customers say about a place.

Tool `google.maps.reviews` on Google. Contract version 1, released 2026-10-27.

## Example call

Over REST, send the input in the body. Over MCP, pass the same input to `call_tool`.

cURL:

```bash
curl https://api.voxoria.ai/v1/tools/google.maps.reviews/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"place_id":"ChIJaXQRs6lZwokRY6EFpJnhNNE","sort":"newest"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/google.maps.reviews/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={
        "input": {
            "place_id": "ChIJaXQRs6lZwokRY6EFpJnhNNE",
            "sort": "newest",
        },
    },
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/google.maps.reviews/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input": {
      "place_id": "ChIJaXQRs6lZwokRY6EFpJnhNNE",
      "sort": "newest",
    },
  }),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "google.maps.reviews",
    "input": {
      "place_id": "ChIJaXQRs6lZwokRY6EFpJnhNNE",
      "sort": "newest"
    }
  }
}
```

Both return [the full response](/docs/call-response.md): the call's ID, status and cost, with this tool's result in `output`.

## Input

| Input | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `place_id` | string | Yes |  | Google's place ID of the place, such as "ChIJaXQRs6lZwokRY6EFpJnhNNE". |
| `sort` | string | No |  | Order of the reviews. Google's own order is relevance. One of `relevance`, `newest`, `highest_rating`, `lowest_rating`. |
| `country` | string | No |  | Two-letter ISO 3166-1 country code. Case-insensitive. One of the 249 values of the `countries` list: ISO 3166-1 alpha-2 country codes, lowercase. |
| `language` | string | No | `en` | Two-letter ISO 639-1 language code. Case-insensitive. One of the 184 values of the `languages` list: ISO 639-1 two-letter language codes, lowercase. |
| `next_page_token` | string | No |  | Fetches the next page. Take it from pagination.next_page_token of the previous page, and send the same place, sort, country and language. |

## Output

A successful call returns these blocks in its `output`. A field not marked required can be `null`.

### reviews

A list of rows. Always present, possibly empty.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `review_id` | string | No | Google's identifier of the review. |
| `rating` | number | Yes | Stars the reviewer gave, from 1 to 5. |
| `text` | string | No | What the reviewer wrote. Absent when only a rating was left. |
| `url` | string | No | Address of the review on Google Maps. |
| `author_name` | string | No |  |
| `author_url` | string | No | Address of the reviewer's Google Maps profile. |
| `author_image_url` | string | No | Address of the reviewer's profile picture. |
| `published_at` | string | No | When the review was written, in ISO 8601. |
| `published_label` | string | No | Age of the review as Google shows it, such as "5 months ago". Not a timestamp. |
| `likes` | integer | No | Number of people who marked the review helpful. |
| `image_urls` | array of string | No | Address of each photo attached to the review. |
| `owner_response_text` | string | No | The owner's reply to the review. |
| `owner_response_published_at` | string | No | When the owner replied, in ISO 8601. |
| `owner_response_published_label` | string | No | Age of the reply as Google shows it. Not a timestamp. |

### place

One object. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | No | Name of the business or place. |
| `address` | string | No |  |
| `rating` | number | No | Average review rating, out of 5. |
| `review_count` | integer | No |  |
| `category` | string | No | Kind of business, such as "Coffee shop". |

### pagination

One object. Can be `null`. How to fetch the next page. Null on the last page.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `next_page_token` | string | Yes | Send as next_page_token to fetch the next page. |

## Example output

The `output` of a real call, each list cut to 3 items.

```json
{
  "reviews": [
    {
      "review_id": "Ci9DQUlRQUNvZENodHljRjlvT25GSU1IRjBlbkJQV21KQ2JIbFpXSGh4WW0xVGIzYxAB",
      "rating": 5,
      "text": "The Empire State Building is the most famous building in New York! A beautiful historic Art Deco skyscraper, and the view of Manhattan from the top is amazing. You can see the whole city, the rivers and the bridges. An iconic place you have to visit at least once. I recommend it!",
      "url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT25GSU1IRjBlbkJQV21KQ2JIbFpXSGh4WW0xVGIzYxAB!2m1!1s0x0:0xd134e199a405a163!3m1!1s2@1:CAIQACodChtycF9oOnFIMHF0enBPWmJCbHlZWHhxYm1Tb3c%7C%7C?hl=en",
      "author_name": "Rodrigo Cunha",
      "author_url": "https://www.google.com/maps/contrib/100857332173426743898?hl=en",
      "author_image_url": "https://lh3.googleusercontent.com/a-/ALV-UjXI8-08dMbdklIcyu461xJ-rRnzihKjJDbsWR-XMAhPdgfgXihIPw=s120-c-rp-mo-ba12-br100",
      "published_at": "2026-10-28T04:37:32Z",
      "published_label": "3 hours ago",
      "likes": 0,
      "image_urls": null,
      "owner_response_text": null,
      "owner_response_published_at": null,
      "owner_response_published_label": null
    },
    {
      "review_id": "Ci9DQUlRQUNvZENodHljRjlvT2xGUk1WZ3RUVEZXY3pOWVJEQllSV0ZaZHpaVGJuYxAB",
      "rating": 5,
      "text": "The observation platform is brilliant for the best views of the whole of New York.",
      "url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xGUk1WZ3RUVEZXY3pOWVJEQllSV0ZaZHpaVGJuYxAB!2m1!1s0x0:0xd134e199a405a163!3m1!1s2@1:CAIQACodChtycF9oOlFRMVgtTTFWczNYRDBYRWFZdzZTbnc%7C%7C?hl=en",
      "author_name": "Mark Oliver",
      "author_url": "https://www.google.com/maps/contrib/100022844969326458165?hl=en",
      "author_image_url": "https://lh3.googleusercontent.com/a/ACg8ocLj_Y2k7BDqZkpaMQ40sSzQ8i6hLrTY2_6hmrmuJWLCBXdDWQ=s120-c-rp-mo-ba12-br100",
      "published_at": "2026-10-28T03:33:28Z",
      "published_label": "4 hours ago",
      "likes": 0,
      "image_urls": null,
      "owner_response_text": null,
      "owner_response_published_at": null,
      "owner_response_published_label": null
    },
    {
      "review_id": "Ci9DQUlRQUNvZENodHljRjlvT21relZWZE1WRTlUYjJsQmJtZFVTVWRmUlVwNlVHYxAB",
      "rating": 5,
      "text": null,
      "url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT21relZWZE1WRTlUYjJsQmJtZFVTVWRmUlVwNlVHYxAB!2m1!1s0x0:0xd134e199a405a163!3m1!1s2@1:CAIQACodChtycF9oOmkzVVdMVE9Tb2lBbmdUSUdfRUp6UGc%7C%7C?hl=en",
      "author_name": "Peethani Srinivas",
      "author_url": "https://www.google.com/maps/contrib/100268064251489450810?hl=en",
      "author_image_url": "https://lh3.googleusercontent.com/a-/ALV-UjU7nVfLTObMxQAg3jJ9fY-ldKTCO8tGH5bjfAEe5Ze29cP5rk8B=s120-c-rp-mo-ba12-br100",
      "published_at": "2026-10-28T01:27:52Z",
      "published_label": "6 hours ago",
      "likes": 0,
      "image_urls": null,
      "owner_response_text": null,
      "owner_response_published_at": null,
      "owner_response_published_label": null
    }
  ],
  "place": {
    "title": "Empire State Building",
    "address": "20 W 34th St., New York, NY 10001",
    "rating": 4.7,
    "review_count": 131015,
    "category": "Observation deck"
  },
  "pagination": {
    "next_page_token": "pt1.bGl0ZXNjcmFwZTpsczEuV3lKRGFUaEpRVkpKYmtObmIwRlFOekpHTmtKSlJIaGFYMTlGYUVSaFFsUkZXWGRMVUdRdFkyWmZabEZOUVVGQlFVRkhaMlpmUVd3MlFrbEVlRnBIUVVGcFFVRTZNakFpTENKek1HMDJRbEZqU1Y5RlJUTnRPRWRFV0hkRE5YRWlYUQ"
  }
}
```
