Online shops · Coming soon

Google Shopping Scraper: Prices, Stores and Offers

Add product searches and pick a country. You get Google Shopping results as one row per product. Turn on offers to see the price of each store.

Built and tested. Prices will be shown after release.

Coming soon to the Apify StoreFollow us on Apify

What you get, for example

querywireless earbuds
position1
titleJLab Go Air Pop True Wireless Earbuds

How it will work: 3 steps

  1. Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: wireless earbuds in Product searches. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Add product searches, pick a country, and get Google Shopping results as one row per product: title, price as a number with currency, store, rating, reviews and the Google product link. Turn on offers to get the price of every store that sells the product.

  • product card: position, title, price (number), price text, old price, currency (ISO code), store, "& more stores" flag, rating, number of reviews, delivery and returns notes, condition, Google product IDs and the Google product page link;
  • offers (optional): for each product, the list of stores from the Google product page, with price, currency, availability, store rating, delivery, returns and a link.

Good for

  • Check prices of your products and competitors in one country.
  • See which stores sell a product and for how much.
  • Collect product lists for a category or keyword with ratings and reviews.
  • Watch price changes with a daily or weekly schedule.

Not a good fit

  • One Google Shopping page per search: up to 60 products. Google does not give more pages in this format.
  • No sorting or price filters: Google ignores them for this kind of request.
  • No product images: Google puts small images inside the page code, not as links.
  • Rating and reviews are as shown on the Google product card. For some products Google shows the rating of one store listing, so it can differ from other sites.
  • The local-currency check covers 61 countries. In other countries results are saved as Google shows them.
  • Store links in offers are Google redirect links (google.com/goto?...), not direct store URLs.
  • In the EU (for example France), Google often does not open the product page. Products are still saved, but their offers are null and the row status is partial (see Troubleshooting).

Who uses it

Ecommerce managers

Check your prices against competitors in one country.

Brand teams

See which stores sell your product and for how much.

Market researchers

Collect product lists for a category with ratings and reviews.

Price

Prices will be shown after release.

Questions

Do I need a Google account?

No. No Google login or API key is needed.

How many products per search?

Up to 60, the size of one Google Shopping page.

Can I sort or filter by price?

No. Google ignores these for this kind of request.

Are store links direct?

No. Store links in offers are Google redirect links.

Which countries work?

You can choose any country from the list, but Google Shopping does not work in every country. Tests used the US, UK, Germany, Canada, France and Australia. In 61 countries (for example the US, UK, Canada, Australia, the euro area, Japan, India and Brazil) the Actor checks that prices are in the local currency; if Google answers for another country, it tries again from a new IP address. In other countries it saves the results as Google shows them and writes COUNTRY_NOT_CHECKED in the RUN_SUMMARY warnings.

Why is price a number?

So you can sort and compare. The price as shown is in priceText, and the currency code is in currency.

What does null mean?

Google did not show that value, for example no rating or no old price. It is not zero and not an error.

Details

Step by step on Apify
  1. Open the Input tab.
  2. In Product searches (queries), keep the prefilled wireless earbuds or add your own phrases, one per line.
  3. Keep Country us (default) or choose another country.
  4. Keep Products per search (maxItems) at 10 (prefill), or set up to 60.
  5. Click Start.
  6. Open the Output tab and check title, price, currency, merchant and rating.
Use cases
TaskInputYou getKey fieldsNext step
Price monitoringqueries (product names or models), countryCodeproduct rowprice, currency, merchant, oldPriceSchedule + Google Sheets or API
Store comparisonqueries, includeOffers: trueproduct row with offersoffers[].merchant, offers[].price, offers[].availabilityExport JSON / Excel
Category researchqueries (category words), maxItems: 60product rowtitle, rating, reviewsCount, positionExport CSV
Country checksame queries, different countryCodeproduct rowprice, currency, countryCodeCompare in a spreadsheet
Tips for better results
  • Turn on offers only when you need store prices. It adds about 5 seconds per product.
  • Run the same searches on a schedule to track price changes.
  • Raise the timeout for big runs. For 200 searches, set about 1,200 seconds.
Limits and good to know
  • A phrase with no products costs one search page: Google was asked and answered
  • error rows are free. Products with partial status (offers not loaded) are charged as a product, not as offers
  • If you set a maximum charge for the run, the Actor stops before it, keeps the rows and ends with status CAPPED
  • Up to 200 phrases and 60 products per phrase in one run. A test with 200 phrases and 60 products each (about 10,000 rows) took about 14 minutes
  • The default timeout is 300 seconds: enough for about 30 phrases without offers (in tests, 10 US phrases took about 60 seconds and 50 German phrases about 160 seconds), or about 50 products with offers. For bigger runs set a longer timeout (for 200 phrases, 1,200 seconds). At the time limit the run stops with status CAPPED and keeps all rows
  • With offers on, each product needs one more Google page, about 5 seconds per product

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "query": "wireless earbuds",
  "position": 1,
  "title": "JLab Go Air Pop True Wireless Earbuds",
  "price": 17.99,
  "priceText": "$17.99",
  "oldPrice": 27,
  "currency": "USD",
  "condition": null,
  "merchant": "Best Buy",
  "moreMerchants": true,
  "rating": 4.3,
  "reviewsCount": 33000,
  "delivery": "Free delivery",
  "returns": null,
  "productUrl": "https://www.google.com/search?q=JLab+Go+Air+Pop+True+Wireless+Earbuds&udm=28&ibp=oshop&prds=catalogid%3A8372463217625314514%2Cgpcid%3A9146411353573113826%2CheadlineOfferDocid%3A452194635528668653%2CproductDocid%3A10114522055954158630&gl=us&hl=en&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw",
  "offers": null,
  "offersCount": null,
  "ids": {
    "catalogId": "8372463217625314514",
    "gpcId": "9146411353573113826",
    "offerDocId": "452194635528668653",
    "productDocId": "10114522055954158630"
  },
  "countryCode": "us",
  "languageCode": "en",
  "searchUrl": "https://www.google.com/search?q=wireless+earbuds&tbm=shop&hl=en&gl=us&uule=w+CAIQICINVW5pdGVkIFN0YXRlcw",
  "status": "complete",
  "statusReason": null,
  "errorCode": null,
  "fetchedAt": "2026-10-15T05:53:19.024Z"
}
Data fields (25)
FieldTypeMeaning
querystringYour product search.
positionintegerPlace of the product on the Google Shopping page (1 = first); null on not_found/error rows.
titlestringProduct name as Google shows it.
pricenumberPrice as a number in the listed currency, e.g. 299. Null when Google shows no price.
priceTextstringPrice exactly as shown, e.g. "$299.00" or "24,90 €".
oldPricenumberEarlier price when Google shows a discount ("was $90"); null otherwise.
currencystringISO currency code from the price symbol and country, e.g. USD, EUR; null when it is not clear.
conditionstringCondition label when Google shows one ("Used", "Refurbished"); null for new items.
merchantstringStore that Google shows on the card.
moreMerchantsbooleanTrue when the card says "& more": other stores also sell this product.
ratingnumberProduct rating 0–5; null when Google shows none.
reviewsCountintegerNumber of product reviews (as rounded as Google shows it, e.g. "3K" = 3000); null when none.
deliverystringDelivery text, e.g. "Free delivery by Mon".
returnsstringReturns text, e.g. "30-day returns".
productUrlstringGoogle Shopping product page with the stores that sell it.
offersarrayStores selling the product (only with "Include offers"): merchant, price, availability, delivery, returns, store rating, Google link to the store page. Null when not requested or not loaded; [] when Google lists no offers.
offersCountintegerNumber of offers loaded; null when offers were not loaded.
idsobjectGoogle product ids: catalogId, gpcId, offerDocId, productDocId (any may be null).
countryCodestringGoogle country used (gl).
languageCodestringGoogle language used (hl).
searchUrlstringGoogle Shopping page that was scraped.
statusstringcomplete = a product; partial = a product whose store offers could not be loaded (no offers charge); not_found = Google Shopping returned no products for the search; error = the search could not be scraped. not_found and error rows add no product charge; a not_found search still counts as one loaded search page.
statusReasonstringPlain-English reason for partial/not_found/error rows, or a note on a product.
errorCodestringMachine code, e.g. SOURCE_BLOCKED, DEADLINE_REACHED.
fetchedAtstringWhen the page was scraped (ISO 8601).
Input settings (5)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Product searches requiredqueriesarray["wireless earbuds"]
CountrycountryCodestring"us"
LanguagelanguageCodestring"en"
Products per searchmaxItemsinteger10
Include offers from other storesincludeOffersbooleanfalse

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure