Google Shopping Scraper: Prices, Merchants and Ratings avatar

Google Shopping Scraper: Prices, Merchants and Ratings

Pricing

from $2.50 / 1,000 products

Go to Apify Store
Google Shopping Scraper: Prices, Merchants and Ratings

Google Shopping Scraper: Prices, Merchants and Ratings

Extract Google Shopping search results by keyword and country. Returns title, price, old price, currency, merchant, rating, review count, delivery and returns text, condition, badges and thumbnail. Pay per event.

Pricing

from $2.50 / 1,000 products

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Features

Limited permissions

Share

Google Shopping Scraper

Search Google Shopping by keyword and country and get one record per product from the results page: title, current price as a number and as shown, currency, previous price, store name, rating, review count, delivery and returns text, condition, badges and thumbnail. Use it for price monitoring, competitor and assortment research, market comparisons between countries and product feeds for analysis.

What you get

One record per product. Fields a product card does not show are null (an empty list for badges).

FieldTypeDescription
product_idstringGoogle's product id for the card
titlestringProduct title
pricenumber or nullCurrent price as a number
price_textstring or nullCurrent price as shown, for example $98.00 or 55,00 €
currencystring or nullISO currency code (USD, EUR, MXN and so on), read from the price text and the country
old_pricenumber or nullPrevious price, only when the card shows a higher price next to the current one
old_price_textstring or nullPrevious price as shown
merchantstring or nullStore name shown on the card
merchant_countstring or nullHint that more stores sell the product, as Google words it (for example & more); N stores when the card says so
ratingnumber or nullAverage rating out of 5
review_countinteger or nullNumber of reviews. Google shows large counts as 3.9K; these are returned rounded (3900)
deliverystring or nullDelivery text, in the language of the language input
returnsstring or nullReturns text
conditionstring or nullCondition label such as Refurbished or Used
badgesarrayBadges on the card, for example SALE, LOW PRICE or 29% OFF
google_search_urlstringGoogle Shopping search link that reopens the product by its title
thumbnailstring or nullImage URL when the results page provides one, otherwise null
positionintegerRank of the product within the query, counted across pages
pageintegerResults page the product was found on
search_querystringThe query that returned the product
countrystringCountry code the search ran for (the requested country)
served_languagestring or nullLanguage the results page was served in (en, de)
scraped_atstringUTC timestamp, ISO 8601

What the listing does not contain

Google's results page shows the store name but not a link to the store's own offer, so there is no direct merchant URL in the output. google_search_url opens the same product on Google Shopping, where the store links are. Product shelves that Google adds below the main results (for example a row of related machine types) are not part of the output; only the main results grid is read.

thumbnail is empty for the first results on a page, where Google embeds the image inline instead of linking it.

Fill rates

Measured on one live run for the US market (60 products, two queries, 30 each):

FieldFilled
title, price, price_text, currency, merchant60 of 60
rating, review_count59 of 60
returns52 of 60
delivery39 of 60
merchant_count38 of 60
old_price, badges26 of 60
thumbnail9 of 60 (none for the first query, 9 of 30 for the second)
condition0 of 60

Other markets and query types fill differently; condition appears mainly on refurbished and used items.

Input

FieldTypeDefaultDescription
searchQuerieslist of text["espresso machine"]Product keywords. A comma or line separated text also works, and a Google results link with a q= keyword is accepted. The same keyword given twice is searched once.
countrytextUSTwo-letter country code (US, GB, DE, FR, MX and so on). It decides which stores, prices and currency are shown.
languagetextenLanguage of the results page, for example de or pt-BR. It sets the language of delivery and returns texts.
maxResultsinteger10Maximum number of products across all queries. 0 means no limit. The limit is shared equally between queries; a share that is not used goes to the later ones.
maxResultsPerQueryinteger0Maximum number of products for each query. 0 means no separate limit.
proxyConfigurationobjectdefault settingsProxy settings. The default works for most runs.

Numbers may be given as text ("25"). An empty input {} runs a small sample search (espresso machine, US, up to 10 products) and the run status says so. If the input cannot be read, the actor runs that same sample and writes a warning to the log. A product that appears in several queries is delivered once.

Example input

{
"searchQueries": ["espresso machine", "milk frother"],
"country": "US",
"language": "en",
"maxResults": 80
}

Prices for the German market:

{
"searchQueries": ["Kaffeevollautomat"],
"country": "DE",
"language": "de",
"maxResultsPerQuery": 40,
"maxResults": 40
}

Example output

Values below come from a saved results page of the US market.

{
"product_id": "7332261587708140616",
"title": "CASABREWS 20 Bar Semi-Automatic Espresso Machine with Steam Wand cm5418basic",
"price": 98,
"price_text": "$98.00",
"currency": "USD",
"old_price": 139,
"old_price_text": "$139",
"merchant": "Walmart",
"merchant_count": "& more",
"rating": 4.3,
"review_count": 67,
"delivery": "Free next-day delivery",
"returns": "Free 90-day returns",
"condition": null,
"badges": ["29% OFF"],
"google_search_url": "https://www.google.com/search?gl=us&hl=en&q=CASABREWS+20+Bar+Semi-Automatic+Espresso+Machine+with+Steam+Wand+cm5418basic&udm=28",
"thumbnail": null,
"position": 1,
"page": 1,
"search_query": "espresso machine",
"country": "US",
"scraped_at": "2026-10-27T10:00:00Z"
}

Pricing

Pay per event. There are two events: a one-time start fee, charged once after the first product is delivered, and a fee for each delivered product. The prices are shown on the Pricing tab of this Actor. A run that delivers nothing is not charged. If you set a maximum cost per run, the run stops at that limit and the status message says how many products were delivered.

Use with AI agents (MCP)

Add the Actor to an MCP client through the Apify MCP server:

{
"mcpServers": {
"google-shopping-scraper": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=santamaria-automations/google-shopping-scraper",
"--header",
"Authorization: Bearer <YOUR_API_TOKEN>"
]
}
}
}

FAQ

Why is the currency not the one I expected? Prices follow the country input. Set country to the market you want to compare (DE for euro prices, GB for pound prices). If Google answers for a different country than the one requested, the actor asks once more and otherwise ends the run without delivering or charging.

Why is there no link to the store? Google's results page names the store but does not link to it. See "What the listing does not contain".

Why are rating and review_count empty for some products? New or little-reviewed products have none on the card.

What happens with a query Google cannot match? Google Shopping then shows loosely related products instead of an empty page, and the actor returns what the page shows. Check title against your keyword when you run unusual search texts.

Why is thumbnail empty for some products? Google delivers part of the images inside the page itself rather than as a link. The actor returns an image URL only when the page gives one and never returns embedded image data.

How many products per query? A results page holds about 40 products (40 and 38 on the pages tested). The actor follows the page's own "more results" link while a page has one and stops when it does not; a live run with maxResults 70 returned 40 products from page 1 and 30 from page 2, with no repeated products. The depth per query depends on what Google offers.

How do I stop at a budget? Set a maximum cost per run, or use maxResults. The status message reports how many products were delivered.

Are the results the same as in my browser? Google personalises and varies results by country, language and time. Positions and prices can differ between runs and from what you see when signed in.

Limits

  • Only the main results grid is read. Shelves, ads and related-product rows are skipped.
  • No store offer link is available from the listing.
  • Counts such as 3.9K reviews are returned rounded.
  • Only public listing data is returned.