Google Shopping Scraper — Products, Prices & Sellers avatar

Google Shopping Scraper — Products, Prices & Sellers

Pricing

from $1.00 / 1,000 product scrapeds

Go to Apify Store
Google Shopping Scraper — Products, Prices & Sellers

Google Shopping Scraper — Products, Prices & Sellers

Scrape Google Shopping product listings, prices, merchants, ratings and every seller offer for a product. No API key, no headless browser.

Pricing

from $1.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Mahmudul Hasan

Mahmudul Hasan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull live product listings and seller prices from Google Shopping. No API key, no Google Cloud project, no headless browser — the Actor talks to Google's shopping vertical directly.

What you get

ActionWhat it returns
Product searchEvery product tile for a query: title, price, original price, merchant, rating, review count, product and catalog IDs, link and image
Seller offersEvery seller carrying a product, with each one's price — the "compare prices" panel

Results land in the run's dataset and export to JSON, CSV, Excel, XML or via the API.

Pricing

You pay forPrice
Each product scraped$1.00 per 1,000
Each seller offer scraped$0.80 per 1,000
Each page requested from Google$0.004
Actor start$0.05 per 1,000 runs

Google returns 10 products per page, so a 40-product search is 4 pages: 4 × $0.004 + 40 × $0.001 = $0.056, or about $1.40 per 1,000 products — cheaper than comparable Google Shopping scrapers on the Store.

About the page fee. Google Shopping is the most aggressively bot-protected Google surface, and every page fetch consumes a paid proxy request whether or not Google returns results. The $0.004 page fee covers that. A query that comes back empty still costs the page fee — you are not charged the per-product fee, only the request.

Set a maximum cost per run in the run options and the Actor stops cleanly when it gets there. Platform compute and proxy are included — you are never billed separately for usage.

Input

Product search:

{
"action": "search",
"queries": ["mechanical keyboard", "iphone 16 case"],
"maxProductsPerQuery": 40,
"minPrice": "50",
"maxPrice": "150",
"sort": "price_asc",
"country": "us",
"language": "en"
}

Seller offers — the IDs come from the catalog_id and product_id fields of a search run:

{
"action": "offers",
"products": [
{ "catalogId": "1234567890123456789" },
{ "productId": "9876543210987654321" }
]
}
FieldDescription
actionsearch or offers
queriesSearch terms, one per line (search only)
productsProducts to look up, each with catalogId or productId (offers only)
maxProductsPerQueryHow many results to request per query (10–100, default 40)
minPrice / maxPriceOptional price filters
sortrelevance, price_asc, price_desc or rating
country / languageGoogle gl and hl codes — sets the storefront and currency
proxyConfigurationGoogle SERP proxy is on by default. Leave it on.
requestDelaySecondsPause between requests (default 2)

Output

One dataset item per product:

{
"type": "product",
"query": "mechanical keyboard",
"title": "Keychron K2 Wireless Mechanical Keyboard",
"price": "$89.00",
"price_value": 89.0,
"currency": "$",
"original_price": "$99.00",
"original_price_value": 99.0,
"condition": "New",
"merchant": "Keychron",
"rating": 4.6,
"reviews": 2841,
"product_id": "1234567890123456789",
"catalog_id": "9876543210987654321",
"link": "https://www.google.com/shopping/product/...",
"image": "https://api.apify.com/v2/key-value-stores/.../records/image-6e500831fbffe8fb.webp"
}

Prices come both as Google displayed them (price) and parsed into a number you can sort and compare (price_value + currency).

image is always a real, linkable URL. Google serves most Shopping thumbnails as inline data rather than as URLs, so those are saved to the run's key-value store and the item points at them — no multi-kilobyte blobs in your CSV. Identical thumbnails are stored once. Set storeImages to false if you don't need images.

Offer items carry product_title, merchant, price and link. Queries that return nothing are written as {"type": "empty", ...} and failures as {"type": "error", ...}, so a bad query never kills the run.

Common uses

  • Track competitor pricing on your SKUs across every merchant carrying them
  • Find the cheapest seller for a product before buying or reselling
  • Build a price-comparison dataset for a category or brand
  • Monitor MAP compliance across your retail partners
  • Feed live retail prices to an AI shopping assistant (this Actor supports agentic payments via x402 and Skyfire)

Integrations

Run on a schedule, or send the output to Google Sheets, Airtable, Slack, Make, Zapier or your own webhook. Everything is reachable through the Apify API and the JavaScript and Python clients.

Notes and limits

  • This is an unofficial scraper. Google changes Shopping markup frequently and per region; the parser uses several fallback strategies, but when a page parses to zero products the Actor logs it and moves on rather than failing the run.
  • Keep the proxy on. Without it you will be CAPTCHA-blocked within a handful of requests.
  • Seller offers work best with catalogId. A bare productId sometimes lands on a not-available page, in which case the item comes back empty with a note explaining why.
  • Prices are what Google displays for your country and language; they can differ from the merchant's own site and move between the scrape and a purchase.
  • Scrape only public data and use the output in line with Google's terms and applicable law.

Support

Found a bug or need a field that is not extracted yet? Open an issue on the Actor's Issues tab.