Home › Guides › Google Shopping scraper

Google Shopping scraper: the stores Google lists for a product, their price history, and whether today's price is really low

A Google Shopping result tells you a price and a store. The product page behind it tells you much more. The Google Shopping Scraper returns the products Google Shopping shows for any search, in 26 countries (15 of them tested on the Apify platform) — price, store, rating, review count, discount badges — and, for each product, the store offers Google lists (typically 3–5) with store links, price, stock, delivery cost and returns, each store's daily price history for up to about 12 months, and Google's typical price range. One row per product, in one run. No Google account, no API key, no browser.

Who it is for

What you get

GroupFields
Product (search result)title, productId (Google's product ID, to re-check the product later), price, oldPrice, merchant, condition, delivery and returns text, rating, reviewsCount, badge (“25% OFF”, “LOW PRICE”), imageUrl
Store offersoffersCount and offers[] per store: merchant and domain, the seller's link (Google's tracking parameters removed), price, old price, delivery cost, totalPrice, returns, stock, condition, promotionText, merchant rating, Google's label (“Best price”)
Deal signalslowestPrice with its store and link, highestPrice, typicalPriceLow / typicalPriceHigh, priceVsTypical (below / within / above), historyLowestPrice with its date and store, historyHighestPrice, isAtHistoryLow, pctAboveHistoryLow
Price historypriceHistory[] per store: first and last date, days, min, max and last price, and changes[] (the first day, each day the price changed, and the last day) or points[] (every day); priceHistoryStatus and priceHistoryNote (why there is none, in plain words)
Product detailsspecs (Google's specification table), description, variants

Deal signals compare like with like. Offers Google labels used, refurbished or pre-owned are left out of lowestPrice and of the history summary, so a refurbished offer is not compared with the new-product price history. Promotions (“Save $15.00”) go to promotionText and do not leave an offer out.

A trimmed row from a platform run on 2026-09-30 (sony wh-1000xm5, United States). Best Buy's price sat within Google's typical range, but 50.5% above the lowest price in the stores' history:

{
  "title": "Sony WH-1000XM5 Noise Canceling Wireless Headphones",
  "productId": "11726664398501807381",
  "offersCount": 3,
  "lowestPrice": 298,
  "lowestPriceMerchant": "Best Buy",
  "typicalPriceText": "Typically $199 to $300",
  "priceVsTypical": "within",
  "historyLowestPrice": 198,
  "historyLowestPriceDate": "2026-09-02",
  "isAtHistoryLow": false,
  "pctAboveHistoryLow": 50.5
}

How it reaches more than one results page

A Google Shopping results page shows about 40–50 different products, and Google has no second results page on the addresses Apify's Google SERP proxy serves. For more products the scraper also reads the sort orders and price bands Google prints on the first page — the same search sorted by price or rating, or limited to “Under $35”, “$35–$70”… — and removes duplicates. On the platform, wireless earbuds (US) gave 199 different products from 8 Google pages. It does not promise every product for a search.

For each product that has a Google product page, the scraper opens that page — one extra Google request per product — and lists the stores Google shows in “Buying options” (3–5 on 181 of 185 product pages in platform runs, median 3), with each store's daily price history where Google shows it. Pages that Google answers as another country (6 of 351 requests in platform runs) are retried and never delivered with the wrong country's prices.

Price history by country

Google does not show price history everywhere. Measured in September 2026 on product pages where history was requested:

Price historyCountries
SeenUnited States (93 of 94 product pages), Germany (40 of 41), France, Spain, Canada, Australia, the Netherlands, India, Japan, Poland, Italy, Sweden
Not shown by GoogleUnited Kingdom, Turkey, Brazil — priceHistoryStatus is not-available-in-country
Not tested yetIreland, New Zealand, Austria, Switzerland, Belgium, Portugal, Czechia, Norway, Denmark, Finland, Mexico

Outside the US and Germany the samples were small, so they show whether Google offers price history in a country, not an exact rate.

Example inputs

A price check for one product in the United States:

{
  "queries": ["sony wh-1000xm5"],
  "country": "us",
  "maxProductsPerQuery": 10
}

A daily re-check of known products (put it on a schedule):

{
  "productIds": ["11726664398501807381"],
  "country": "us",
  "priceHistory": "none"
}

Set includeDetails to false for a faster category scan without store offers, or sortBy, minPrice and maxPrice to use Google's own sort and a price range.

Measured data quality

From 57 Apify platform runs of builds 0.1.1–0.1.6:

Limits worth knowing

How it is billed

Pay per event: product for every product row delivered, plus product-details when the row carries at least one store offer (the product page was read). With includeDetails: false each row is only a product. Status rows — no results, a product ID that cannot be opened, a wrong-country page — are free. Apify may also charge its Actor start event; the Pricing tab on Apify lists every event and its current price.

Selling on Amazon too? The Amazon Product Scraper guide covers the Buy Box, the offer list and Best Sellers Rank. For store-level signals such as Shopify detection and catalogue depth, see e-commerce & app intelligence.

Frequently asked questions

Why only 3–5 stores per product?

Those are the stores Google itself lists on the product page. Google loads more (“More stores”) with a script; the scraper does not load them.

Can I search Google Shopping by EAN, GTIN or UPC?

Not reliably. In tests, a barcode typed into Google Shopping returned mostly unrelated products. Search by product name, or use the productId of a product you found.

How do I monitor Google Shopping prices every day?

Run a search once, keep the productIds you care about, and schedule a run with productIds. Each row has the current offers and, where Google shows it (not in the UK, Turkey or Brazil), each store's price history, so you do not need to wait months to see a trend.

Why is the price history empty?

Google does not show price history for every product, and not in every country: none in the UK, Turkey and Brazil in tests. The priceHistoryNote field says which case it is.

Is lowestPrice the cheapest offer?

It is the cheapest offer without a used, refurbished or pre-owned label among the stores Google lists; a promotion does not leave an offer out. The full list, with conditions and promotions, is in offers.

Start small: run one product search with 10 products, keep the product IDs you care about, then schedule the product-ID re-check. More e-commerce scrapers: e-commerce data on foXLabs.

Open Google Shopping Scraper on Apify →