Google Shopping Scraper - Prices & Offers
Pricing
from $1.10 / 1,000 shopping offers
Google Shopping Scraper - Prices & Offers
Search public Google Shopping by product keyword or EAN, GTIN, or Google Shopping SKU. Get product titles, current prices, currencies, merchants, rankings, and price benchmarks in a structured dataset. Filter by market, language, price, condition, rating, delivery, sale status, or merchant.
Pricing
from $1.10 / 1,000 shopping offers
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🛍️ Compare product offers across Google Shopping
Retail teams, ecommerce sellers, and product researchers can search public Google Shopping with product keywords or EAN, GTIN, and Google Shopping SKU values. The Actor saves each first eligible offer match once, with its product title, current price, currency, merchant, query rank, and price benchmark. Use these rows to compare offers for a chosen market and language.
- Compare current prices with Google Shopping Price Comparison.
- Compare seller prices for one product with Shopping Price Comparison.
- Collect product offer rows with Ecommerce Price Scraper.
- Check a product's current offers with Product Price Scraper.
- Review merchant and price data with Google Shopping Offers Scraper.
📦 Google Shopping offer rows
Each dataset row is one offer returned for a submitted keyword or identifier. It includes the product title, current displayed price, currency, merchant, query rank, a price benchmark, and the lowest-priced returned offer. Google may also provide a brand, image, rating, shipping details, return terms, condition, or sale details.
If the same offer appears through another submitted value, the saved row keeps the value that found it first. Rows reflect public Google Shopping data available at collection time. The Actor does not promise real-time merchant pricing, every seller or offer, or a direct merchant listing URL when Google does not expose one.
🚀 Find offers with keywords or identifiers
Run steps
- Choose Product keywords or Product identifiers.
- Add one or more product keywords, or add EAN, GTIN, or Google Shopping SKU values, in the matching section.
- Choose the Google Shopping market and result language.
- Add optional price, condition, sale, merchant, rating, review, delivery, or sort settings.
- Set Max offers per query or leave it empty to return all available offers until the source is exhausted.
- Start the Actor and open the default dataset.
The Actor uses public Google Shopping data and does not need a customer-provided Google credential or login. Each run uses one list. Values in the other choice section are ignored. When a result matches more than one submitted keyword or identifier, only its first eligible match is saved.
⚙️ Input
Choose one discovery method. Add values only to its matching list. Choose a market and language for the Google Shopping results.
Input fields
| Field | Type | What it does |
|---|---|---|
discoveryMethod | string | Chooses keywords or identifiers. |
productKeywords | string[] | Adds one or more product search phrases, one per item. Used when discoveryMethod is keywords. |
productIdentifiers | string[] | Adds one or more EAN, GTIN, or Google Shopping SKU values. Used when discoveryMethod is identifiers. |
market | string | Sets the two-letter Google Shopping market code, such as US, GB, or DE. |
language | string | Sets the result language code, such as en, de, or fr. A country code can be added when needed, such as pt-BR. |
priceRange | object | Sets optional lower and upper prices in the selected market currency. |
priceRange.min | number | Sets the lower price bound. Use zero or a positive number. |
priceRange.max | number | Sets the upper price bound. Use zero or a positive number. |
conditions | string[] | Keeps offers with the selected conditions: new, used, or refurbished. |
saleOnly | boolean | When true, keeps only offers that Google marks as discounted. |
merchants | string[] | Keeps offers from the listed merchant or marketplace names. |
minimumRating | number | Keeps products rated from this value up to 5 stars. |
minimumReviewCount | integer | Keeps products with at least this many reviews. Use zero or a positive number. |
freeDeliveryOnly | boolean | When true, keeps only offers that show free delivery. |
sortOrder | string | Orders offers by relevance, price, rating, reviews, or discount. |
maxOffersPerQuery | integer | Stops after this many offers for each keyword or identifier. Leave it empty to return all available offers until the source is exhausted. |
This is the public input from the successful current-beta default-input run:
{"discoveryMethod": "keywords","productKeywords": ["wireless headphones"],"market": "US","language": "en","saleOnly": false,"freeDeliveryOnly": false,"sortOrder": "relevance","maxOffersPerQuery": 10}
🧾 Output
Optional fields are absent when Google Shopping does not provide the related detail.
Run output
| Field | Type | What it does |
|---|---|---|
dataset | string | Opens the Google Shopping offer rows in the default dataset. |
Dataset rows
| Field | Type | What it does |
|---|---|---|
query | string | The keyword or identifier that first produced the offer. |
queryType | string | Shows whether query is a keyword or an identifier. |
queryRank | integer | The offer rank among offers returned for query. |
product | object | Holds the product details shown by Google Shopping. |
product.title | string | The product title shown by Google Shopping. |
product.brand | string | The product brand when Google Shopping provides it. |
product.googleProductId | string | Google's product identifier when available. |
product.imageUrl | string | The product image URL when Google Shopping provides one. |
merchant | object | Holds the merchant details for this offer. |
merchant.name | string | The merchant or marketplace seller name shown by Google Shopping. |
price | object | Holds the current displayed offer price and currency. |
price.amount | number | The current displayed price amount. |
price.currency | string | The currency code for the current price. |
price.previousAmount | number | The previous displayed price when Google Shopping shows a promotion. |
price.discountText | string | The sale or discount text shown by Google Shopping when available. |
rating | object | Holds product rating details when Google Shopping provides them. |
rating.stars | number | The product star rating shown by Google Shopping. |
rating.reviewCount | integer | The product review count shown by Google Shopping. |
shipping | object | Holds delivery or shipping details when Google Shopping provides them. |
shipping.text | string | The delivery or shipping terms shown by Google Shopping. |
shipping.cost | object | Holds the numeric shipping cost when Google Shopping provides it. |
shipping.cost.amount | number | The shipping cost amount. Zero means free shipping when the source provides that value. |
shipping.cost.currency | string | The currency code for the shipping cost. |
returns | object | Holds return terms when Google Shopping provides them. |
returns.text | string | The return terms shown by Google Shopping. |
condition | string | The offer condition when Google Shopping exposes it: new, used, or refurbished. |
priceBenchmark | object | Holds the price benchmark for offers returned for the same query. |
priceBenchmark.amount | number | The benchmark price amount for the query. |
priceBenchmark.currency | string | The currency code for the query price benchmark. |
lowestPriceOffer | object | Holds the returned offer with the lowest current price for the same query. |
lowestPriceOffer.productTitle | string | The product title of the lowest-priced returned offer. |
lowestPriceOffer.googleProductId | string | Google's product identifier for the lowest-priced offer when available. |
lowestPriceOffer.merchantName | string | The merchant or marketplace seller for the lowest-priced offer. |
lowestPriceOffer.price | object | Holds the current price of the lowest-priced returned offer. |
lowestPriceOffer.price.amount | number | The current price amount of the lowest-priced offer. |
lowestPriceOffer.price.currency | string | The currency code for the lowest-priced offer. |
Example offer row
This genuine row is from the successful current-beta default-input run. It is shortened because the product image URL is large. The "..." value marks the omitted image data.
{"query": "wireless headphones","queryType": "keyword","queryRank": 1,"product": {"title": "Anker Soundcore Sport X20 True Wireless Headphones","googleProductId": "10833874325720519961","imageUrl": "..."},"merchant": {"name": "Best Buy"},"price": {"amount": 79.99,"currency": "USD"},"priceBenchmark": {"amount": 79.99,"currency": "USD"},"lowestPriceOffer": {"productTitle": "JLab Rewind 2 Wireless Retro Headphones hbrewind2rblk4","merchantName": "JLab","price": {"amount": 26.99,"currency": "USD"},"googleProductId": "4839705362323684555"},"rating": {"stars": 4.5,"reviewCount": 2100},"shipping": {"text": "Free delivery","cost": {"amount": 0,"currency": "USD"}}}
💳 Pricing
This Actor uses pay-per-event pricing. The Shopping offer event charges for each offer saved to the default dataset. The exact price is shown on the Pricing tab and can vary by plan tier.
🔌 Integrations
Use the dataset link in the run output or the Apify API to read saved rows. You can schedule runs in Apify when you need repeated collections. This Actor does not keep price history or send alerts.
❓ FAQ
What happens when one offer matches more than one submitted value?
The Actor saves the first eligible match and ignores later matches for that offer. The row keeps the keyword or identifier that first caused it to be saved.
Can I use EAN, GTIN, or Google Shopping SKU values?
Yes. Choose Product identifiers and add one or more values. The output sets queryType to identifier for those rows.
Why is a rating, shipping detail, or return term missing?
Google Shopping does not show every detail for every offer. Optional fields are left out when the source does not provide them.
Can I filter and sort the offers?
Yes. You can set a price range, condition, sale-only, merchant, minimum rating, minimum review count, or free-delivery filter. You can also order offers by relevance, price, rating, reviews, or discount.
What if I leave Max offers per query empty?
The Actor returns all available offers for each query until the source is exhausted. There is no fixed maximum in the input schema.
Are prices real-time and exhaustive?
No. Rows show public Google Shopping data available at collection time. Prices can lag a merchant, and Google may not show every seller or offer.
Does the Actor need a Google login or private data?
No. It uses public Google Shopping data and does not collect private, account-only, or personal data from Google Shopping or merchants.
Does it keep price history or send alerts?
No. The Actor returns current rows for a run. It does not provide built-in historical price monitoring, alerting, or a time-series service.
📝 Changelog
v0.0 (30-09-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Google Shopping Ads Scraper: collect paid Shopping ads for keyword and merchant research.
- Amazon Price Tracker: compare public Amazon prices with Google Shopping offers.
- MercadoLibre Search Scraper: compare marketplace prices, sellers, shipping, ratings, images, and rank by query.
- Trendyol Scraper: Products & Reviews: research another marketplace's products, sellers, prices, and reviews.
- Allegro Scraper for Prices, Sellers, and Specs: collect public Allegro offers, seller data, delivery, and prices.
Made with ❤️ by Maxime Dupré