# Google Shopping Scraper (`yasmany.casanova/google-shopping-scraper`) Actor

Search any product on Google Shopping across major markets (Brazil, US, UK, Germany, France, Spain, Italy). Returns every offer with store name, price in local currency, product URL, rating and reviews, plus best price and average price for the query.

- **URL**: https://apify.com/yasmany.casanova/google-shopping-scraper.md
- **Developed by:** [Yasmany Grijalba Casanova](https://apify.com/yasmany.casanova) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Shopping Scraper

Search **any product** on Google Shopping across major markets and get every offer — store name, price in local currency, product URL, rating and reviews — plus the **best price** and the **average price** for the query.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com)
[![Markets](https://img.shields.io/badge/Markets-7%20Countries-green)](https://www.google.com/shopping)

---

> ℹ️ **Zero configuration**
> Provide a product name and run it — results are ready in seconds.

---

### Quick Start

```json
{
  "productName": "APARADOR DE PELOS MONDIAL BG03",
  "country": "br",
  "maxResults": 20
}
````

> **Tip**: Search with the full product name (brand + model) for the most relevant offers, e.g. `DELL INSPIRON 15 NOTEBOOK` rather than just `notebook`.

#### More examples

<details>
<summary>Search the US market</summary>

```json
{
  "productName": "Logitech MX Master 3S",
  "country": "us",
  "maxResults": 15
}
```

</details>

<details>
<summary>Search Germany</summary>

```json
{
  "productName": "Bosch Series 6 Geschirrspuler",
  "country": "de"
}
```

</details>

***

### Supported Markets

| Country | `country` | Currency |
|---------|-----------|----------|
| Brazil (default) | `br` | BRL |
| United States | `us` | USD |
| United Kingdom | `gb` | GBP |
| Germany | `de` | EUR |
| France | `fr` | EUR |
| Spain | `es` | EUR |
| Italy | `it` | EUR |

***

### Features

| Feature | Description |
|---------|-------------|
| **7 Markets** | Brazil, US, UK, Germany, France, Spain, Italy — prices in local currency |
| **Any Product** | Search any product by name across each market's online stores |
| **Best & Average Price** | Lowest price and the average across all offers for the query |
| **Structured JSON Output** | Clean, validated data ready for analysis |

***

### Use Cases

- **E-commerce & Price Research** — Discover where a product is sold and at what price across many stores at once
- **Competitor Analysis** — Compare your store's price against every other listing for the same product
- **Cross-Market Pricing** — Compare the same product's price across countries
- **Price Monitoring** — Run periodically to detect price drops and new sellers

***

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `productName` | string | — | Product name / search term to look up (**required**) |
| `country` | string | `br` | Market to search (`br`, `us`, `gb`, `de`, `fr`, `es`, `it`) |
| `maxResults` | integer | `20` | Maximum number of offers to return (1–50) |

***

### Output Example

Each offer is returned as a row, followed by a summary row with the headline metrics:

```json
[
  {
    "record_type": "product",
    "name": "Aparador De Pelos Mondial BG-03 Bivolt",
    "price": 49.9,
    "price_text": "R$ 49,90",
    "store": "Magazine Luiza",
    "url": "https://www.magazineluiza.com.br/aparador-de-pelos-mondial-bg-03/p/...",
    "product_id": "1234567890",
    "review": 4.5,
    "review_count": 312,
    "product_name_query": "APARADOR DE PELOS MONDIAL BG03",
    "country": "br",
    "products_found": 18,
    "average_price": 57.43,
    "scraped_at": "2026-05-18T22:40:00.000Z"
  },
  {
    "record_type": "summary",
    "price": 49.9,
    "store": "Magazine Luiza",
    "url": "https://www.magazineluiza.com.br/aparador-de-pelos-mondial-bg-03/p/...",
    "product_name_query": "APARADOR DE PELOS MONDIAL BG03",
    "country": "br",
    "products_found": 18,
    "products_returned": 18,
    "average_price": 57.43,
    "best_price": { "name": "Aparador De Pelos Mondial BG-03 Bivolt", "price": 49.9, "store": "Magazine Luiza" },
    "scraped_at": "2026-05-18T22:40:00.000Z"
  }
]
```

**Note**: `review`, `review_count`, and `product_id` are included when available for the offer.

***

### Data Fields

| Field | Type | Description |
|-------|------|-------------|
| `record_type` | string | Row type: `product` for an offer, `summary` for the aggregate |
| `name` | string | Product / offer title |
| `price` | number | Offer price in the market's currency; on the summary row, the best price |
| `price_text` | string | Price as displayed (e.g. "R$ 49,90", "$24.99") |
| `store` | string | Merchant / store name |
| `url` | string | Direct merchant product URL |
| `product_id` | string | Product catalog id, when available |
| `review` | number | Average rating, when available |
| `review_count` | number | Number of reviews, when available |
| `product_name_query` | string | The search term for this result |
| `country` | string | Market the offers were collected from |
| `products_found` | number | Total offers found for the query |
| `products_returned` | number | Offers returned (limited by `maxResults`) |
| `average_price` | number | Average price across all offers |
| `best_price` | object | The lowest-priced offer |
| `scraped_at` | string | ISO 8601 timestamp (UTC) |

***

### Integrations

Use the **API** tab on the Actor page to get ready-to-use code examples in **Python**, **JavaScript**, and **cURL**, generated with the correct parameters for immediate integration.

***

### Example Searches

| Market | `productName` |
|--------|---------------|
| Brazil | `GELADEIRA CONSUL CRM44` |
| United States | `Logitech MX Master 3S` |
| Germany | `Bosch Series 6 Geschirrspuler` |

***

### FAQ

<details>
<summary><strong>Why am I getting no results?</strong></summary>

The search term may be too generic or misspelled — use the full brand and model name. Some products simply have no Google Shopping offers in the selected market at the time of the run.

</details>

<details>
<summary><strong>Which currency are prices in?</strong></summary>

Prices are returned in the local currency of the selected `country` — BRL for Brazil, USD for the US, GBP for the UK, and EUR for Germany, France, Spain, and Italy.

</details>

<details>
<summary><strong>Why are some fields empty?</strong></summary>

Ratings, review counts, and catalog ids are only included when the store publishes them for that offer.

</details>

***

### Support

1. **Check the FAQ** above for common questions
2. **Test with the prefilled example** to confirm expected output
3. **Contact support** through [Apify](https://apify.com) for additional assistance

# Actor input Schema

## `productName` (type: `string`):

The product name / search term to look up on Google Shopping.

## `country` (type: `string`):

Google Shopping market to search. Prices are returned in the local currency of the selected country.

## `maxResults` (type: `integer`):

Maximum number of offers to return for the query (1-50).

## Actor input object example

```json
{
  "productName": "APARADOR DE PELOS MONDIAL BG03",
  "country": "br",
  "maxResults": 20
}
```

# Actor output Schema

## `products` (type: `string`):

Offers extracted from Google Shopping (one item per offer plus a summary item with best/average price)

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productName": "APARADOR DE PELOS MONDIAL BG03",
    "country": "br"
};

// Run the Actor and wait for it to finish
const run = await client.actor("yasmany.casanova/google-shopping-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "productName": "APARADOR DE PELOS MONDIAL BG03",
    "country": "br",
}

# Run the Actor and wait for it to finish
run = client.actor("yasmany.casanova/google-shopping-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productName": "APARADOR DE PELOS MONDIAL BG03",
  "country": "br"
}' |
apify call yasmany.casanova/google-shopping-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=yasmany.casanova/google-shopping-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Shopping Scraper",
        "description": "Search any product on Google Shopping across major markets (Brazil, US, UK, Germany, France, Spain, Italy). Returns every offer with store name, price in local currency, product URL, rating and reviews, plus best price and average price for the query.",
        "version": "1.0",
        "x-build-id": "kmiBaAFHuWtpVibPg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/yasmany.casanova~google-shopping-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-yasmany.casanova-google-shopping-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/yasmany.casanova~google-shopping-scraper/runs": {
            "post": {
                "operationId": "runs-sync-yasmany.casanova-google-shopping-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/yasmany.casanova~google-shopping-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-yasmany.casanova-google-shopping-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "productName"
                ],
                "properties": {
                    "productName": {
                        "title": "Product Name",
                        "type": "string",
                        "description": "The product name / search term to look up on Google Shopping."
                    },
                    "country": {
                        "title": "Country / Market",
                        "enum": [
                            "br",
                            "us",
                            "gb",
                            "de",
                            "fr",
                            "es",
                            "it"
                        ],
                        "type": "string",
                        "description": "Google Shopping market to search. Prices are returned in the local currency of the selected country.",
                        "default": "br"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of offers to return for the query (1-50).",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
