Google Shopping Scraper avatar

Google Shopping Scraper

Pricing

from $2.00 / 1,000 products

Go to Apify Store
Google Shopping Scraper

Google Shopping Scraper

Scrapes Google Shopping results for any search in 68 countries: title, price, old price, currency, store, rating, reviews, delivery, returns, thumbnail and product link, about 40 products per request, with price filters and optional offers from every store.

Pricing

from $2.00 / 1,000 products

Rating

0.0

(0)

Developer

Mina

Mina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Google Shopping Scraper do?

Google Shopping Scraper collects Google Shopping results for any search words in 68 countries: the product title, price as a number with its currency, the old (was) price, the store selling it, the brand, the star rating and review count, the delivery and returns text, the thumbnail, Google's product page link and the product's ids. Each Google request brings back about 40 products, so runs are fast and cheap. Turn on one option and it also saves every store's offer for each product, with the store's own product link.

Try it with the prefilled search: open the Actor, click Start, and 40 wireless earbuds from US stores arrive in under a minute. Because it runs on the Apify platform, you also get API access, scheduled runs, integrations (Google Sheets, Make, Zapier, webhooks), run monitoring and Apify Proxy built in, so there is nothing to set up to read Google Shopping.

Why scrape Google Shopping?

  • Price monitoring: track what your products and your competitors' cost across stores, every day, in each country you sell in.
  • Competitor and assortment research: see which brands and stores Google shows for your category keywords, and at which prices.
  • Deal finding: collect discounted products (old price, "% OFF" badge) or everything within a price range.
  • Market research: compare prices, ratings and delivery terms for the same search in different countries and currencies.
  • Product catalog enrichment: get brands, ratings, review counts and thumbnails for product names.

How to scrape Google Shopping

  1. Type your search words into Search words or Google Shopping links, one search per line (for example wireless earbuds).
  2. Or search on Google Shopping and paste the address bar link instead; its country, language and filters are used as they are.
  3. Set Max products per search (100 by default) and the Country.
  4. Optionally set a Minimum price and Maximum price, or turn on Include every store's offers.
  5. Click Start, then download the products when the run finishes.

Input

Everything is set on the Input tab. In JSON, the input looks like this:

{
"queries": [
"wireless earbuds",
"https://www.google.de/search?q=kopfh%C3%B6rer&udm=28&hl=de&gl=de"
],
"maxProductsPerQuery": 100,
"countryCode": "us",
"languageCode": "en",
"minPrice": 20,
"maxPrice": 150,
"includeOffers": false
}
FieldTypeDefaultWhat it does
queriesarray of strings(required)Search words, or Google Shopping result links (with or without https://, udm=28 or the older tbm=shop). API callers can also send {"url": "..."} objects.
maxProductsPerQueryinteger100Products to save per search, 1 to 500.
countryCodestringusTwo-letter country whose stores, prices and currency you want, such as gb, de, in or br (68 countries; uk works too).
languageCodestringenInterface language (Google's hl), such as de or pt-BR. It changes the labels Google writes, such as delivery and returns.
minPricenumbernoneOnly products at this price or more, in the country's currency.
maxPricenumbernoneOnly products at this price or less, in the country's currency.
includeOffersbooleanfalseAlso save up to 5 stores' offers per product, with each store's own link (one more Google request per product).

A pasted link keeps its own country, language and filters. The input settings fill in only what the link leaves out.

Output

One row per product, in Google's order. A real row from the prefilled search:

{
"query": "wireless earbuds",
"position": 3,
"title": "soundcore P31i",
"price": 34.99,
"currency": "USD",
"oldPrice": 50,
"merchant": "soundcore US",
"moreMerchants": true,
"brand": "Soundcore",
"rating": 4.8,
"reviewCount": 1117,
"ratingDrawSuspect": false,
"delivery": "Free delivery",
"returns": null,
"badge": "30% OFF",
"thumbnail": "https://encrypted-tbn1.gstatic.com/shopping?q=tbn:ANd9GcRl7vZkyy9eXzlVJGyFLScPRAK90BT7UqABaGow9wRYl3xmoTjwnfWJ0W6o9ZuswnyMcCB1p-Gwb1Cwt54Jy5nddtSXFPbM0WxHnX-T6A3uIcYrATP7Y9f7a9E",
"productId": "9824472621292795091",
"offerId": "18409718912619203230",
"productLink": "https://www.google.com/search?q=wireless+earbuds&ibp=oshop&udm=28&hl=en&gl=us&prds=catalogid%3A9824472621292795091%2Cpvt%3Ahg",
"country": "us",
"searchUrl": "https://www.google.com/search?q=wireless+earbuds&udm=28&hl=en&gl=us",
"scrapedAt": "2026-10-20T14:40:57.980817+00:00"
}

With Include every store's offers on, each row also has merchantUrl and an offers list. A real offer from an airpods pro 3 search:

{
"merchant": "Best Buy",
"price": 228,
"currency": "USD",
"oldPrice": null,
"title": "Apple - AirPods Pro 3, Wireless Active Noise Cancelling Earbuds with Heart Rate Sensing Feature - White",
"merchantRating": null,
"availability": "In stock online",
"shipping": "Free delivery",
"link": "https://www.bestbuy.com/product/apple-airpods-pro-3-wireless-active-noise-cancelling-earbuds-with-heart-rate-sensing-feature-white/JJGCQLYK5F/sku/12213138?ref=212&loc=marketplace"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel, or read it through the Apify API.

Data fields

FieldTypeDescription
querystringThe search words the product was found for.
positionintegerRank of the product in the results for that search, from 1.
titlestringProduct title as Google shows it.
pricenumberCurrent full price, read in the country's number style (1.299,00 € is 1299). For a price range, the lowest price. Monthly instalments (R$ 699,94/mês x 18) are never used as the price.
currencystringISO currency code, such as USD, EUR or INR.
oldPricenumber or nullThe crossed-out "was" or usual price (such as Was $249, 40% off ₹799), when the product is discounted.
merchantstring or nullThe store whose offer Google shows. Null when Google shows only "& more".
moreMerchantsbooleanTrue when other stores sell the product too ("& more").
brandstring or nullBrand Google lists for the product.
ratingnumber or nullStar rating out of 5, as Google printed it on that page (approximate; see the FAQ).
reviewCountinteger or nullNumber of reviews behind the rating.
ratingDrawSuspectbooleanTrue when the page the row came from had 5 or more products rated exactly 5.0 on 100+ reviews, a sign that Google served a version whose ratings differ from a browser's. See the FAQ.
deliverystring or nullDelivery text, such as Free delivery or Free delivery by Fri.
returnsstring or nullReturns text, such as 30-day returns.
badgestring or nullGoogle's label on the card, such as 30% OFF, SALE or LOW PRICE.
thumbnailstringProduct image served by Google.
productIdstringGoogle's catalog id of the product, or for a product sold by one store only, the id of that listing.
offerIdstring or nullGoogle's id of the offer shown.
productLinkstring or nullGoogle's product page with every store's price. Null for products sold by one store only, which have no such page.
countrystringCountry of the search.
searchUrlstringGoogle Shopping link for the search, to open it yourself.
merchantUrlstring or nullOffers option only: the store's own product page for the offer Google shows (or the cheapest offer).
offersarrayOffers option only: up to 5 store offers, each with merchant, price, currency, oldPrice, title, merchantRating, availability, shipping and the store's link. Empty for products sold by one store only.
scrapedAtstringWhen the row was saved (ISO 8601, UTC).

How much does it cost to scrape Google Shopping?

You pay per product saved; see the Pricing tab for the exact price. With Include every store's offers on, each product saved with offers is charged one extra event, also listed on the Pricing tab. Searches that return nothing and entries that are not searches are never charged. Each Google request brings back about 40 products, so the platform usage stays small: a run of 240 products across two searches used about $0.02 of platform resources. The Actor stops by itself when a run reaches the maximum cost you set for it.

Tips for scraping Google Shopping

  • How many products can I get? Google lists about 250 to 300 products for a broad search; later pages partly repeat earlier ones, and duplicates are removed, so position counts unique products.
  • Pick the country, not just the language. Stores, prices and currency follow the country; the language only changes Google's own labels.
  • Price filters are checked: Google sometimes ignores a price range, so such pages are asked again and products outside the range are dropped.
  • Offers take longer. Each product's page is one more Google request (five are read at a time), so a run with offers on takes a few seconds more per product sold by several stores; only those products have offers.
  • Use several close searches (wireless earbuds,
    noise cancelling earbuds
    ) to cover a category.
  • Each Google page takes from a few seconds to about half a minute; several searches are read at the same time.

FAQ, disclaimers, and support

Is it legal to scrape Google Shopping? The Actor reads only the public results Google shows to anyone without logging in: products, prices and store names. It does not collect personal data. Web data scraping is legal in many cases, but if you are unsure, consult a lawyer.

Why did a search give nothing? Google had no products for it, or Google answered it without Shopping. Such a search is listed in the FAILED_INPUTS record of the run's key-value store with the reason, and nothing is charged for it. Countries where Google offers no Shopping at all, such as Egypt and Kenya, are not accepted.

Can I sort by price? Not yet: Google's sort options are not applied to results read this way. Use minPrice and maxPrice to narrow the range instead.

Are sponsored products included? The products are those of Google Shopping's results grid; Google shows no separate sponsored listings there for these searches, so the Actor has no sponsored flag.

Are the ratings reliable? Treat them as approximate. Ratings are saved exactly as Google printed them on the page the Actor read, but Google serves different versions of the same page, and on some of them most ratings on the page differ from what a browser shows (for example a product rated 4.1 in a browser shows 2.2, or many products show exactly 5.0 on thousands of reviews). Such pages are common for the requests this Actor makes. Rows from a page with 5 or more products rated exactly 5.0 on 100+ reviews have ratingDrawSuspect: true. If you need reliable ratings, check them in a browser or re-run the search and compare.

Why is merchant empty on some rows? Google showed only "& more" on that card. Turn on Include every store's offers to get the stores and their prices.

Found a bug or need another field? Open an issue on the Issues tab and it will be looked at. Need a custom scraper or a different output format? Get in touch through the Issues tab too.