# Get the place and contributor behind a Google Maps photo

Returns the date, place and contributor behind one Google Maps photo. Use it to find out who added a photo and where it was taken.

Tool `google.maps.photo-metadata` 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.photo-metadata/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"photo_id":"CIABIhAAQr6KrxiC_knILBjf2RxL"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/google.maps.photo-metadata/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={"input": {"photo_id": "CIABIhAAQr6KrxiC_knILBjf2RxL"}},
    timeout=60,
)
print(response.json())
```

TypeScript:

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

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "google.maps.photo-metadata",
    "input": {
      "photo_id": "CIABIhAAQr6KrxiC_knILBjf2RxL"
    }
  }
}
```

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 |
| --- | --- | --- | --- | --- |
| `photo_id` | string | Yes |  | Google's identifier of the photo, such as "CIABIhAAQr6KrxiC_knILBjf2RxL". |
| `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. |

## Output

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

### photo

One object. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `published_at` | string | No | Day the photo was added, as an ISO 8601 date. |

### place

One object. Can be `null`. Where the photo was taken.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | No | Name of the business or place. |
| `category` | string | No | Kind of business, such as "Coffee shop". |
| `latitude` | number | No |  |
| `longitude` | number | No |  |

### contributor

One object. Can be `null`. Who added the photo.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `contributor_id` | string | No |  |
| `name` | string | No |  |
| `url` | string | No | Address of the contributor's Google Maps profile. |
| `image_url` | string | No |  |

## Example output

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

```json
{
  "photo": {
    "published_at": "2026-03-26"
  },
  "place": {
    "title": "La Cabra",
    "category": "Bakery",
    "latitude": 40.72944593032069,
    "longitude": -73.98683525580137
  },
  "contributor": {
    "contributor_id": "114005753829907698777",
    "name": "Bryan Barber",
    "url": "https://maps.google.com/maps/contrib/114005753829907698777",
    "image_url": "https://lh3.googleusercontent.com/a-/ALV-UjVPLf0Gyu4SEyq8ENXI8cKfcPKUZzGV8mdrVW4SVE6mWGCAsrSW=s48-p-k-no-mo"
  }
}
```
