# Google Shopping Ads Scraper: Extract Live Paid Merchant Ads (`getascraper/google-shopping-ads-scraper`) Actor

Get live paid sponsored Google Shopping product ads from Google Search. Export merchant domains, pricing decimals, discount stickers, localized currencies, ranks & decrypted target landing pages under stealth.

- **URL**: https://apify.com/getascraper/google-shopping-ads-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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: Track Live Product Listings Across Google

**Pull live, structured product listings from Google Shopping in seconds.** Get product titles, prices, ratings, review counts, delivery info, merchant names, and discount percentages for any keyword in any country.

***

### 💡 What can you do with it?

- **Track competitor prices.** See who is winning the buy box today, and at what price.
- **Monitor discount campaigns.** Catch every "44% OFF" or "LOW PRICE" badge the moment Google surfaces it.
- **Build market intelligence.** Aggregate merchant and pricing data across thousands of product queries.
- **Feed product research.** Plug structured rows into spreadsheets, BI dashboards, or downstream AI pipelines.
- **Compare merchants.** See which sellers are buying ad placements for your target keywords.

***

### 🚀 How to use it

1. Create a free Apify account.
2. Open the **Google Shopping Scraper** in the Apify Store.
3. Enter your product keywords (e.g., `wireless headphones`, `running shoes`).
4. Pick the country market and search language.
5. Click **Start** and download the dataset as JSON, CSV, or Excel.

***

### ⚙️ Input

| Field | Default | Description |
| --- | --- | --- |
| `queries` | `["wireless headphones"]` | One or more product keywords to search. |
| `countryCode` | `US` | Target country market (US, GB, JP, DE, FR, CA, AU). |
| `languageCode` | `en` | Google interface language (en, ja, de, fr). |
| `location` | `""` | Optional city, state, or postal area for hyper-local results. |
| `maxAdsPerQuery` | `25` | Maximum number of product cards to extract per query. |

***

### 📦 Output

Each row is a single product listing from the Google Shopping tab.

```json
{
  "searchQuery": "wireless headphones",
  "position": 4,
  "productTitle": "Beats Studio Pro Wireless Headphones",
  "productId": "1700529733379415144",
  "priceText": "$169.99",
  "priceValue": 169.99,
  "currency": "USD",
  "originalPriceText": "$200",
  "originalPriceValue": 200,
  "discountPercent": 15,
  "pricePerUnitText": null,
  "merchant": "Best Buy",
  "merchantDomain": "bestbuy",
  "rating": 4.6,
  "reviewCount": 19000,
  "reviewCountText": "19K",
  "deliveryText": null,
  "badgeText": "LOW PRICE",
  "productImageUrl": null,
  "productDetailUrl": "https://www.google.com/search?tbm=shop&q=wireless+headphones&udm=28#fid=1700529733379415144",
  "categoryPath": "http://www.google.com/search?q=wireless+headphones&tbm=shop&gl=us&hl=en&safe=images",
  "scrapedAt": "2026-06-08T08:53:05.567Z"
}
```

#### Field reference

| Field | Description |
| --- | --- |
| `searchQuery` | The keyword that produced this listing. |
| `position` | The card's left-to-right position in the Shopping tab grid. |
| `productTitle` | Full product name as displayed. |
| `productId` | Google's internal product identifier (`data-cid`). |
| `priceText` | Raw localized price string (e.g. `$169.99`, `￥8,500`). |
| `priceValue` | Numeric decimal extracted from `priceText`. |
| `currency` | ISO 4217 currency code (`USD`, `EUR`, `JPY`, etc.). |
| `originalPriceText` | Strikethrough or "was"-style original price if the item is on sale. |
| `originalPriceValue` | Numeric decimal extracted from `originalPriceText`. |
| `discountPercent` | Computed discount % between `originalPriceValue` and `priceValue`, or the % shown on a "X% OFF" badge. |
| `pricePerUnitText` | Per-unit or per-pack pricing if shown (e.g. `$0.10/oz`). |
| `merchant` | Seller name (e.g. `Walmart`, `Best Buy`, `Walmart - AnkerDirect`). |
| `merchantDomain` | Normalized root domain of the merchant. |
| `rating` | Star rating out of 5.0. |
| `reviewCount` | Numeric review count (e.g. `19000` from `"19K"`). |
| `reviewCountText` | Original formatted string (e.g. `19K`, `736`). |
| `deliveryText` | Delivery promise (e.g. `Free delivery on $35+`, `Free delivery by Wed`). |
| `badgeText` | Promotional tag (e.g. `LOW PRICE`, `44% OFF`, `Refurbished`). |
| `productImageUrl` | Product image URL when available. |
| `productDetailUrl` | Google Shopping tab anchor URL for the product. |
| `categoryPath` | Full search URL the row was sourced from. |
| `scrapedAt` | ISO timestamp of when the row was saved. |

***

### 💰 Cost

Pricing is per row saved to the dataset. Empty runs cost nothing. There is no fixed fee.

For a rough estimate, a single 25-card run for one keyword typically saves 25 rows. If you run 10 keywords with `maxAdsPerQuery=25`, expect 250 rows. You can monitor the row count live in the run console.

***

### ⭐ Enjoying Google Shopping Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#FEF4F3;border:1px solid #FEF4F3;border-left:5px solid #EA4335;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Track competitor prices and discount badges across thousands of Google Shopping listings without opening a single tab.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other price monitoring teams find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#EA4335;border:1px solid #FEF4F3;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/google-shopping-ads-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ✨ Tips

- **Run multiple queries in one go.** Add all your competitor terms to the `queries` array. Each query gets its own pass.
- **Start broad, then narrow.** If you only need certain products, run a single broad query first, then re-run with a more specific keyword based on the merchant names you found.
- **Schedule it.** Use Apify Schedules to run daily or weekly and watch for new merchants entering the buy box.

***

### 🛡️ Disclaimers & Support

- **Disclaimer:** This Actor retrieves publicly available product listings from Google Shopping. Make sure your usage complies with Google's terms of service and applicable laws.
- **Support:** Open an issue from the Actor page in the Apify Console for bug reports or feature requests.

### 🔗 Other actors

- [Google Maps List Scraper](https://apify.com/getascraper/google-maps-list-scraper) ↗ - extracts contact and location details from public Google Maps shared lists.
- [Google Lens Search](https://apify.com/getascraper/google-lens-visual-search) ↗ - reverse image search and visual product matching through Google Lens.
- [Falabella Price Monitor](https://apify.com/getascraper/falabella-price-monitor) ↗ - tracks price and stock changes across Falabella's Chile, Peru, and Colombia stores.
- [Kroger Price Monitor](https://apify.com/getascraper/kroger-price-monitor) ↗ - sends price and stock change alerts for Kroger grocery listings.
- [Wildberries Price & Rank Tracker](https://apify.com/getascraper/wildberries-price-tracker) ↗ - monitors daily price changes and search rank positions on Wildberries.

# Actor input Schema

## `queries` (type: `array`):

Enter the product queries or keywords you want to check for paid ads (e.g., 'wireless headphones', 'running shoes').

## `countryCode` (type: `string`):

Select the geographical country market to fetch ads from. This controls localized ads, currencies, and merchants.

## `languageCode` (type: `string`):

Select the language of the Google Search page interface.

## `location` (type: `string`):

Enter a specific city, state, or postal area to retrieve localized ads (e.g., 'Chicago,Illinois,United States').

## `maxAdsPerQuery` (type: `integer`):

Maximum number of sponsored ad cards to extract per query keyword (the carousel typically houses up to 25-40 items).

## `proxyConfiguration` (type: `object`):

Apify's dedicated Google SERP proxy pool is used to fetch unblocked, CAPTCHA-free Google Shopping results. It is the recommended, most reliable, and most cost-effective option for this Actor.

## Actor input object example

```json
{
  "queries": [
    "wireless headphones",
    "running shoes"
  ],
  "countryCode": "US",
  "languageCode": "en",
  "location": "",
  "maxAdsPerQuery": 15,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "queries": [
        "wireless headphones",
        "running shoes"
    ],
    "countryCode": "US",
    "languageCode": "en",
    "location": "",
    "maxAdsPerQuery": 15,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "GOOGLE_SERP"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/google-shopping-ads-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 = {
    "queries": [
        "wireless headphones",
        "running shoes",
    ],
    "countryCode": "US",
    "languageCode": "en",
    "location": "",
    "maxAdsPerQuery": 15,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["GOOGLE_SERP"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/google-shopping-ads-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 '{
  "queries": [
    "wireless headphones",
    "running shoes"
  ],
  "countryCode": "US",
  "languageCode": "en",
  "location": "",
  "maxAdsPerQuery": 15,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ]
  }
}' |
apify call getascraper/google-shopping-ads-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/iIqubDehs6xKSAP7M/builds/CvLreMu415dlgjKdz/openapi.json
