Google Shopping Scraper avatar

Google Shopping Scraper

Pricing

from $1.96 / 1,000 products

Go to Apify Store
Google Shopping Scraper

Google Shopping Scraper

[from $2.625/1K products] Scrape Google Shopping search results: product title, price, old price, discount, currency, seller, rating, ratings count, delivery, image, product URL. Many search terms and 45 countries per run. Add-on: every seller offer with total price and store link. No run fee.

Pricing

from $1.96 / 1,000 products

Rating

0.0

(0)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

6 hours ago

Last modified

Share

What is Google Shopping Scraper?

Google Shopping Scraper is a Google Shopping API for product prices. Type one or more search terms, pick one or more countries, and get one row per product from Google Shopping with title, price, old price and discount %, currency, seller, rating, ratings count, delivery text, badges, image, Google product ids and the Google Shopping product URL. Every search term runs in every country you list, in that country's currency and language, in one run.

One row is one product. The data is read from Google Shopping result pages through a licensed data provider, so there are no proxies, CAPTCHAs or browser sessions to manage on your side and no Google account or API key is needed. The optional πŸͺ Seller offers add-on goes one step further for price comparison: for the top products of each search it lists every store selling the product β€” store name, domain, direct product link, base price, shipping, tax, total price, availability and store rating β€” plus the lowest total price and the store that has it.

  • πŸ’° $0.002625 per product on paid plans (about $2.63 per 1,000; $3.50 per 1,000 on the Apify Free plan) β€” no start fee, no subscription
  • 🌍 45 countries and any number of search terms in one run (terms Γ— countries)
  • ⭐ Seller, rating and ratings count in the same row β€” no second lookup
  • πŸͺ Seller offers add-on: up to 10 stores per product with total price and store link
  • πŸ†“ Error rows are free β€” a search with no products or an unknown country costs nothing
  • πŸ€– Works from the Apify API, MCP server (Claude, ChatGPT, Cursor), n8n, Make and Zapier

What data can Google Shopping Scraper extract?

FieldExampleWhat it means
πŸ” querywireless earbudsSearch term the product was found for
πŸ“ countryUnited StatesCountry of the search (countryCode: US)
position1Position in the Google Shopping results (1 = first)
πŸ›οΈ titleJBL Vibe Buds True Wireless EarbudsProduct title
πŸ’² price54.95Current price in the country's currency
oldPrice50Crossed-out price when Google shows a discount
discountPercent34Computed from old price and price
currencyUSDISO currency code (GBP, EUR, JPY…)
🏬 sellerWalmart - JBL Official StoreStore on the product card
⭐ rating4.2Average product rating, 0–5
ratingsCount2000Number of ratings behind it
🚚 deliveryFree deliveryDelivery text from the card (freeDelivery: true)
deliveryPrice5.99Delivery price, when the card shows one
tags["34% OFF"]Badges on the card: discounts, SALE, LOW PRICE
πŸ–ΌοΈ imageUrlhttps://encrypted-tbn2.gstatic.com/shopping?q=…Product image
productId, gid, dataDocId10513711293184938770Google Shopping product, global and offer ids
πŸ”— googleShoppingUrlhttps://google.com/search?ibp=oshop&…The product's page on Google Shopping
resultSectionsearch resultsOr carousel: Deals on Wireless Earbuds when carousel products are on
languageEnglishInterface language of the search
searchUrlhttps://www.google.com/search?q=wireless%20earbuds&…The Google Shopping search that was read
scrapedAt2026-10-01T14:22:24.400ZWhen the row was produced

With the πŸͺ Seller offers add-on switched on, the top products of each search also carry:

FieldExampleWhat it means
offersCount10Number of store offers (up to 10)
lowestTotalPrice24.95Lowest total price across the offers
lowestPriceSellerTikTok ShopStore with the lowest total price
productUrlhttps://www.jbl.com/VIBE-BUDS.htmlDirect link to the product on the headline store's site
offers[{seller, domain, url, basePrice, shippingPrice, tax, totalPrice, currency, condition, availability, offerNote, sellerRating, sellerRatingsCount}]One object per store
offersNoteSeller offers are fetched for the top 10 products…Why a product has no offers (it is then not charged for the add-on)

Fields Google does not show for a product are null β€” for example oldPrice when there is no discount, or rating for a product without reviews.

πŸ’° How much does it cost to scrape Google Shopping?

Google Shopping Scraper uses pay-per-event pricing. You pay for product rows, and for the add-on only when you switch it on:

EventFree planStarter (Bronze)Scale (Silver)Business (Gold)What you get
product$0.0035$0.002625$0.002625$0.002625One Google Shopping product row
seller-offers (add-on)$0.01$0.009$0.008$0.007Seller offers for one product: up to 10 stores with total price and link

Platinum and Diamond plans pay the Business price.

  • No start fee and no charge per run.
  • Paid plans: $1 = about 380 products. 1,000 products = $2.625. On the Free plan 1,000 products cost $3.50.
  • Apify's free plan includes $5 of monthly credit β€” about 1,400 products a month.
  • Error rows are free: a search that returns no products, an unknown country or language, an empty price range.
  • The add-on is charged only for products that actually have offers. Products outside the top N and products for which Google lists no stores are free.
  • The default run (one search term, United States, 40 products) costs about $0.11 on paid plans ($0.14 on the Free plan) and finished in 17 seconds in our test; an identical repeat within 24 hours came back in 3 seconds.

Example budgets:

JobRowsCost, Starter planCost, Free plan
1 search term Γ— 1 country Γ— 40 products40about $0.11$0.14
10 search terms Γ— 3 countries Γ— 40 products1,200$3.15$4.20
1 search term Γ— 40 products + offers for the top 1040 + 10 offersabout $0.20$0.24

How to scrape Google Shopping with Google Shopping Scraper

  1. Open the Actor and click Try for free (an Apify account is free).
  2. In πŸ” Search terms, type one product search per line β€” exactly what you would type into Google Shopping.
  3. In πŸ“ Countries, add one or more countries by name or two-letter code.
  4. Set πŸ’― Max products per search (40 is one Google Shopping page; up to 120).
  5. Optionally choose a sort order, a price range, or switch on πŸͺ Add seller offers ($).
  6. Click Start. Rows appear in the Products table; download them as CSV, Excel, JSON or HTML, or read them through the API.

⬇️ Input

Search terms in several countries (default)

{
"queries": ["wireless earbuds"],
"countries": ["United States"],
"maxProductsPerQuery": 40
}

Every search term runs in every country: ["wireless earbuds", "iphone 16 case"] Γ— ["US", "GB", "DE"] is six searches in one run. Countries accept a name or a two-letter code; 45 are supported: Argentina, Australia, Austria, Belgium, Brazil, Canada, Chile, Colombia, Czechia, Denmark, Finland, France, Germany, Greece, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Malaysia, Mexico, Netherlands, New Zealand, Norway, Philippines, Poland, Portugal, Romania, Saudi Arabia, Singapore, Slovakia, South Africa, South Korea, Spain, Sweden, Switzerland, Thailand, Turkiye, Ukraine, United Arab Emirates, United Kingdom, United States, Vietnam.

Language is optional. Empty means each country's main language (Germany β†’ German, Japan β†’ Japanese); set "language": "en" to read every country in English.

Sort and price range

{
"queries": ["iphone 16 case"],
"countries": ["GB", "Germany"],
"maxProductsPerQuery": 10,
"sortBy": "price_low_to_high",
"minPrice": 5
}

sortBy takes relevance (Google's default), price_low_to_high, price_high_to_low or review_score. Google Shopping no longer applies the sort order reliably (checked October 2026: "price: low to high" came back unsorted), so the Actor sorts the products itself: it collects the maxProductsPerQuery most relevant products for your term and puts them in strict price order (products without a price go last) or by rating. To find the cheapest offers across a wider range, raise maxProductsPerQuery. minPrice and maxPrice are whole numbers in the country's currency; they are sent to Google Shopping and also re-checked on every row, so nothing outside the range is returned.

πŸͺ Seller offers add-on

{
"queries": ["wireless earbuds"],
"countries": ["United States"],
"includeSellerOffers": true,
"maxProductsWithOffers": 10
}

For the first maxProductsWithOffers products of each search, the Actor opens the product's store list and adds up to 10 offers. Use it for price comparison and to get a direct link to the product on a store's website β€” the main search only gives the Google Shopping link.

"includeCarouselProducts": true adds the products from Google Shopping's themed carousels ("Deals on…", "Budget…", "…for Working Out") after the main results, without duplicates. Each row says which carousel it came from in resultSection. In our test the default search returned 40 results plus 20 carousel products.

⬆️ Output

One row per product. A real row from the default search with the seller offers add-on (offers shortened to two):

{
"type": "product",
"query": "wireless earbuds",
"country": "United States",
"position": 1,
"title": "JBL Vibe Buds True Wireless Earbuds",
"price": 54.95,
"oldPrice": null,
"discountPercent": null,
"currency": "USD",
"seller": "Walmart - JBL Official Store",
"rating": 4.2,
"ratingsCount": 2000,
"delivery": "Free delivery",
"freeDelivery": true,
"deliveryPrice": null,
"tags": null,
"imageUrl": "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcSfc2X4kjLIaHT-30oZ3zzE7…",
"productId": "10513711293184938770",
"gid": "13321592222471100410",
"dataDocId": "679834219260504639",
"googleShoppingUrl": "https://google.com/search?ibp=oshop&q=wireless+earbuds+sale&prds=…",
"resultSection": "search results",
"countryCode": "US",
"language": "English",
"searchUrl": "https://www.google.com/search?q=wireless%20earbuds&hl=en&gl=US&udm=28…",
"offersCount": 10,
"lowestTotalPrice": 24.95,
"lowestPriceSeller": "TikTok Shop",
"productUrl": "https://www.jbl.com/VIBE-BUDS.html",
"offers": [
{ "position": 1, "seller": "Walmart", "domain": "www.walmart.com", "url": "https://www.walmart.com/ip/…", "offerTitle": "Jbl Vibe Buds - True wireless earbuds - White", "basePrice": 29, "shippingPrice": null, "tax": null, "totalPrice": 29, "currency": "USD", "condition": null, "availability": "in_stock", "offerNote": "47% off $55", "sellerRating": null, "sellerRatingsCount": null },
{ "position": 2, "seller": "JBL", "domain": "www.jbl.com", "url": "https://www.jbl.com/JBLVBUDSBLKAM.html", "offerTitle": "JBL Vibe Buds True Wireless Earbuds - Black", "basePrice": 54.95, "shippingPrice": null, "tax": null, "totalPrice": 54.95, "currency": "USD", "condition": null, "availability": "in_stock", "offerNote": null, "sellerRating": 4.523, "sellerRatingsCount": 228 }
],
"offersNote": null,
"scrapedAt": "2026-10-01T14:22:24.400Z"
}

The dataset has four table views: Products (the main table), Seller offers ($) (one line per store, unwound from offers), Price comparison (card price next to the lowest total price) and All fields.

What the offers list contains

Google groups close variants of a product (colours, bundles, the same model from several marketplaces) under one product page, and the store list follows that grouping. Read offerTitle next to totalPrice: in the example above, the $29 Walmart offer is the white colour of a related JBL model. That is what Google Shopping shows, not a parsing error.

Use cases for Google Shopping data

Price monitoring and repricing

Schedule a daily run with your product names and the countries you sell in. Compare your price with price, lowestTotalPrice and lowestPriceSeller to see who undercuts you.

Competitor and assortment research

See which stores dominate a search (seller), which products carry discount badges (tags, discountPercent) and which have the most ratings (ratingsCount). Sorting by review score shows the best-rated products in a category.

Price comparison across countries

Run the same search terms in several countries at once and compare prices in local currency β€” useful for cross-border sellers, importers and travel shoppers.

Market and product research

Pull 120 products per search for a category, then group by seller, price band and rating to size a niche before launching a product.

AI agents and LLM workflows

An agent can answer "where is this cheapest?" or "what are the best-rated standing desks under $400?" with one call: flat rows, numeric prices, and a direct store link with the add-on.

Integrations

Apify API (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('lergassy/google-shopping-scraper').call({
queries: ['wireless earbuds', 'iphone 16 case'],
countries: ['US', 'GB'],
maxProductsPerQuery: 40,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => [r.country, r.title, r.price, r.currency, r.seller]));

Apify API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("lergassy/google-shopping-scraper").call(run_input={
"queries": ["standing desk"],
"countries": ["United States"],
"sortBy": "review_score",
"includeSellerOffers": True,
"maxProductsWithOffers": 5,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["title"], row["price"], row.get("lowestTotalPrice"), row.get("lowestPriceSeller"))

One HTTP call

POST https://api.apify.com/v2/acts/lergassy~google-shopping-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with the input JSON as the body returns the rows directly.

No-code tools

Use the Apify integrations for n8n, Make, Zapier, Google Sheets, Airtable, Slack or a webhook after each run. A scheduled task with your product list becomes a daily price tracker.

MCP server

Connect https://mcp.apify.com to Claude, ChatGPT, Cursor or any MCP client and ask for lergassy/google-shopping-scraper. The agent sees the input fields and gets one flat row per product back.

πŸ€– For AI Agents & LLM Apps

Compact reference for agents calling lergassy/google-shopping-scraper through the Apify MCP server or API.

Purpose: one row per product on Google Shopping for a search term in a country: what is sold, at what price, by which store, how well rated, with a discount or not; optionally every store's offer with total price and link.

Minimal input:

{ "queries": ["product search"], "countries": ["US"] }

Output: type, query, country, position, title, price, oldPrice, discountPercent, currency, seller, rating, ratingsCount, delivery, freeDelivery, deliveryPrice, tags, imageUrl, productId, gid, dataDocId, googleShoppingUrl, resultSection, countryCode, language, searchUrl, scrapedAt. With includeSellerOffers: offersCount, lowestTotalPrice, lowestPriceSeller, productUrl, offers (array of position, seller, domain, url, offerTitle, basePrice, shippingPrice, tax, totalPrice, currency, condition, availability, offerNote, sellerRating, sellerRatingsCount), offersNote. Error rows: type = error, input, error.

Behaviors an agent should know:

  • Searches = search terms Γ— countries; maxProductsPerQuery (default 40, max 120) applies to each.
  • Prices are in the country's currency (currency); there is no conversion.
  • price is the headline offer on the product card; the cheapest store is lowestTotalPrice and needs the add-on.
  • sortBy is applied by the Actor to the collected products (strict order); minPrice / maxPrice are applied by Google and re-checked per row.
  • A nonsense or misspelled English term that Google answers with unrelated popular products returns one free error row instead of charged junk rows.
  • Offer url is the store's own link when Google's redirect can be followed, otherwise an absolute https://www.google.com/goto?url=… link that opens the store.
  • Billing: product per product row; seller-offers per product that received offers. Error rows and no-result searches are free. No start fee.
  • Identical searches repeated within 24 hours return the same snapshot (see FAQ).

Error items / Troubleshooting

Error rows look like { "type": "error", "input": "Narnia", "error": "Unknown or unsupported country \"Narnia\". … Not charged.", "scrapedAt": "…" } and are always free. They appear when:

  • a country is not one of the 45 supported (the message lists them all) β€” the other countries still run;
  • the language is not recognised;
  • a search term has no letters or digits, or is longer than 700 characters;
  • minPrice is higher than maxPrice;
  • Google Shopping returns no products for a search, or the results were not ready within 4 minutes.
  • an English search term matches nothing and Google fills the page with unrelated popular products (for example a typo-only or random-letters term) β€” these are not saved or charged.

If many searches return nothing, the Actor stops early: every product already found stays in the dataset, and each remaining search gets a free error row saying it was skipped. Check the spelling of the search terms and that the product is sold in the chosen country.

❓ FAQ

Google Shopping pages are public: anyone can see these products and prices without logging in, and the Actor only returns what such a visitor sees. It collects no personal data. How you use the data is your responsibility β€” check Google's terms and the laws of your country, and ask a lawyer if you plan to republish the data.

How fresh are the prices?

Each search reads Google Shopping at the time of the run. To keep repeated runs cheap, an identical search (same term, country, language, sort, price range and size) is reused for up to 24 hours: the Actor keeps a small key-value store named dfs-cache-google-shopping-scraper in your Apify account for this. Change any input value, or wait a day, to get a new reading. scrapedAt shows when the row was produced.

Up to 120 per search term per country. Google Shopping shows about 40 products per page; in our test a 120-product request returned 119 products (one duplicate removed). Carousel products, when switched on, come on top.

Does it work without proxies?

Yes. You do not need proxies, cookies or a Google account; nothing runs a browser in your account. The Actor runs on the smallest memory size.

Why is a product's rating empty?

Google shows ratings only for products with reviews. When there is no rating on the card, rating and ratingsCount are null.

Why does a product have no productId?

Some Google Shopping cards (often marketplace listings) carry only an offer id. Those rows still have dataDocId and googleShoppingUrl; the seller offers add-on requests their store list with that id, and if Google returns none the product is not charged for the add-on.

How much does it cost to scrape 1,000 Google Shopping products?

$2.625 on paid plans, $3.50 on the Free plan. Seller offers add $0.009 on Starter ($0.01 on the Free plan) per product that receives them.

Can I use Google Shopping Scraper with the Apify API?

Yes. Every run can be started, scheduled and read through the Apify API or the official JavaScript and Python clients β€” see Integrations above.

Can I use it through an MCP server?

Yes. Add https://mcp.apify.com to your MCP client (Claude Desktop, Claude Code, ChatGPT, Cursor) and the agent can call lergassy/google-shopping-scraper directly with search terms and countries.

Can I integrate it with other apps?

Yes β€” n8n, Make, Zapier, Google Sheets, Airtable, Slack and webhooks are available from the Integrations tab of the Actor.

Do I get one row per product?

Yes. One row per product per search, with the seller offers nested in the same row. The Seller offers ($) table view unwinds them into one line per store.

Your feedback

Found a product field that is wrong, a country that is missing, or a feature you need? Open an issue in the Issues tab β€” we read every one and reply quickly. If the Actor saves you time, a review on the Store page helps other buyers find it.

You might also like

ActorWhat it does
Amazon Search ScraperAmazon search results on 21 marketplaces: ASIN, price, list price, rating, ratings count, bought last month, position
AliExpress Products ScraperAliExpress products for any keyword: sale and original price, discount, rating, exact orders, ships-from, delivery
Shopee ScraperShopee products, prices, discounts, brands, sellers and shops across 11 marketplaces
Lazada ScraperLazada products, prices, discounts, sellers, variants and reviews across six Southeast Asian marketplaces