Google Shopping Scraper - Price Comparison & UPC avatar

Google Shopping Scraper - Price Comparison & UPC

Pricing

from $1.30 / 1,000 product results

Go to Apify Store
Google Shopping Scraper - Price Comparison & UPC

Google Shopping Scraper - Price Comparison & UPC

Compare Google Shopping prices by keyword, barcode (UPC/EAN/GTIN), product ID or URL. Every seller offer with price, shipping, total, condition and stock, plus min/max/typical price. Price monitoring flags price drops and new or removed sellers. 45 countries.

Pricing

from $1.30 / 1,000 product results

Rating

0.0

(0)

Developer

Wrenfield Data

Wrenfield Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Google Shopping Price Comparison & Barcode (UPC/EAN) Lookup

Compare prices across stores on Google Shopping and look up products by barcode (UPC, EAN, GTIN). For every product you get the lowest, highest and typical price, the number of sellers, rating and reviews. You also get every seller offer, with price, shipping, total price, condition, availability, seller rating and a direct link to the store (not a Google redirect). Works in 45 countries. A built-in price-monitoring mode tells you what changed since the last run.

Use it to:

  • Compare prices for a product across Amazon, Walmart, Target, Best Buy, eBay and thousands of other stores.
  • Look up barcodes (UPC-A, EAN-13, EAN-8, GTIN-14) in bulk and get the product name, brand, image and current market prices.
  • Monitor prices and sellers daily. See price drops, price increases, and new or removed sellers.
  • Do MAP / reseller monitoring, competitor price intelligence, repricing, and catalog enrichment from barcodes.

💸 $2 per 1,000 products and $0.50 per 1,000 seller offers (the top Google Shopping scrapers in the Store charge a median $3.25 per 1,000). Try it on Apify's free plan ($5 of monthly credit, no credit card).

Sample output

ProductMin priceMax priceSellersRating
FOLGERS Classic Roast Ground Coff…15.4937.8854.54
Mr. Coffee 12 Cup Programmable Co…39.99274.1234

What data can you get?

Product rows (type: "product")Offer rows (type: "offer")
Title, brand, Google product ID, GTIN / UPC / EANSeller (store) name and domain
Image, description, specifications (with details)Price, shipping, total price, currency
Rating and number of reviewsCondition (new / used / refurbished)
Min / max / typical price, cheapest total price, cheapest sellerAvailability (in stock / out of stock)
Number of sellers, headline price and sellerSeller rating and reviews count
Google Shopping URL, manufacturer URLDirect offer URL at the store
Price-monitoring status (priceMonitor.status: new / price_drop / ...)Change status vs. the previous run

How to use

  1. Enter search queries (e.g. coffee maker), barcodes (UPC/EAN/GTIN), Google product IDs or Google Shopping product URLs. You can mix them in one run.
  2. Pick the country (and optionally the language and a city/ZIP/region), plus sort, price range and condition filters.
  3. Keep Get all seller offers on to get every store's price for each product, and set max offers per product.
  4. Run the Actor and download the results as JSON, CSV or Excel, or read them through the API.

Input example

{
"queries": ["coffee maker"],
"gtins": ["025500304076", "5060033821114"],
"productIds": ["14870010698400265781"],
"country": "US",
"sort": "price_low_to_high",
"minPrice": 20,
"condition": "new",
"maxProducts": 50,
"fetchOffers": true,
"maxOffersPerProduct": 20
}

Output example

Product row (barcode lookup):

{
"type": "product",
"title": "FOLGERS Classic Roast Ground Coffee",
"productId": "14870010698400265781",
"gtin": "025500304076",
"gtin14": "00025500304076",
"brand": "Folgers",
"rating": 4.52,
"reviewsCount": 10152,
"price": 16.48,
"minPrice": 12.96,
"maxPrice": 43.99,
"typicalPrice": 19.99,
"cheapestSeller": "Home Depot",
"sellersCount": 10,
"currency": "USD",
"googleShoppingUrl": "https://www.google.com/search?ibp=oshop&q=oid:...&prds=...",
"match": {"method": "barcode_search", "confidence": "high", "searchRank": 1},
"source": {"type": "barcode", "input": "025500304076"},
"country": "US"
}

Offer row:

{
"type": "offer",
"productId": "14870010698400265781",
"gtin": "025500304076",
"productTitle": "FOLGERS Classic Roast Ground Coffee",
"sellerName": "Target",
"offerTitle": "Folgers Classic Medium Roast Ground Coffee - 25.9oz",
"price": 15.49,
"shippingPrice": 5.99,
"totalPrice": 21.48,
"currency": "USD",
"condition": "new",
"availability": "in_stock",
"sellerRating": 4.46,
"sellerReviewsCount": 2073,
"offerUrl": "https://www.target.com/p/folgers-classic-medium-roast-ground-coffee-25-9oz/-/A-13397813",
"merchantDomain": "target.com"
}

The dataset has ready-made views: Products overview, Seller offers, Price changes and Product details. A SUMMARY record in the key-value store has run statistics (products, offers, matched and unmatched barcodes, changes).

Barcode (UPC / EAN / GTIN) lookup – how matching works

Google Shopping does not have an exact "search by barcode" filter. A barcode query often returns the right product mixed with unrelated sponsored "deals". This Actor does not just take the first result:

  1. It validates the barcode (check digit; UPC-A, EAN-13, EAN-8, GTIN-14 and UPC with or without the leading zero).
  2. It checks what the barcode is on the web and builds a fingerprint of the product name and brand from several independent sources.
  3. It picks the Google Shopping product that matches that fingerprint, and it must contain the brand. If nothing matches, it searches Google Shopping by the product's name.
  4. Each row tells you how it matched: match.method (barcode_search or name_search) and match.confidence (high / medium / low).

Barcodes that cannot be found come back as a not_found row, and you are not charged for them.

Measured accuracy (October 2026, 21 real barcodes across the US, UK and Germany): 18 matched the correct product, 2 were not found, and 1 matched the wrong product (since fixed by the brand check). Some multipacks and flavour variants match to the product family. Check match.confidence if you need exact pack sizes.

Price monitoring (compare with the previous run)

Set Price monitoring store name (e.g. my-prices) and schedule the Actor daily with the same input. Each product row gets a priceMonitor object with:

  • status: new, price_drop, price_increase, sellers_changed or unchanged
  • previousPrice, priceChange, priceChangePct and previousRunAt
  • newSellers and removedSellers

Each offer gets a changeStatus, and removed offers are reported too. Turn on Output only changes to get only what changed, which is ideal for alerts through webhooks, Slack, email or Zapier. Snapshots are kept per country, language and location in a named key-value store on your account.

Chain with Walmart Product Scraper (UPC → price comparison)

Walmart Product Scraper outputs each product's upc and gtin14. Feed them into this Actor to see what every other store charges for the same item:

  1. Run Walmart Product Scraper (search, category or item IDs).
  2. Collect the upc values from its dataset. With the API: GET https://api.apify.com/v2/datasets/<datasetId>/items?fields=upc&clean=true.
  3. Start this Actor with {"gtins": [<those UPCs>], "country": "US", "fetchOffers": true}.

You can automate this with an Apify integration (webhook) on the Walmart run that starts this Actor, or with a few lines in Python:

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
wm = client.actor("wrenfield-data/walmart-product-scraper").call(run_input={"searchKeywords": ["air fryer"], "maxItems": 20})
upcs = [i["upc"] for i in client.dataset(wm["defaultDatasetId"]).iterate_items() if i.get("upc")]
gs = client.actor("wrenfield-data/google-shopping-price-comparison").call(run_input={"gtins": upcs, "country": "US"})
for row in client.dataset(gs["defaultDatasetId"]).iterate_items():
print(row["type"], row.get("title") or row.get("sellerName"), row.get("minPrice") or row.get("totalPrice"))

The other direction also works. Offers sold on walmart.com include walmartItemId, which you can pass to Walmart Product Scraper's productIds to get stock, the Buy Box seller and reviews.

Reliability and performance

The Actor uses a commercial SERP data provider to get Google Shopping results, so there are no CAPTCHAs, blocked IPs or proxies for you to manage. Failed upstream requests are retried automatically. Offer links are resolved from Google redirects to the store's own URL.

Measured on the Apify platform (October 2026), 3 runs (US, UK, DE), each with 8 search products plus barcodes and up to 10 offers per product:

TestResult
Search products24/24 returned with prices and offers
Barcode lookups19/21 found (18 correct)
Products / offers43 products, 379 offers; 100% of offers with a direct store URL
Run time4–5 minutes per run (upstream processing; larger runs are processed in parallel)

Pricing

This Actor uses pay-per-event pricing. You only pay for results. Platform usage (compute) is included.

EventPrice
Product (product-result)$2.00 per 1,000 products
Barcode lookup (barcode-lookup) – a product matched from a UPC/EAN/GTIN, details included$0.012 per matched barcode
Product details (product-details) – product ID/URL lookups, or Product details for search results for search results$0.003 per product
Seller offer (offer-result)$0.50 per 1,000 offers
Actor start (actor-start)$0.001 per run

Example: comparing prices for 100 barcodes with 10 offers each costs about 100 × ($0.002 + $0.012) + 1,000 × $0.0005 = $1.90. Barcodes that are not found, retries and failed requests are free. Set Maximum cost per run in the run options to cap your spend. The Actor stops cleanly at that limit and keeps everything collected so far.

On the Apify Free plan, runs are limited to 10 products and 10 offers per product. Upgrade to any paid plan to remove these limits.

Compare marketplace prices with retailer-level data from Walmart, Home Depot, Lowe's and Shopify stores.

All of these are maintained by the same developer and export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.

FAQ

Can I search Google Shopping by UPC or EAN? Yes. Put the barcodes in Barcodes (UPC / EAN / GTIN). Each barcode is matched to a Google Shopping product and you get its offers. See "how matching works" above.

How accurate is the barcode lookup? In our tests about 86% of barcodes matched the exact product and about 10% were not listed on Google Shopping in that country (those are free). Every row has match.confidence. Use high and medium for automated pipelines.

Why is a barcode "not found"? The product isn't sold by any store on Google Shopping in the chosen country, or the barcode isn't publicly known (common for private-label products). Try the country where the product is sold.

Which countries are supported? 45 countries, including the US, UK, Germany, France, Italy, Spain, the Netherlands, Canada, Australia, India, Japan and Brazil. You can also set a city, ZIP code or region for local prices.

Does it include shipping and tax? shippingPrice and totalPrice are included whenever Google shows them. In the US, prices exclude sales tax, as on Google Shopping.

Can I get all sellers for a product? Yes. Turn on Get all seller offers and set max offers per product (up to 100).

How do I get a Google product ID? It is the number in a google.com/shopping/product/<ID> URL, or the catalogid in a newer Google Shopping URL. You can paste either form, or take productId from a previous run.

Is it legal to scrape Google Shopping? The Actor collects publicly visible product listings and prices. It does not log in or access personal data. You are responsible for how you use the data and for compliance with the laws and terms that apply to you. This Actor is not affiliated with, endorsed by, or sponsored by Google.

Can I use it from Python, Make, Zapier, n8n or an AI agent? Yes. You can call it through the Apify API, the Python or JavaScript client, the Apify MCP server or any Apify integration.

Acceptable use

  • This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Google, DataForSEO or the merchants whose offers appear.
  • Don't use the data to build a competing search engine, or otherwise to compete with or harm Google or the other search engines the data comes from.
  • The Actor may not be used from, or for people or organizations in, Russia, Belarus, Cuba, Iran, Syria, Myanmar, North Korea, Crimea or the Russian-occupied territories of Ukraine.
  • You are responsible for using the results lawfully, including privacy laws such as GDPR for any personal data they contain.