Google Shopping Scraper Pro: Prices, Sellers, Ratings
Pricing
from $14.18 / 1,000 product results
Google Shopping Scraper Pro: Prices, Sellers, Ratings
Scrape Google Shopping product results: title, price, currency, discount, merchant, rating, reviews, condition, shipping and image. Filters for price, condition and sort. Export JSON, CSV or Excel.
Pricing
from $14.18 / 1,000 product results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Google Shopping Scraper Pro: Prices, Sellers, Ratings
Here is one real result, with the fields the actor returns for a single product (values are real, from a live run for iphone 15 pro):
{"query": "iphone 15 pro","countryCode": "us","languageCode": "en","position": 1,"title": "Apple iPhone 15 Pro","price": 494.99,"currency": "$","currencyCode": "USD","priceRaw": "$494.99","originalPrice": 525,"discountPct": 5,"condition": "New","merchant": "Walmart","merchantSubSeller": "ELECTRONIC DEALS INC","hasMultipleSellers": true,"productRating": 4.4,"reviewsCount": 10000,"deliveryText": null,"freeDelivery": false,"thumbnailUrl": null,"imageUrl": null,"productId": "9237196757763889136","extensions": ["5% off", "Compare prices from multiple sellers"],"isSponsored": false,"googleShoppingUrl": "https://www.google.com/search?tbm=shop&q=Apple%20iPhone%2015%20Pro&gl=us&hl=en","comparePricesUrl": "https://www.google.com/search?tbm=shop&q=Apple%20iPhone%2015%20Pro&gl=us&hl=en","priceComparison": null,"aiDealAnalysis": null,"source": "google.com","observedAt": "2026-08-21T18:23:36.145Z","error": null}
The most complete Google Shopping product scraper available. It returns every field Google Shopping exposes for a product (title, numeric price and currency, original price, discount, condition, merchant, marketplace sub-seller, rating, reviews, delivery, image and product id), plus derived fields like a normalized extensions badge list and a hasMultipleSellers flag, and gives you a full set of filters (price range, condition, sort order, on-sale, free-shipping, merchant, country and language) to target exactly the products you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Use cases
- How we compare
- Billing and limits
- FAQ and troubleshooting
What it does
Give the actor one or more product search terms (or full Google Shopping URLs) and it fetches the live Google Shopping results, parses every product card, and writes one clean record per product to the dataset. It handles the country, language and device targeting for you, rotates its own connection so you never configure a proxy, and retries automatically on soft blocks so you get real parsed products rather than empty pages.
Each record carries the full set of fields Google Shopping shows: the product title, a numeric price with its currency and currencyCode, the raw price string, originalPrice and discountPct when the item is on sale, condition (New, Used or Refurbished), the merchant and any marketplace merchantSubSeller, a hasMultipleSellers flag, productRating and reviewsCount (with K and M abbreviations expanded to real numbers), delivery text, image, product id, a normalized extensions badge list, and a Google Shopping deep-link.
Two optional add-ons go beyond a raw scrape: a cross-seller price comparison that runs an extra search to return every distinct seller and price for a product with the lowest and highest, and an AI deal analysis that judges whether the price is a good deal, recommends the best seller and condition, extracts spec highlights and gives buying advice.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the products for each query.
{"queries": ["iphone 15 pro", "nike air max"],"countryCode": "us","languageCode": "en","maxProductsPerQuery": 40}
queries accepts plain product terms or full https://www.google.com/search?tbm=shop&q=... URLs. Every other field is optional.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
queries | array of strings | yes | ["iphone 15 pro"] | One or more product search terms or full Google Shopping URLs. Each item is searched separately. A single string is also accepted. |
maxProductsPerQuery | integer | no | 40 | Maximum products to return per query (0 = no per-query cap). Each product is one billable result. |
maxResults | integer | no | 0 | Optional overall cap on total products across all queries (0 = no global cap). |
resultsPerPage | integer | no | 40 | Products per page (Google num, 10 to 100). Google Shopping typically returns 40 to 60 per page. |
maxPagesPerQuery | integer | no | 1 | Pagination depth per query (1 to 10). |
countryCode | string | no | us | Two-letter country to search from (Google gl), for example us, gb, es, de, br. Also matches the connection country for local prices and sellers. |
languageCode | string | no | en | Two-letter interface language (Google hl), for example en, es, de, fr, pt. |
minPrice | integer | no | (none) | Only return products priced at or above this amount (local currency). Applied via Google's price filter and re-checked on the parsed price. |
maxPrice | integer | no | (none) | Only return products priced at or below this amount (local currency). |
condition | enum | no | any | Filter by item condition: any, new, used or refurbished. |
sortBy | enum | no | relevance | Order results: relevance, price_low, price_high or review. Applied client-side so the order is always honored. |
onSale | boolean | no | false | Only return products that show a discount / sale price. |
freeShipping | boolean | no | false | Only return products that offer free delivery / free shipping. |
merchant | string | no | (none) | Only return products whose merchant name contains this text, for example amazon, walmart, best buy. |
mobileResults | boolean | no | false | Fetch the mobile version of Google Shopping instead of desktop. |
safeSearch | boolean | no | false | Enable Google SafeSearch filtering (safe=active). |
tbs | string | no | (none) | Raw Google tbs value passed through as-is (advanced). Overrides the price / condition / sort / on-sale / free-shipping filters when set. |
priceComparison | boolean | no | false | Paid add-on, paying accounts only. For each product, runs an extra search and returns every distinct seller and price found, with the lowest and highest. |
aiDealAnalysis | boolean | no | false | Paid add-on, paying accounts only. AI judges whether the price is a good deal, recommends the best seller and condition, extracts spec highlights and gives buying advice. |
maxAddonProducts | integer | no | 20 | Cap on how many products the paid add-ons run on per run, to control add-on cost. |
Output reference
One dataset item per product. Types are string, number, integer, boolean, object, array, or null when a value is absent.
| Field | Type | Description |
|---|---|---|
query | string | The search term (or query from a Shopping URL) that produced this product. |
countryCode | string | Two-letter country the search was run from (Google gl). |
languageCode | string | Two-letter interface language (Google hl). |
position | integer | 1-based rank of the product within its query. |
title | string | Product title as shown on Google Shopping. |
price | number | Current price as a number in the local currency. |
currency | string | Currency symbol shown, for example $, €, £. |
currencyCode | string | ISO currency code inferred from the symbol, for example USD, EUR, GBP. |
priceRaw | string | The raw price string exactly as shown, for example $1,299.00. |
originalPrice | number | Original / pre-discount price when a sale is shown. |
discountPct | integer | Discount percent when the product is on sale, for example 26. |
condition | string | Item condition: New, Used or Refurbished. |
merchant | string | Merchant / store name, for example Best Buy, Walmart, Amazon. |
merchantSubSeller | string | Marketplace sub-seller when the merchant is a marketplace, for example the third-party seller behind a Walmart listing. |
hasMultipleSellers | boolean | True when Google shows the product is available from multiple sellers. |
productRating | number | Product star rating out of 5. |
reviewsCount | integer | Number of product reviews (K/M abbreviations expanded, for example 1.5K to 1500). |
deliveryText | string | Delivery / shipping text shown, for example Free delivery, Free delivery by Sun. |
freeDelivery | boolean | True when free delivery / free shipping is offered. |
thumbnailUrl | string | Product thumbnail image URL when present in the response. |
imageUrl | string | Product image URL (same source as the thumbnail). |
productId | string | Google Shopping product / cluster id when available. |
extensions | array | Human-readable badges, for example ["26% off", "Free delivery", "Refurbished"]. |
isSponsored | boolean | True when the product is a sponsored / ad listing. |
googleShoppingUrl | string | A Google Shopping deep-link that opens this product for the search country and language. |
comparePricesUrl | string | A Google Shopping link to compare prices across sellers, when multiple sellers are shown. |
priceComparison | object | Add-on: sellerCount, lowestPrice, highestPrice, currency, lowestSeller, offers[] (seller, price, condition, delivery, rating, reviews). null unless the add-on ran and returned two or more sellers. |
aiDealAnalysis | object | Add-on: isGoodDeal, priceAssessment, bestSellerRecommendation, specHighlights[], buyingAdvice. null unless the add-on ran and succeeded. |
source | string | Always google.com. |
observedAt | string | ISO 8601 timestamp when the product was collected. |
error | string | null on success. A soft-blocked or failed query writes a single item with a populated error and is not charged. |
Example output record
The hero JSON at the top of this page is a real record from a live run for iphone 15 pro. Commercial queries populate price, merchant, condition, productRating and reviewsCount on almost every product; on-sale products add originalPrice and discountPct; multi-seller products set hasMultipleSellers and a comparePricesUrl. Enable priceComparison to fill priceComparison with every seller and price, and aiDealAnalysis to fill aiDealAnalysis with a deal verdict and buying advice.
Run via API and CLI
Start a run and read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-shopping-scraper-pro/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"queries":["nike air max"],"countryCode":"us","maxProductsPerQuery":40}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-shopping-scraper-pro/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"queries":["zapatillas running"],"countryCode":"es","languageCode":"es"}'
Apify CLI:
apify call scrapers_lat/google-shopping-scraper-pro \--input '{"queries":["4k tv"],"minPrice":300,"maxPrice":800,"sortBy":"price_low"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
<DATASET_ID> is returned as defaultDatasetId in the run object.
Use cases
- Price monitoring: track the price of your products or key SKUs across countries and currencies over time.
- Price comparison: with the price comparison add-on, pull every seller and price for a product and find the lowest offer.
- Competitor price tracking: watch which merchants sell a product and at what price, condition and discount.
- MAP compliance: detect sellers listing below your minimum advertised price by scanning a product's offers and discounts.
- Product research: gather titles, ratings, reviews, conditions and price ranges for a category before sourcing.
- Dropshipping: find products, suppliers and price points across marketplaces from a keyword.
- Market analysis: measure price distribution, discount depth and rating quality for a product category by country.
- Deal discovery: filter to on-sale items and use the AI deal analysis add-on to surface the best buys.
How we compare
Compared against four of the most popular Google Shopping scrapers on the Apify Store at the time of writing:
- A =
epctex/google-shopping-scraper(~2.3K users, 4.9 stars, $30/month rental, requires a proxy) - B =
damilo/google-shopping-apify(~770 users, 4.6 stars, pay per result) - C =
automation-lab/google-shopping-scraper(~340 users, pay per result) - D =
scrape.badger/google-shopping-scraper(~30 users, pay per result)
| Feature | This actor | A | B | C | D |
|---|---|---|---|---|---|
| Title, numeric price and currency | Yes | Yes | Yes | Yes | Yes |
| Raw price string | Yes | Yes | Yes | Yes | Yes |
| Original price and discount percent | Yes | Partial | No | No | No |
| Condition (new / used / refurbished) | Yes | Partial | No | No | No |
| Merchant / seller name | Yes | Yes | Yes | Yes | Yes |
| Marketplace sub-seller | Yes | No | No | No | No |
| Multiple-sellers flag | Yes | Yes | No | No | No |
| Product rating | Yes | Yes | Yes | Yes | Yes |
| Reviews count (K/M expanded) | Yes | Yes | Yes | Yes | Yes |
| Delivery / shipping text | Yes | Partial | Yes | Yes | No |
| Product image / thumbnail | Partial | Yes | Yes | Yes | Yes |
| Product id | Yes | Yes | Yes | No | Yes |
| Position on page | Yes | Yes | Yes | Yes | Yes |
| Normalized badges / extensions | Yes | No | No | No | No |
| Price range filter (min / max) | Yes | No | No | Yes | Yes |
| Condition filter | Yes | No | No | No | No |
| Sort (price / review), guaranteed | Yes | No | No | Yes | Partial |
| On-sale filter | Yes | No | No | No | Yes |
| Free-shipping filter | Yes | No | No | No | Yes |
| Merchant filter | Yes | No | No | No | No |
| Country and language targeting | Yes | Yes | Yes | Yes | Yes |
| Full Shopping URL input | Yes | Yes | No | No | No |
| Pagination (multi-page) | Yes | Yes | Yes | Yes | Yes |
| Cross-seller price comparison | Yes | Yes | No | Yes | No |
| AI deal analysis | Yes | No | No | No | No |
| No proxy configuration required | Yes | No | Yes | Yes | Yes |
| No charge on failed or empty queries | Yes | Not stated | Not stated | Not stated | Not stated |
Why choose this scraper
- The full product card in one record. Numeric price, currency and raw string, original price and discount, condition, merchant and marketplace sub-seller, multi-seller flag, rating, reviews, delivery, image, product id and a normalized badge list, all in one flat row.
- Filters no single competitor matches together: price range, condition, guaranteed sort order, on-sale, free-shipping and merchant, all applied and re-checked on the parsed data so the results are correct even when Google ignores a URL parameter.
- Value-adds no competitor offers together: cross-seller price comparison that returns every seller and price for a product, and AI deal analysis that judges the price and recommends the best seller.
- Reliability by design. A dedicated unblocking connection returns real parsed products rather than the JavaScript shells that block naive HTTP scrapers, with automatic retries. In our tests it returned real products on every query across the US and Spain.
- Fair billing. One price per product, a discount ladder at higher plans, add-ons off by default and charged only on success, and no charge for soft-blocked or empty queries.
Honest notes: on raw price per product, B and D are cheaper (this actor is priced for full-feature completeness, reliability and its add-ons, not to be the cheapest); A is a fixed $30/month rental plus usage and requires you to configure a proxy. Google's current Shopping grid is rendered client-side and does not expose a direct merchant link in the server HTML, so productUrl here is a Google Shopping deep-link plus the productId, not a raw merchant URL; the visible offer data (merchant, price, condition, rating, reviews, multi-seller flag, and every seller via the price comparison add-on) is captured in full. Thumbnails are populated for the products whose images are present in the server response (above the fold); below-the-fold images load client-side and come back null.
Billing and limits
- Pay per product. You are charged one
resultevent per product returned, with a tiered price that decreases at higher Apify plans. See the pricing tab for the current price. - Actor start. A small one-time
apify-actor-startevent is charged once per run. - Optional add-ons, off by default, paying accounts only.
price_comparison(an extra search that returns every seller and price for a product, charged only when two or more real sellers are returned) andai_deal_analysis(a deal verdict, best-seller recommendation, spec highlights and buying advice, charged only when the AI returns usable output). UsemaxAddonProductsto cap how many products they run on. - No charge on failure. A soft-blocked or unparseable query writes a single item with an
errorfield and is not charged. Empty results cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached the actor stops emitting and charging further products. - Free Apify plans are capped at 10 products per run and cannot use the paid add-ons. Upgrade for more.
FAQ and troubleshooting
Do I need to configure a proxy? No. The actor handles the connection and anti-bot retries internally. There is no proxy input.
A query came back with an error field. Why?
Google soft-blocked or returned an unparseable page for that query after retries. Those queries are not charged. Re-run the query; transient soft blocks usually clear.
Why is thumbnailUrl null for some products?
Google loads below-the-fold product images with JavaScript. This is an HTTP scraper, so the thumbnail is filled only when the image URL is present in the server response, which is the case for the products near the top of the results.
Why is there no direct merchant link?
Google's current Shopping grid opens each product in a client-side viewer and does not put a direct merchant URL in the server HTML. The actor returns a googleShoppingUrl deep-link and the productId instead, and the price comparison add-on returns every seller for a product.
Can I get every seller and price for a product?
Yes. Enable the priceComparison add-on. For each product it runs an extra search and returns sellerCount, lowestPrice, highestPrice and an offers list of every distinct seller with price, condition, delivery and rating.
Can I search other countries and languages?
Yes. Set countryCode and languageCode (for example es and es). The connection is matched to the country so prices and sellers are local.
Is this an official Google tool? No. This actor is independent and has no affiliation with Google. It reads only publicly available Google Shopping results.
Related scrapers
- Google Search Results Scraper (SERP) Pro: organic results, ads, People Also Ask and more from Google Search.
- Google Maps Scraper: Google Maps places, ratings and contact details.
- Google News Scraper: Google News articles by topic or query.
- Shopify Store Products Scraper: products, variants and prices from any Shopify store.
- Google Play Apps Scraper: app listings and metadata from Google Play.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for search, e-commerce, company registries, government data and finance. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Google. Accesses only publicly available Google Shopping results. Use in accordance with Google's terms of service.
