Google Shopping Results Scraper avatar

Google Shopping Results Scraper

Pricing

from $0.23 / 1,000 item extracteds

Go to Apify Store
Google Shopping Results Scraper

Google Shopping Results Scraper

Extract Google Shopping product results by keyword, country, language, price range, and max item count for price and merchant research.

Pricing

from $0.23 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

5 days ago

Last modified

Share

Extract organic and sponsored Google Shopping product cards by keyword, country, language, merchant, condition, sale status, shipping/returns, price, sort order, and page range.

Use this actor to monitor product prices, compare sellers, audit sponsored Product Listing Ads (PLAs), find marketplace positioning, and export structured shopping data without copying result pages by hand.


What does Google Shopping Results Scraper do?

Google Shopping Results Scraper searches Google Shopping for your product keywords and saves the visible product result cards as a clean dataset.

It returns titles, stable product IDs, prices and savings, merchants, availability, offer counts, ratings, shipping/returns flags, organic-versus-sponsored provenance, query relevance, source URLs, and timestamps.

You can run one query or a list of queries in the same job. Multi-query output is allocated round-robin so a large first query cannot starve later queries.

You can target a country and language to compare localized results.

You can cap the number of results to keep test runs small and predictable.


Who is it for?

Ecommerce teams use it to track how products appear in Google Shopping.

Price intelligence teams use it to compare merchant offers and advertised pricing.

Marketplace analysts use it to review ranking and seller coverage for product categories.

Agencies use it to collect shopping snapshots for client reports.

Product managers use it to research comparable products before launch.

SEO and paid shopping specialists use it to understand competitive result pages.


Why use this actor?

Google Shopping pages are built for browsing, not spreadsheet exports.

This actor converts result cards into flat JSON records.

Each item is easy to export to CSV, Excel, Google Sheets, BigQuery, Snowflake, or your own API.

The actor is designed for low-volume monitoring and research workflows.

It includes clear query and timestamp metadata so repeated runs can be compared over time.


What data can you extract?

FieldDescription
querySearch term that produced the item
position / queryPositionGlobal and per-query result positions
page / pagePositionSource page and position on that page
productIdDeterministic ID derived from the canonical product URL or normalized title and merchant
productTitleProduct title
priceText / priceValueDisplayed and numeric prices
originalPriceValueOriginal price when a discount is visible
savingsValue / savingsPercentParsed savings
currencyCurrency inferred from the displayed symbol
merchantMerchant or seller snippet
condition / availability / offerCountVisible product and offer metadata
productUrlProduct link when available from the result markup
imageUrlProduct image URL when available
ratingStar rating
reviewCountNumber of reviews
shipping / freeShipping / freeReturnsDelivery and returns signals
onSaleWhether a sale/deal/discount was visible
sponsored / resultTypeSponsored PLA versus organic provenance
queryRelevanceQuery-token overlap score from 0 to 1
queryStatus / isPartialComplete, partial, timeout, block, HTTP error, or empty classification
sourceUrlExact Google Shopping page URL used for extraction
scrapedAtTime the result was saved

Example output

{
"query": "coffee maker",
"position": 1,
"queryPosition": 1,
"page": 1,
"pagePosition": 1,
"productId": "gshop_9d1772f8ed48da88c18a",
"productTitle": "Keurig K-Classic Coffee Maker K-Cup Pod Single Serve",
"priceText": "$129.99",
"priceValue": 129.99,
"originalPriceValue": 149.99,
"savingsValue": 20,
"savingsPercent": 13,
"currency": "USD",
"merchant": "Keurig.com",
"productUrl": null,
"imageUrl": null,
"rating": 4.3,
"reviewCount": 9700,
"shipping": "Free delivery by Thu",
"freeShipping": true,
"freeReturns": false,
"onSale": true,
"sponsored": false,
"resultType": "organic",
"queryRelevance": 1,
"queryStatus": "complete",
"isPartial": false,
"sourceUrl": "http://www.google.com/search?tbm=shop&udm=28&q=coffee+maker&hl=en&gl=US&num=100",
"scrapedAt": "2026-06-30T10:00:00.000Z"
}

How much does it cost to scrape Google Shopping results?

This actor uses pay-per-event pricing.

There is a small start charge for each run.

The start event is charged once for each run. The item event is charged once for each saved Google Shopping result row; diagnostics and failed requests are not billed as items.

See the live Pricing tab for current rates and account-tier discounts.

Use a low maxItems value when testing a new query list.

Scale up only after you confirm the output matches your workflow.


Input example

{
"queries": ["running shoes", "trail shoes"],
"country": "US",
"language": "en",
"maxItems": 20,
"maxItemsPerQuery": 10,
"merchant": "Running Warehouse",
"condition": "new",
"minPrice": 50,
"maxPrice": 200,
"onSale": true,
"freeShipping": true,
"freeReturns": false,
"sort": "priceAsc",
"startPage": 1,
"maxPages": 2,
"requestTimeoutSecs": 45,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"],
"apifyProxyCountry": "US"
}
}

How to use

  1. Open the actor on Apify.
  2. Add one or more shopping queries.
  3. Choose a country code such as US, GB, CA, AU, or DE.
  4. Choose a language code such as en, es, de, or fr.
  5. Set maxItems to the number of products you want.
  6. Optionally filter by price, merchant, condition, on-sale status, free shipping, or free returns.
  7. Choose relevance, price, or rating sorting and a bounded page range.
  8. Keep proxy enabled for best reliability.
  9. Start the run and inspect the RUN_SUMMARY record for per-query diagnostics.
  10. Download the dataset as JSON, CSV, Excel, XML, or RSS.

Input settings

Shopping queries

Add product names, category phrases, SKUs, model numbers, or comparison keywords.

Examples:

  • coffee maker
  • running shoes
  • wireless mouse
  • iphone 15 case
  • 4k monitor

Maximum results

maxItems controls the total saved results across all queries.

If you enter 3 queries and set maxItems to 60, the run stops after saving 60 total records.

Country

Use a two-letter country code.

Google Shopping availability and ranking vary by region.

Language

Use the Google interface language you want for snippets.

Product and merchant filters

minPrice, maxPrice, merchant, condition, onSale, freeShipping, and freeReturns narrow the result set. Boolean filters require an explicit visible signal, so unknown shipping or returns metadata is not treated as a match.

Sorting and pages

sort supports relevance, priceAsc, priceDesc, and rating. startPage chooses the first page and maxPages sets a hard per-query request cap of up to 10 pages.

maxItems is the hard global output cap. maxItemsPerQuery adds a hard per-query cap. Multiple queries are fetched and saved fairly in rounds.

Run diagnostics

The RUN_SUMMARY key-value-store record reports complete, partial, or failed run status plus per-query complete, partial, timeout, blocked, http_error, or empty classifications. Diagnostic rows are never added to the dataset and are never billed as items. Set requestTimeoutSecs to control each page request timeout.

Proxy configuration

Use proxyConfiguration to keep the default GOOGLE_SERP group or supply an equivalent proxy.

Keep the default proxy enabled.

Google may return interstitial or rate-limit pages without a suitable proxy.


Tips for better results

Use specific product keywords when you need merchant-level price comparisons.

Use category keywords when you need a market overview.

Run small tests before scheduling large recurring jobs.

Keep query batches focused by region and product type.

Use timestamps to compare the same query over days or weeks.

Avoid very broad one-word terms if you need precise products.


Common workflows

Price monitoring

Schedule the same query every day and compare priceValue by title and merchant.

Competitive research

Run category terms and review which brands and stores appear most often.

Assortment discovery

Search model names and collect alternative sellers or similar products.

Agency reporting

Export CSV files for client dashboards and shopping landscape reports.

Product launch research

Compare titles, ratings, review counts, and shipping offers for adjacent products.


Integrations

Send results to Google Sheets for manual review.

Send results to BigQuery or Snowflake for long-term price intelligence.

Connect the actor to Make or Zapier for scheduled alerts.

Use Apify webhooks to notify your app when a run finishes.

Use the Apify API to trigger runs from internal dashboards.

Export CSV files for spreadsheet-based reporting.


API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-shopping-results-scraper').call({
queries: ['coffee maker'],
country: 'US',
language: 'en',
maxItems: 20,
maxItemsPerQuery: 10,
merchant: 'Walmart',
onSale: true,
freeShipping: true,
sort: 'priceAsc',
startPage: 1,
maxPages: 2
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/google-shopping-results-scraper').call(run_input={
'queries': ['coffee maker'],
'country': 'US',
'language': 'en',
'maxItems': 20,
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~google-shopping-results-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"queries":["coffee maker"],"country":"US","language":"en","maxItems":20}'

MCP usage

You can connect this actor to AI tools through Apify MCP.

Use the MCP server URL with the actor tool enabled:

https://mcp.apify.com/?tools=fetch_cat/google-shopping-results-scraper

Add it in Claude Code:

$claude mcp add apify-google-shopping "https://mcp.apify.com/?tools=fetch_cat/google-shopping-results-scraper"

Or configure an MCP client with JSON:

{
"mcpServers": {
"apify-google-shopping": {
"url": "https://mcp.apify.com/?tools=fetch_cat/google-shopping-results-scraper"
}
}
}

Example prompts:

  • "Search Google Shopping for coffee makers in the US and summarize price ranges."
  • "Compare merchants for running shoes and list products with ratings above 4.5."
  • "Find the first 20 Google Shopping results for wireless mouse and export titles and prices."

Scheduling

Use Apify schedules for recurring price snapshots.

Daily runs are useful for fast-changing categories.

Weekly runs are often enough for market landscape reports.

Keep maxItems aligned with the number of products you actually review.


Data quality notes

Google Shopping layouts and snippets can vary by country, language, query, and time.

Some cards may not expose every field.

productUrl and imageUrl can be null when Google renders those values through an interactive viewer instead of a direct visible link.

The actor saves fields only when they are visible or parseable from the result card.


Troubleshooting

Why did my run return no results?

Check that the query has Google Shopping results in the selected country.

Try a lower maxItems value.

Keep proxy enabled.

If Google returns an interstitial, wait and retry with a smaller batch.

Why are some fields null?

Google does not show every field on every card.

For example, some results do not show ratings, reviews, shipping, images, or direct product links.

Why do prices differ by location?

Google Shopping ranking and merchant availability are localized.

Use the same country and language values when comparing repeated runs.


Limits

This actor is intended for public Google Shopping result cards.

It does not log in to Google.

It does not open merchant checkout pages.

It does not scrape private account data.

It does not guarantee identical output for every locale because Google changes layouts frequently.


Ready-to-run examples


FAQ

Can I scrape multiple keywords in one run?

Yes. Add multiple values to queries and set a total maxItems cap.

Can I target another country?

Yes. Set country to a two-letter code such as GB, CA, AU, or DE.

Can I filter by merchant, condition, sales, shipping, and returns?

Yes. Use merchant, condition, onSale, freeShipping, and freeReturns alongside minPrice and maxPrice.

Can I distinguish Shopping ads from organic results?

Yes. sponsored is a boolean and resultType is sponsored or organic, based on the provenance marker attached to the result card.

Can I schedule monitoring?

Yes. Use Apify schedules and export each run's dataset for trend analysis.

Does it scrape product detail pages?

No. Version 0.1 focuses on result cards because they are the safest and fastest unit for search monitoring.

What happens if Google changes the page?

The actor includes defensive parsing and clear failure messages. If the layout changes significantly, rerun with a small query and report the issue.


Support

Open an issue from the Actor page when you find a failed run, wrong output, or another reproducible bug. Include the Apify run ID or run URL, complete input JSON, expected output, actual output, and one reproducible public Google Shopping URL when available.

Small reproducible inputs make issues much faster to diagnose.