# Google Shopping Scraper: Prices, Stores, Ratings, Discounts (`themineworks/google-shopping-scraper`) Actor

Scrape Google Shopping for any product search: price and currency, old price and discount, store name, rating and review count, delivery and returns text, condition, thumbnail, Google product page and product ids. Pick country and language. Repeats are dropped and never charged. No login.

- **URL**: https://apify.com/themineworks/google-shopping-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** E-commerce, SEO tools, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.79 / 1,000 products

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Shopping Scraper: Prices, Stores, Ratings, Discounts

[![120 Google Shopping products in 22 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/google-shopping-scraper-hero.png)](https://console.apify.com/actors/eZCuBMtCWl0GFZ1SH/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 140,000 runs across 170+ public actors.

### Why choose this actor?

- **Price, store and discount on every row.** Each product comes with its price as a number and as shown, the currency, the old price and discount badge when Google shows a deal, the store, whether other stores sell it too, rating, review count, delivery and returns text, condition, a thumbnail, a link to Google's product page and Google's product ids. In our test on 5 October 2026, two searches returned **120 products in 22 seconds**; all 120 had a price, currency, store, thumbnail and product link, and 108 had a rating. No Google account, no API key, no browser.
- **Any country, in its own currency.** Set a two letter country and a language and Google shows that market's stores and prices. A German run returned 40 products, all in euros, with German returns and condition text, and prices written as 177,14 € were read as 177.14. Ratings are the exact value Google stores (4.24 where the card rounds to 4.2) and review counts are exact (10,202 where the card says 10K).
- **You never pay for filler or repeats.** When Google cannot match a search it shows popular products instead of an empty page. The actor checks every page, and a page where not one title holds a word of your search is not delivered and not charged: our nonsense search "qzxvblorft wwkpjjq" cost nothing, while Google had served 40 unrelated products for it. Later Google pages repeat some earlier products; repeats are dropped and never charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/eZCuBMtCWl0GFZ1SH/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works E-commerce and marketplaces family:** [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the JSON tab of the input page and press Start. It returns 20 products for each of two searches in well under a minute.

```json
{
  "queries": ["wireless earbuds", "air fryer"],
  "maxResultsPerQuery": 20
}
```

Give the input as product searches only, one per line in the "Search terms" box (or as a JSON array in `queries`), typed the way you would type them into Google Shopping: a product type, a brand, or a brand and model. Each search gets its own rows in Google's order. Country and language apply to every search in the run; to compare markets, start one run per country.

Apify's free plan includes $5 of credit every month, which covers about 1,600 products at this actor's price.

#### Copy to your AI assistant

```
themineworks/google-shopping-scraper on Apify. Scrapes Google Shopping results for product searches and returns one row per product with title, price, currency, price as shown, old price, discount badge, store name, whether more stores sell it, rating, review count, delivery text, returns text, condition, thumbnail URL, Google product page link, catalog id, offer id, group id and rank. Call ApifyClient("TOKEN").actor("themineworks/google-shopping-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (array of product searches). Optional: maxResultsPerQuery (default 60, 20 to 500), country (default "us", two letter code), language (default "en"). Skip rows with _type "info"; the per search run summary is the key-value store record OUTPUT. Full spec: GET https://api.apify.com/v2/acts/themineworks~google-shopping-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **27 fields per product**: the search, rank, page, title, price, currency, price as shown, old price and as shown, discount badge, store, more stores flag, rating, review count, delivery, returns, condition, thumbnail, Google product page link, catalog id, offer id, group id, listing id, country, language, search link and collection time.
- **Up to 500 products per search, up to 500 searches per run.** Google shows 40 to 50 products a page; the actor reads page after page and drops repeats until it has your number or Google has nothing new. Three searches run at a time.
- **Every market.** Pass any two letter country code (us, gb, ca, au, in, de, fr, es, it, br, jp...) and a language code. Currency is read from the price itself and the country: $ means USD in the US, CAD in Canada and AUD in Australia; CA$, R$, ₹, €, £, kr, zł and others are recognised.
- **Exact ratings and review counts** from Google's own card data rather than the rounded text.
- **A link to Google's product page** for every row, which lists every store's offer for that product. We opened links for a product sold by many stores and for a single store listing; both opened the right product.
- **Plain HTTP and small memory.** No browser: Google's results page already holds every card, so a run uses 256 MB and peaked at 109 MB in our tests.

### How to use it

#### Basic: one product search

```json
{
  "queries": ["air fryer"],
  "maxResultsPerQuery": 60
}
```

About one and a half Google pages, ranked as Google shows them.

#### Several searches at once

```json
{
  "queries": ["wireless earbuds", "robot vacuum", "standing desk"],
  "maxResultsPerQuery": 100
}
```

Each search is read on its own, three at a time. A search with fewer products than you asked for returns what Google has, and its status in the run summary says why it stopped.

#### Daily price watch for your products

```json
{
  "queries": ["sony wf-1000xm5", "bose quietcomfort ultra earbuds", "apple airpods pro 3"],
  "maxResultsPerQuery": 40,
  "country": "us"
}
```

Schedule it daily in Apify Console (Schedules, Add schedule). Compare `price`, `old_price` and `merchant` by `product_id` from one day to the next to see who cut the price, and `discount_text` to catch deals.

#### Who sells my category, and at what price

```json
{
  "queries": ["espresso machine", "burr coffee grinder"],
  "maxResultsPerQuery": 200
}
```

Group by `merchant` to see which stores Google shows most, and by `currency` and `price` for the price spread of a category. `more_stores: true` means Google knows other stores selling the same product; `product_link` opens Google's page with all of their offers.

#### Market comparison across countries

```json
{
  "queries": ["kopfhörer", "kaffeemaschine"],
  "maxResultsPerQuery": 60,
  "country": "de",
  "language": "de"
}
```

Run the same searches with `country` set to each market (de, fr, gb, us...) and compare prices in each local currency. Delivery, returns and condition text come in the language you choose.

#### Rating and review research

```json
{
  "queries": ["electric toothbrush", "water flosser"],
  "maxResultsPerQuery": 100
}
```

Sort by `review_count` and `rating` to see which products Google's shoppers review most, and which ones rate low despite a high rank.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `queries` | array of strings | `["wireless earbuds", "air fryer"]` | Product searches, one per item, up to 500. Required. Repeats are removed. |
| `maxResultsPerQuery` | integer | `60` | Most products per search, 20 to 500. |
| `country` | string | `us` | Two letter country code of the shop market (gl). Stores, prices and currency follow it. |
| `language` | string | `en` | Google interface language (hl), such as en, de, fr. Sets the language of delivery, returns and condition text. |

### What data do you get?

One row per product, in Google's order for each search.

**The product:** `title`, `thumbnail_url`, `rating` (out of 5, two decimals), `review_count`, `condition` (only when not new, such as Refurbished or Pre-owned, in the page's language).

**The offer shown on the card:** `price` (a number), `currency` (ISO code), `price_text` (as shown), `old_price` and `old_price_text` (when Google shows an earlier or usual price), `discount_text` (such as 25% OFF), `merchant` (the store), `more_stores` (true when Google says other stores sell it too), `delivery` (such as Free delivery by Thu), `returns` (such as 30-day returns).

**Google's ids and link:** `product_link` (Google's product page with every store's offer), `product_id` (the catalog id, missing for some single store listings), `offer_id`, `group_id` (the colours or sizes of one product), `listing_id`.

**The search:** `query`, `position` (1 is the first product Google shows, after repeats are removed), `page`, `country`, `language`, `search_url` (the same search on Google Shopping), `scraped_at`.

#### Stable fields for automations

These fields were present in all 120 rows of our test run and will keep these names:

| Field | What it holds |
|---|---|
| `query` | The search the row belongs to |
| `position` | Rank within that search, from 1 |
| `title` | Product title |
| `price` | Price as a number |
| `currency` | ISO currency code |
| `price_text` | Price exactly as shown |
| `merchant` | Store at the shown price |
| `more_stores` | True when other stores sell it too |
| `thumbnail_url` | Product image |
| `product_link` | Google product page with every store's offer |
| `offer_id` | Google's id of the shown offer |
| `listing_id` | Google's id of the card's listing |
| `search_url` | The Google Shopping search |
| `scraped_at` | Collection time, ISO 8601 UTC |

We will not rename these fields. New fields may be added. `product_id` (the catalog id) was in 117 of 120 rows: single store listings without a Google catalog entry have none.

#### Output examples

Real rows from our runs on 5 October 2026: the first in full, the others trimmed for length.

A deal with an old price and a discount badge, rank 7 for "wireless earbuds":

```json
{
  "query": "wireless earbuds",
  "position": 7,
  "page": 1,
  "title": "JBL Vibe Buds 2 Noise Cancelling True Wireless Earbuds",
  "price": 39.99,
  "currency": "USD",
  "price_text": "$39.99",
  "old_price": 65,
  "old_price_text": "$65",
  "discount_text": "38% OFF",
  "merchant": "Target",
  "more_stores": true,
  "rating": 3.56,
  "review_count": 471,
  "delivery": "Free delivery",
  "returns": "30-day returns",
  "thumbnail_url": "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcS7md3SWuMoZo0jAtaTr-82jQ3zbZ0aWD3Qlzro5w5bBuZlSUxRpALTH60Fi5cP5FXTRbUvtuG07iiGiNBsNngJU0juzPjA",
  "product_link": "https://www.google.com/search?ibp=oshop&q=JBL+Vibe+Buds+2+Noise+Cancelling+True+Wireless+Earbuds&prds=catalogid%3A15008238774157370735%2CheadlineOfferDocid%3A4307473848934577272%2CimageDocid%3A7730178198611898085%2Cgpcid%3A18415526280809133228%2Cpvt%3Ahg&hl=en&gl=us",
  "product_id": "15008238774157370735",
  "offer_id": "4307473848934577272",
  "group_id": "18415526280809133228",
  "listing_id": "10064219538562134692",
  "country": "us",
  "language": "en",
  "search_url": "https://www.google.com/search?q=wireless+earbuds&udm=28&hl=en&gl=us",
  "scraped_at": "2026-10-05T17:38:20.107Z"
}
```

The first product for "air fryer":

```json
{
  "query": "air fryer",
  "position": 1,
  "page": 1,
  "title": "COSORI 9-in-1 TurboBlaze Air Fryer 6 Qt",
  "price": 89.99,
  "currency": "USD",
  "price_text": "$89.99",
  "old_price": 120,
  "old_price_text": "$120",
  "discount_text": "25% OFF",
  "merchant": "Cosori",
  "more_stores": true,
  "rating": 3.9,
  "review_count": 145,
  "delivery": "Free delivery",
  "returns": "30-day returns",
  "product_id": "15949526360554442507",
  "offer_id": "6409429243624176268"
}
```

A pre-owned listing, with its condition, rank 40 for "air fryer":

```json
{
  "query": "air fryer",
  "position": 40,
  "title": "Instant Pot 5.3qt Air Fryer with Odor Erase + Clearcook",
  "price": 30.99,
  "currency": "USD",
  "discount_text": "69% OFF",
  "merchant": "Rebel",
  "more_stores": false,
  "rating": 3.47,
  "review_count": 46,
  "returns": "14-day returns",
  "condition": "Pre-owned",
  "product_id": "17687139548760332334"
}
```

A German search (`country` de, `language` de), a refurbished offer at rank 1 for "sony wf-1000xm5":

```json
{
  "query": "sony wf-1000xm5",
  "position": 1,
  "page": 1,
  "title": "Kopfhörer Sony WF-1000XM5",
  "price": 150,
  "currency": "EUR",
  "price_text": "150,00 €",
  "merchant": "Mediamarkt Marketplace DE",
  "more_stores": true,
  "rating": 4.04,
  "review_count": 3235,
  "returns": "Rücknahme innerhalb von 30 Tagen",
  "condition": "Erneuert",
  "product_id": "13754034627404443635",
  "offer_id": "16551240416395345901",
  "country": "de",
  "language": "de"
}
```

When a run delivers nothing, the dataset holds one row with `_type: "info"` and a `message` saying why (for example, Google showed only unrelated products). That row is never charged.

### Pricing

You pay per product delivered to your dataset (event `product-scraped`), plus a flat $0.005 per run, whatever memory you choose (event `run-start`).

| Apify plan | Per 1,000 products |
|---|---|
| Free | $2.99 |
| Starter (Bronze) | $2.59 |
| Scale (Silver) | $2.19 |
| Business (Gold) and above | $1.79 |

Never charged:

- a product Google repeats on a later page of the same search;
- pages Google refused, and searches Google has no products for;
- pages where not one product title holds a word of your search (the popular products Google shows when it cannot match a search);
- the info row written when a run delivers nothing, and the `OUTPUT` run summary.

To cap what a run can cost, set a maximum total charge in the run options. The actor stops before a product the budget cannot pay for.

### FAQ

#### What is Google Shopping?

Google's product search: the Shopping tab of a Google search, at google.com/shopping. For a product search it shows cards from many online stores with price, store, rating and delivery. This actor reads those cards and returns each one as a row.

#### How many products can I get per search?

Up to 500 per search. Google shows 40 to 50 products a page and repeats a few on later pages; in our test the second page of "wireless earbuds" added 34 new products to the 48 of the first. The actor stops a search when it has your number, when Google has nothing new, or when Google answers an empty page.

#### Is the price the lowest price?

It is the price on the card Google shows: one store's offer, usually the one Google picks for the card. When `more_stores` is true, other stores sell the same product, possibly cheaper; open `product_link` to see every offer on Google's product page.

#### Do I get the store's own product link?

Not in this version. Every row has `product_link`, Google's page for the product, which lists each store with a link to its offer. Google does not put store links on the results page itself.

#### Which countries and currencies work?

Any country Google Shopping serves; we tested the United States and Germany before release. Set `country` to its two letter code and the cards come from that market, priced in its currency. `currency` is read from the price and the country, so a plain $ becomes USD, CAD or AUD depending on the country. If a price uses a symbol the actor does not know, `currency` stays empty and `price_text` keeps the original.

#### How fresh is the data?

Every run reads Google live, so prices, deals and stores are as Google shows them at that moment. Schedule the actor to track changes.

#### Do I need a Google account, an API key or cookies?

No. The actor reads Google's public Shopping page, signed out.

#### Do I need to set up a proxy?

No. The actor always uses Apify's Google search proxy, which is included in the price. You cannot point it at another proxy.

#### Why did a search return no products?

Open the run's `OUTPUT` record in the key-value store: it lists every search with a status. `no_match` means Google showed only unrelated popular products (no title held a word of your search), so nothing was delivered or charged. `no_results` means Google had nothing. `blocked` means Google refused the page three times; nothing was charged for it, and a later run usually works.

#### Which formats can I export?

JSON, CSV, Excel, XML, HTML table and RSS from the dataset page in Apify Console, or through the Apify API.

#### Can I run it on a schedule?

Yes. In Apify Console open the actor, then Schedules, Add schedule, and pick how often. Each run reads Google fresh with the same input, which suits daily price and deal tracking by `product_id`.

#### Can I use it from Claude, ChatGPT or another AI agent?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/google-shopping-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http google-shopping-scraper "https://mcp.apify.com/?tools=themineworks/google-shopping-scraper"`

#### Is it legal to scrape Google Shopping?

The actor collects only what Google shows any signed out visitor: product titles, prices, stores and ratings that stores publish to sell their products. It holds no personal data. You are responsible for how you use the data, including Google's terms and data protection laws such as GDPR and CCPA.

### Integrations

- **Google Sheets**: send each run's dataset to a sheet with Apify's Google Sheets integration, for example a daily price table.
- **Make, Zapier and n8n**: start runs and receive products in your workflows, for example to alert on a price drop.
- **Webhooks**: get a call when a run finishes and fetch the dataset.
- **API**: start runs and read datasets from any language with the Apify API or the Python and JavaScript clients.
- **MCP clients**: Claude, ChatGPT, Cursor and other agents through Apify's MCP server.

### More from The Mine Works

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [eBay Product Listings Scraper](https://apify.com/themineworks/ebay-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shopify Store Scraper](https://apify.com/themineworks/shopify-store-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [🛒 TikTok Shop Scraper](https://apify.com/themineworks/tiktok-shop-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Walmart Product & Price Scraper](https://apify.com/themineworks/walmart-product-price-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Vinted Scraper](https://apify.com/themineworks/vinted-listings-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a problem or need a field? Open an issue on the actor's Issues tab and we will answer there. For a new source or a custom build, email dmineworks@gmail.com.

*Google Shopping Scraper turns any product search into rows of prices, stores, discounts, ratings and Google product links, in any country's currency, with no charge for repeats or filler.*

# Actor input Schema

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

One product search per line, typed as you would in Google Shopping (wireless earbuds, air fryer 5 litre, nike pegasus 41). Each search gets its own rows. Up to 500 per run.

## `maxResultsPerQuery` (type: `integer`):

Most products to deliver for each search, 20 to 500. Google shows 40 to 50 products a page, and later pages repeat a few; repeats are dropped and never charged. You pay only for products delivered.

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

Two letter country code of the shop market (Google's gl setting): us, gb, ca, au, in, de, fr, es, it, br, jp and so on. Stores, prices and currency follow the country.

## `language` (type: `string`):

Google interface language, a code such as en, de, fr, es, pt-BR or ja (Google's hl setting). It sets the language of delivery, returns and condition text; product titles stay as the stores wrote them.

## Actor input object example

```json
{
  "queries": [
    "wireless earbuds",
    "air fryer"
  ],
  "maxResultsPerQuery": 60,
  "country": "us",
  "language": "en"
}
```

# Actor output Schema

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

No description

## `summary` (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 earbuds",
        "air fryer"
    ],
    "maxResultsPerQuery": 60,
    "country": "us",
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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 = {
    "queries": [
        "wireless earbuds",
        "air fryer",
    ],
    "maxResultsPerQuery": 60,
    "country": "us",
    "language": "en",
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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 earbuds",
    "air fryer"
  ],
  "maxResultsPerQuery": 60,
  "country": "us",
  "language": "en"
}' |
apify call themineworks/google-shopping-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/google-shopping-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eZCuBMtCWl0GFZ1SH/builds/JjnWQfzmiAgAqsqjE/openapi.json
