Google Shopping Scraper — Prices, Sellers & Product Offers
Pricing
from $2.50 / 1,000 product scrapeds
Google Shopping Scraper — Prices, Sellers & Product Offers
Scrape Google Shopping for any search and country: title, price, old price, store, rating, reviews, delivery, condition, deal badges, with optional all-store offers and direct store links.
Pricing
from $2.50 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Google Shopping results for any search term and country: product title, brand, price, old ("Was") price, discount and deal badges, store name, whether more stores sell it, delivery and returns texts, condition, rating, review count, image and the Google product page link. Optionally open each product's Google page to get every store's offer (store, price, availability, delivery, returns, store rating) with the direct link to the store, plus the typical price range, description and specifications.
Use it for price monitoring, competitor and MAP checks, product research, assortment and deal tracking.
What data does it extract?
| Field | Example | Notes |
|---|---|---|
title | Bose QuietComfort Wireless Noise Cancelling Earbuds | |
brand | Bose | when Google knows it |
price / priceText / currency | 129 / "$129.00" / USD | price as shown on the card (lowest or featured store) |
isPriceFrom | false | true for "£24+" style prices |
wasPrice / savingsAmount / discountPercent | 179 / 50 / 27 | crossed-out price and "27% OFF" badge |
usualPrice | 49 | Google's "Usually $49" next to a "Low price" badge |
isOnSale / badges | true / ["27% OFF"] | "27% OFF", "SALE", "Low price", "30-day low" ... |
sellerName / hasMoreStores | Best Buy / true | store shown on the card; true when Google says "& more" |
shippingText / freeShipping | "Free delivery by Thu" / true | |
returnsText | "15-day returns" | |
condition / isUsed | "Pre-owned" / true | Google labels only used, pre-owned and refurbished items; null = no label |
installmentText, foreignPriceText | "MX$8.57 per month for 24 months", "$45" | where Google shows them |
rating / reviewCount | 4.2 / 5052 | exact review count when Google provides it |
imageUrl | https://encrypted-tbn0.gstatic.com/shopping?q=tbn:... | |
url | https://www.google.com/search?ibp=oshop&q=...&prds=catalogid:... | Google product page (compare prices) |
productId, catalogId, offerId, gpcid, imageDocid | 9675719922937365154 ... | Google's ids; productId is stable across searches and runs |
section, position, page, searchTerm, searchVariant, country, language, scrapedAt | "Deals on Wireless Earbuds", 6, 1, ... | where the product appeared |
With Include all store offers on, products sold by several stores also get:
| Field | Example |
|---|---|
offers | [{"sellerName": "Skate Warehouse", "price": 99.99, "currency": "USD", "title": "Skullcandy x Bose Method 360 ANC Headphones Black", "availability": "In stock online", "sellerRating": 4.8, "shippingText": "Free delivery by Oct 20", "returnsText": "Free 60-day returns", "url": "https://www.skatewarehouse.com/...", "domain": "skatewarehouse.com", "merchantId": "1271790", "offerId": "13824700559495535735"}, ...] |
offersCount, hasMoreOffers, lowestOfferPrice | 4, true, 99.99 |
merchantUrl | the store link of the store shown on the card |
typicalPriceRange | "$92 to $130" |
description, specs | product description; {"Bluetooth Version": "5.3", "Driver Size": "12 mm", ...} |
How to scrape Google Shopping
- Enter one or more search terms (e.g.
wireless earbuds,air fryer,Nike Pegasus 41). - Pick the country (United States by default) and, if you like, a sort order, price range, condition, on sale only or free shipping only.
- Set Max products and run. Download the results as JSON, CSV or Excel, or read them through the API.
Example input:
{"queries": ["wireless earbuds"],"country": "us","sortBy": "price_low","minPrice": 30,"maxPrice": 60,"maxItems": 100}
Example output (one product, abridged):
{"productId": "9675719922937365154","catalogId": "11042967417490666683","title": "Bose QuietComfort Wireless Noise Cancelling Earbuds","brand": "Bose","price": 129,"priceText": "$129.00","currency": "USD","wasPrice": 179,"savingsAmount": 50,"discountPercent": 27,"isOnSale": true,"badges": ["27% OFF"],"sellerName": "Best Buy","hasMoreStores": true,"shippingText": "Free delivery by Thu","freeShipping": true,"returnsText": "15-day returns","condition": null,"rating": 4.2,"reviewCount": 5052,"section": "Deals on Wireless Earbuds","position": 6,"page": 1,"url": "https://www.google.com/search?ibp=oshop&q=Bose+QuietComfort+Wireless+Noise+Cancelling+Earbuds&prds=catalogid:11042967417490666683,...","searchTerm": "wireless earbuds","country": "us"}
How many products can I get per search?
Google shows about 40-50 products per results page (the results grid plus, on the first page, a few shelves
such as "Deals on ..."). The actor pages through Google's results with start=10, 20, ... (the pages Google's own
"More results" link loads). In tests the pages of "wireless earbuds" added 50, 34, 25 and 31 new products
(140 unique from 4 pages) and Google answered the 11th page with no products. When a search runs dry and you have
not fixed the sort order or price range yourself, the actor continues with Google's other sort orders (price low /
high, rating) and Google's own price bands for that search, removing duplicates. Expect roughly 100-250 unique
products per broad search term, fewer for narrow ones; use several search terms for bigger catalogs.
Max Google pages per search term (default 5) caps the cost; the actor stops early when pages stop adding new
products.
How much does it cost?
You pay per product saved (see the Pricing tab) plus Apify platform usage: the Google SERP proxy (about $0.0025
per Google page of 40-50 products, i.e. roughly $0.06-0.10 per 1,000 products) and a little compute. With
Include all store offers each product page is one more SERP proxy request (about $0.0025) and the
product-offers event; products listed by a single store are skipped (their store is already on the card).
With a price range set, the first page of a search can be requested a second time with the search's category id
(Google's price filter needs it), i.e. one extra SERP request per search.
Does it need a Google account or a browser?
No. It reads the public Google Shopping pages over plain HTTP through Apify's GOOGLE_SERP proxy (Google answers ordinary datacenter and residential requests with a JavaScript wall, so the proxy group is required and the actor always uses it). No login, no cookies, no headless browser. The store links are read from Google's redirect header; the stores' own pages are never opened.
Can I scrape other countries and currencies?
Yes: pick the country (United States, United Kingdom, Canada, Australia, Germany, France, India, Spain, Italy,
Netherlands, Brazil, Mexico, Poland and more). The actor searches that country's Google domain and pins the
location, so prices, stores and currency are those of that market; answers Google localised to another country
are detected and retried. Prices are parsed for local formats (1.269,00 PLN, MX$1,736.29, £24+).
Monitor changes on a schedule
Turn on Only new or changed items and save the input as a task with a Schedule (e.g. daily). The actor
remembers which products earlier runs of the same search returned and outputs only new products and products
whose price changed; unchanged products are not saved and not charged. Each output product gets changeType
(new or changed) and, for changed ones, previousValues with the old price. Use Monitoring key to keep
several schedules on the same search separate.
Google reshuffles Shopping results between fetches, so "new" means new to this watch, not newly listed: in our test, a second run of a 40-product search 15 minutes later returned 30 products the first run had not seen. The listed price is the store Google shows first, so a "changed" price can also mean Google picked a different store. To track specific products closely, turn on Include all store offers and compare all stores.
Is it legal to scrape Google Shopping?
The actor collects publicly visible product listings (product titles, prices, store names, ratings) that Google shows to anyone without logging in. It does not collect personal data. Check Google's terms and the laws that apply to you (e.g. on database rights) for your use case; use the data responsibly.
Limits
- Google Shopping's "from N stores" count is not on the results page any more;
hasMoreStorestells you whether more stores sell the product, and Include all store offers lists them (Google server-renders the first ~2-10 offers;hasMoreOffers= true when it hides more behind "More stores"). - Store links (
merchantUrl,offers[].url) come only with Include all store offers; the results page itself carries no store links. Products listed by a single store are not opened (no extra offers to get). - Filters are Google's own (the same tokens and query words its filter chips use). Sort orders, on sale and free
shipping were applied by Google in every test. Google applied the price range for some searches ("wireless
earbuds") but ignored it for others ("robot vacuum"); the actor therefore re-checks price range, condition,
on sale and free shipping on every card and drops products that do not match (they are not charged), which can
mean fewer products per page for price-filtered searches. SUMMARY
notes.priceFilter.pagesIgnoringItcounts it. - About 1 in 8 Google answers come back localised to another country even with the location pinned; the actor detects them and retries (each retry is another SERP proxy request).