Google Shopping Scraper
Pricing
from $2.20 / 1,000 results
Google Shopping Scraper
Collect Google Shopping offers for any search, country and language: product title, price and currency, previous price, store, rating and review count, delivery and returns notes, product link and image. Paging and item caps included; you only pay for offers delivered.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Features
Share
Compare prices across stores in one table. Type the products you care about, pick a country and language, and every Google Shopping offer becomes one clean row: product title, current price as a number and as shown, currency, the "Was" or "Usually" price, the deal badge, the store, whether other stores sell it too, star rating and review count, delivery and returns notes, a link to the product's Google Shopping page and the product image.
Built for e-commerce teams, pricing analysts, brands checking their resellers and deal sites that need Google Shopping product and price data by country.
What sets it apart
- $2.20 per 1,000 offers, plus $0.005 per run. Every field below is included; there are no add-on charges.
- Prices you can sort and prices you can show.
priceis a number,priceTextis exactly what the shopper saw, and the "Was" or "Usually" price comes as both too, next to the deal badge. - The shopping country you choose. Pick the market and language; prices, stores and currency follow it, and
currencyalways names the currency of each price. - Caps that hold. A cap per search and a cap for the whole run, so a long list of searches never runs away.
- Only delivered offers are charged. Pages that cannot be read are listed in the run summary and are not charged.
Use cases
- Price monitoring: track what stores charge for your products, or your competitors', on a schedule.
- Competitor research: see which stores list a product, at what price, with what delivery and returns terms.
- Deal discovery: find offers below their usual price, with the discount badge Google shows.
- Assortment and market research: what sells under a search term in a given country, with ratings and review counts.
- Catalog enrichment: product titles, images and review counts for a list of products.
Quick start
Open the Actor in Console and press Start: the prefilled form searches "wireless earbuds" and "espresso machine" in the US, up to 50 offers each (about 100 offers, roughly $0.225). queries is the only required input.
{"queries": ["wireless earbuds", "espresso machine"],"countryCode": "us","languageCode": "en","maxItemsPerQuery": 50,"maxItems": 1000}
Each search is one Google Shopping search. Google lists about 40 to 60 offers per results page; set maxItemsPerQuery higher to read further pages. Paging stops by itself when a search runs out of new offers.
Input
| Input | Type | Default | Meaning |
|---|---|---|---|
queries | array | required | What to search for, one search per line, exactly as you would type it (espresso machine, nike air max 90). A Google search link (google.com/search?q=...) also works. Repeated searches are read once. |
countryCode | string | us | Two-letter code of the shopping market (us, gb, de, fr, ca, au, in, ...). Prices, stores and currency follow that country. |
languageCode | string | en | Language of the result text, such as delivery and returns notes (en, de, fr, es, ...). |
maxItemsPerQuery | integer | 100 | Offers to collect per search, 1 to 1,000. |
maxItems | integer | 1000 | Total cap on offers (dataset rows) across every search, up to 20,000. |
maxConcurrency | integer | 3 | Searches that run side by side, 1 to 5. |
Example queries
{"queries": ["4k monitor", "mechanical keyboard"], "maxItemsPerQuery": 100}{"queries": ["kaffeevollautomat"], "countryCode": "de", "languageCode": "de"}{"queries": ["electric kettle", "air fryer"], "countryCode": "gb"}{"queries": ["https://www.google.com/search?q=running+shoes"]}
What it returns
The dataset contains one row per offer:
| Field | Meaning |
|---|---|
position | 1-based rank of the offer within its search, across pages. |
title | Product title as listed. |
price | Current price as a number. For a "from" price shown as $640+, the lowest price. |
priceText | The price exactly as shown, for example $249.99, 419,00 € or $640+. |
currency | ISO currency code, such as USD, EUR or GBP. |
originalPrice | The previous or typical price as a number, when the offer shows one. |
originalPriceText | That price as shown, for example Was $599 or Usually $299. |
hasMorePrices | Google notes that more prices are available for the product. |
condition | Condition label when shown, for example Used or Refurbished. |
badge | Deal badge, for example 8% OFF or Low price. |
merchant | The store selling the offer. Empty for a "from" price across several stores. |
moreStores | Other stores also sell this product. |
rating | Average product rating out of 5. |
reviewsCount | Number of reviews (3.6K becomes 3600). |
delivery | Delivery note, for example Free delivery by Wed. |
returns | Returns note, for example 30-day returns. |
productLink | The product's Google Shopping page, with prices from every store. |
imageUrl | Product image. |
productId, offerId | Google's ids for the product and for this offer. |
searchQuery | The search the offer came from: term, page, countryCode, languageCode. |
scrapedAt | Collection time (UTC, ISO 8601). |
Fields that an offer does not show are null. The run summary (OUTPUT) reports offers (rows delivered), pages read, searches with no results in emptyQueries, and any page that could not be read in pageErrors, each with a short code and message (for example LAYOUT_CHANGED or NETWORK_ERROR).
Output example
{"position": 4,"title": "Gaggia Classic E24 Iconic espresso machine for your home","price": 549.0,"priceText": "$549.00","currency": "USD","originalPrice": 599.0,"originalPriceText": "Was $599","hasMorePrices": false,"condition": null,"badge": "8% OFF","merchant": "Whole Latte Love","moreStores": true,"rating": 2.9,"reviewsCount": 831,"delivery": "Free delivery by Sat","returns": "30-day returns","productLink": "https://www.google.com/search?ibp=oshop&q=Gaggia+Classic+E24+Iconic+espresso+machine+for+your+home&prds=catalogid%3A10095501518220150894%2Cgpcid%3A14862320879344990550%2CheadlineOfferDocid%3A3644310309703997006%2CimageDocid%3A7557753840327796041%2CproductDocid%3A17420663260271296052%2Cpvt%3Ahg&hl=en&gl=us&udm=28","imageUrl": "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcSPNnYW3QhnZICjzkZeAi5mV3wH-G_V28yf2MWTNAUfQr2Q7oVyDUpMSFCKLFAWUKzqyT9INcOmFQ","productId": "10095501518220150894","offerId": "3644310309703997006","searchQuery": {"term": "espresso machine","page": 1,"countryCode": "us","languageCode": "en"},"scrapedAt": "2026-10-20T00:31:12Z"}
Price
$0.0022 per offer delivered (one dataset row), plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event ($0.005). The start is charged even if the run saves no offers. Pages that could not be read are not charged. Platform usage is included in these prices.
Worked costs: the 100-offer prefill run is about $0.225; 1,000 offers about $2.205; the 20,000-offer run maximum about $44.005.
Scheduling and monitoring
Schedule the same searches daily or weekly to follow prices, discounts and which stores carry a product. Each run is a full snapshot; match offers across runs by offerId (or productId for the product). There is no built-in "changes only" mode.
FAQ
How fresh is the data? Every run reads Google Shopping at run time; nothing is cached between runs. scrapedAt records when each row was collected.
How many offers does a search return? Google lists about 40 to 60 offers per results page. Most searches run out of new offers after a few pages (roughly 100 to 250 offers).
Does it show every store's price for a product? Each row is one offer as listed in the results. moreStores says when other stores sell the product, and productLink opens Google's page with every store's price.
Which export formats are available? JSON, CSV, Excel, XML or RSS from the dataset, or read the rows with the Apify API.
Good to know
- Google shows each shopper a slightly different selection, so offers and their order can differ from what you see when signed in to your own Google account. Results here are what a signed-out shopper in the chosen country sees.
- Prices come from the chosen country's shop, in its currency. A few offers from stores abroad can appear (for example
US$120.00in Canada), andcurrencyalways says which currency a price is in. - The same product can be listed in several places on a results page; each offer is delivered once per search.
- The store's own product page is one click away from
productLink, which lists every store's price for the product. - Most searches run out of new offers after a few pages (roughly 100 to 250 offers), so very high
maxItemsPerQueryvalues may return fewer offers. - Searches that return no offers are listed in
OUTPUT.emptyQueries. If a run's searches keep returning almost nothing, the run stops early and says so, rather than reading empty pages. - If Google is temporarily unavailable, the run reports any page it could not finish in
OUTPUT.pageErrors; offers already collected are kept. If no page at all can be read, the run fails with a clear message.