# Get a Google Shopping product's details and merchant offers

Returns one Google Shopping product's details and specifications, and the stores that sell it at what price. Use it to compare offers for a product.

Tool `google.shopping.product` 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.shopping.product/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"product_id":"12924467748879549536","query":"standing desk"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/google.shopping.product/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={
        "input": {
            "product_id": "12924467748879549536",
            "query": "standing desk",
        },
    },
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/google.shopping.product/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input": {
      "product_id": "12924467748879549536",
      "query": "standing desk",
    },
  }),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "google.shopping.product",
    "input": {
      "product_id": "12924467748879549536",
      "query": "standing desk"
    }
  }
}
```

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 |
| --- | --- | --- | --- | --- |
| `product_id` | string | Yes |  | Google's product cluster identifier, in decimal digits. The product_id of a google.serp.shopping result. |
| `query` | string | Yes |  | The product search query the product was found with. |
| `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. |
| `location` | string | No |  | Place to search from, by name, such as "Austin, Texas". |

## Output

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

### product

One object. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | string | No | Google's product cluster identifier. |
| `title` | string | Yes |  |
| `description` | string | No |  |
| `image_url` | string | No | Address of the product's thumbnail image. |
| `image_urls` | array of string | No | Address of each image in the product's gallery. |

### offers

A list of rows. Can be `null`. The stores selling the product.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `position` | integer | No | Rank among the offers, starting at 1. |
| `seller` | string | Yes | Name of the store selling the product. |
| `seller_rating` | number | No | Average rating of the store, out of 5. |
| `title` | string | No | Name of the product as the store lists it. |
| `url` | string | No | Address of the product's page at the store. |
| `price` | string | No | The price as Google shows it, with its currency symbol, such as "$19.99". Not parsed. |
| `price_amount` | number | No | The price as a number, in the currency that price shows. |
| `original_price` | string | No | The price before a discount, as Google shows it. Not parsed. |
| `availability` | string | No | Stock status as Google shows it, such as "In stock online". |
| `delivery` | string | No | Delivery terms as Google shows them, such as "Free delivery". |
| `returns` | string | No | Return terms as Google shows them, such as "30-day returns". |

### specifications

A list of rows. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes |  |
| `value` | string | Yes |  |

### related_products

A list of rows. Can be `null`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `position` | integer | No | Rank among the related products, starting at 1. |
| `title` | string | Yes |  |
| `product_id` | string | No | Google's product cluster identifier. |
| `seller` | string | No | Name of the store selling the product. |
| `rating` | number | No | Average review rating, out of 5. |
| `review_count` | integer | No |  |

## Example output

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

```json
{
  "product": {
    "product_id": "12924467748879549536",
    "title": "Flexispot E2 White Electric Adjustable Standing Desk Affordable Stand Up Desk for Home Office with Basic Keypad",
    "description": "Upgrade your workspace with the FlexiSpot E2 Standing Desk Frame - the perfect solution for a healthier and more productive workday. Made with high-grade steel, this durable desk frame allows you to effortlessly switch between sitting and standing, reducing fatigue and promoting a healthier lifestyle. Say goodbye to back and neck pain caused by sitting for too long and experience the benefits of a standing desk. Order your FlexiSpot E2 Standing Desk Frame today!",
    "image_url": "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRHq7EgRPSGSPAll8iJDLMkE52wT6VqM5MrRjzTtxAjC25SSJJ_4guF07YPANr9VCi7b9Jn9xkXfXatRYLnYffnkYr4U7W6Mw",
    "image_urls": [
      "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRHq7EgRPSGSPAll8iJDLMkE52wT6VqM5MrRjzTtxAjC25SSJJ_4guF07YPANr9VCi7b9Jn9xkXfXatRYLnYffnkYr4U7W6Mw",
      "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcQhexU7uh_9kXP7X3Sm34c-yQ8C_p8GckbGkIR1vq-5NuNv6JkI51uMoSzXsUXlc6fKJgo_UYJal3bmWbvDnN3EVjDNERb1DA"
    ]
  },
  "offers": [
    {
      "position": 1,
      "seller": "FlexiSpot.com",
      "seller_rating": 4.3,
      "title": "Flexispot E2 White Electric Adjustable Standing Desk | Affordable Stand Up Desk for Home Office with Basic Keypad",
      "url": "https://www.flexispot.com/electric-height-adjustable-desk-with-rectangular-top?value=ec1wv3&srsltid=AU7gw4XNeE_Jhl4BKP89jp14kYighrKiF-o1Rem3gM-Q74ypwoV3NgkdUtc",
      "price": "$109.99",
      "price_amount": 109.99,
      "original_price": "$290",
      "availability": "In stock online",
      "delivery": "Free delivery by Fri",
      "returns": "30-day returns"
    },
    {
      "position": 2,
      "seller": "FlexiSpot.com",
      "seller_rating": 4.3,
      "title": "Flexispot E2 White Electric Adjustable Standing Desk | Affordable Stand Up Desk for Home Office with Basic Keypad",
      "url": "https://www.flexispot.com/electric-height-adjustable-desk-with-rectangular-top?value=ec1wv3&srsltid=AU7gw4XtuPZa4cO4ycYaBlHvXJ2dxqyZ7a7Q3GU7I4d6DOnKTYREJrufqz0",
      "price": "$109.99",
      "price_amount": 109.99,
      "original_price": "$290",
      "availability": "In stock online",
      "delivery": "Free delivery by Fri",
      "returns": "30-day returns"
    }
  ],
  "specifications": [
    {
      "name": "Brand",
      "value": "FlexiSpot"
    },
    {
      "name": "Adjustable Height",
      "value": "Yes"
    }
  ],
  "related_products": [
    {
      "position": 1,
      "title": "Mainstays Electric Standing Desk",
      "product_id": "13373890562389985590",
      "seller": "Walmart",
      "rating": 4.4,
      "review_count": 198
    },
    {
      "position": 2,
      "title": "FlexiSpot E7 Standing Desk Premium Dual Motor Electric Height Adjustable Desk Sit Stand Desk Home Office Desks 15 Year Warranty",
      "product_id": "12018026045822536265",
      "seller": "FlexiSpot.com",
      "rating": 4.7,
      "review_count": 3000
    }
  ]
}
```
