Google Shopping Scraper
Pricing
from $2.50 / 1,000 results
Google Shopping Scraper
[π° $2.5 / 1K] Extract product listings from Google Shopping β titles, prices, merchants, ratings, images, and delivery info. Optionally enrich each product with specs, description, full seller-offer list, and top reviews. Batch search queries and URLs across 45+ countries and 19+ languages.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Extract product listings from Google Shopping at scale. Get titles, prices, merchants, ratings, review counts, delivery info, discounts, and product IDs for any keyword or Google Shopping URL β with country, language, and currency targeting across 45+ markets.
Why This Scraper?
- Keyword or URL input β feed search terms like
"wireless earbuds"or paste Google Shopping result URLs directly - 45 countries, 19 languages, 21 currencies β run the same query in the US, Germany, Japan, or Brazil and get locally priced results
- Automatic pagination β walks result pages until Google runs out of products or you hit your cap
- Rich product fields β title, merchant, numeric price, price string, currency, original price, discount percent, rating, review count, delivery info, and more
- Legacy URL support β old-style
tbm=shopURLs are accepted and redirect automatically - No configuration overhead β sensible defaults out of the box, no proxy setup to fiddle with
- Honest output β both the raw price string and a parsed numeric price are returned, so you can always see what Google actually displayed
- Competitive pricing β comparable to or below other Google Shopping actors on Apify
Use Cases
Price Monitoring & Competitive Intelligence
- Track competitor pricing across merchants for a given product
- Watch for discounts and promotional activity on your SKUs
- Benchmark your own store against the Shopping tab for key search terms
Market Research
- Map product availability and pricing across countries
- Identify which merchants dominate results for a category
- Measure discount depth and frequency by product segment
E-commerce & Catalog Enrichment
- Populate product databases with merchant and pricing data
- Enrich existing SKUs with rating and review-count signals
- Discover new merchants carrying products in your category
SEO & Digital Marketing
- See which products rank on Shopping for target keywords
- Analyze Shopping SERP composition by country and language
- Track visibility of brands or merchants for commercial queries
Lead Generation
- Build merchant lists by category and country
- Surface niche sellers that rank on Google Shopping in your vertical
Getting Started
Simple Keyword Search
The fastest way to get started β just provide a search term:
{"searchQueries": ["wireless earbuds"],"maxResults": 50}
Multi-Country with Currency
Run the same query in another market with local language and currency:
{"searchQueries": ["kabellose kopfhΓΆrer"],"country": "de","language": "de","currency": "EUR","maxResults": 100}
Filtered Search with Sort
Narrow to a price range and sort by rating:
{"searchQueries": ["coffee maker"],"country": "us","minPrice": 50,"maxPrice": 200,"sortBy": "rating","condition": "new","maxResults": 60}
Direct URL Input
Paste any Google Shopping result URL β filtered, sorted, or plain:
{"startUrls": ["https://www.google.com/search?tbm=shop&q=running+shoes","https://www.google.com/search?udm=28&q=bluetooth+speaker&gl=gb"],"maxResults": 40}
Multiple Queries, Max Coverage
Fan out across several queries and pull every available product (up to Google's own ~200-product ceiling per query):
{"searchQueries": ["nike running shoes","adidas running shoes","hoka running shoes"],"country": "us","maxResults": 0}
"maxResults": 0 means "fetch every available product per query, up to Google's own pagination ceiling (~200 per query)" β see Good to Know below.
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["wireless earbuds"] | Keywords to search on Google Shopping. Each query runs independently. |
startUrls | string[] | [] | Google Shopping result URLs to process directly. Legacy tbm=shop links are accepted. |
Results
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 50 | Maximum products per query or URL. The actor may return a few extra rows from the final page β it stops fetching new pages once this number is reached, but returns the whole last page rather than trimming it. 0 means "fetch up to Google's own ~200-product ceiling per query". Max accepted value: 300. |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
country | string | "us" | Country for localized results. 45 markets supported (US, UK, DE, FR, JP, BR, and many more). |
language | string | "en" | Interface language for result text. 19 languages supported. |
currency | string | "USD" | Currency for prices. 21 currencies supported. Google honors this where inventory exists. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy | string | "relevance" | Sort order: relevance, priceLowToHigh, priceHighToLow, or rating. Best-effort β Google honors it loosely. |
minPrice | integer | (unset) | Only include products priced at or above this amount, in the selected currency. |
maxPrice | integer | (unset) | Only include products priced at or below this amount, in the selected currency. |
condition | string | "any" | any or new. Google Shopping's search page only offers "New" as a top-level filter. |
Output
Each run emits a dataset of product rows β one per listing.
Product row example
{"recordType": "product","query": "wireless earbuds","sourceUrl": null,"rank": 1,"page": 1,"productId": "tsuid_7bXoae6tGrPv7_UPgtGTEQ_57","title": "Anker Soundcore Liberty 4 NC Wireless Earbuds","url": null,"merchant": "soundcore US","price": 69.99,"priceRaw": "$69.99","currency": "USD","originalPrice": 100.0,"discountPercent": 30,"delivery": "Free delivery","imageUrl": null,"rating": 4.7,"ratingCount": 8400,"condition": null}
Product fields
| Field | Type | Description |
|---|---|---|
recordType | string | Always "product" for listing rows |
query | string | The search query that produced this row (when keyword input) |
sourceUrl | string | The start URL that produced this row (when URL input) |
rank | number | Position in the result list (1 = first) |
page | number | Pagination page number the row was found on |
productId | string | Google's per-session product identifier. Not stable across runs. |
title | string | Product title |
url | string | Link to the product (when available) |
merchant | string | Merchant / seller name as shown on the card |
price | number | Numeric price parsed from the card |
priceRaw | string | Original price string exactly as Google displayed it |
currency | string | ISO 4217 currency code parsed from the price |
originalPrice | number | Strike-through "was" price, when shown |
discountPercent | number | Discount percentage, when shown |
delivery | string | Delivery / shipping text (e.g. "Free delivery") |
imageUrl | string | Product image URL, when available (typically empty on result-grid rows) |
rating | number | Star rating (1.0β5.0) |
ratingCount | number | Total number of ratings |
condition | string | Product condition, when shown |
Tips for Best Results
- Be specific with queries. "bluetooth speaker under $50 waterproof" returns cleaner results than "speaker".
- Match country, language, and currency. Running a German query with
country: "de",language: "de", andcurrency: "EUR"gives the most accurate local market snapshot. - Use
priceRawalongsideprice.priceRawpreserves the exact string Google showed β useful when you want to audit currency symbols or spot multi-seller "from" pricing. - Batch related queries. Running
["nike running shoes", "adidas running shoes", "hoka running shoes"]in a single run is cheaper and faster than three separate runs. - Set
maxResultsrealistically. Google Shopping caps pagination at roughly 200 products per query. The actor accepts up to300per query, but you won't get more than Google itself serves β0is a good value when you want "everything Google has for this query". - Leave filters at defaults if you're unsure. Google's own filter UI is loose β applying filters narrows results but doesn't strictly guarantee every row matches.
Good to Know
A few honest caveats so you know what to expect:
- Google Shopping caps results at ~200β300 per query. Requesting
maxResults: 0or a large number won't go beyond Google's own ceiling, which tends to be a few hundred rows per query. - Result counts may slightly exceed
maxResults. Google's first result page alone typically contains 30β55 products. The actor stops fetching new pages once the cap is reached, but returns the full last page instead of trimming mid-page β so a run withmaxResults: 20often produces ~30+ rows. - Product IDs are session-scoped, not stable. The
productIdfield (tsuid_...) is a per-run identifier. Running the same query tomorrow will produce different IDs for the same products. Usetitle+merchantfor cross-run matching. - Sort and price filters are best-effort. Google's own Shopping UI applies these as soft hints, not strict constraints β most results will honor the filter, but outliers appear. If you need hard filtering, apply it on the output dataset.
- Product detail enrichment coming soon. Deep per-product data (full seller-offer list, specs, and editorial review quotes) is in development and temporarily disabled while we update to Google Shopping's latest page layout. The core product listing (title, merchant, price, rating, review count, delivery, discount) is fully supported today.
imageUrlon product rows is usually empty. Google Shopping lazy-loads product images on its result cards, so image URLs from the result grid are typically unavailable. Image support will return alongside product detail enrichment.- Currency honoring varies. Setting
currency: "EUR"withcountry: "us"may still return USD prices if Google has no EUR inventory for that market βpriceRawalways shows the truth. startUrlsmust be Google domains. URLs from other sites are skipped with a warning.
Pricing
Flat $2.50 per 1,000 products (pay-per-result). No compute charges β you only pay per product returned, so the cost is predictable no matter how long a run takes or how much proxy bandwidth it uses.
| Results | Cost |
|---|---|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
Google Shopping caps pagination at roughly 200 products per query, so a single-query run is billed for at most ~200 rows β see Good to Know above for details on what counts as a billable row.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect your results to the tools you already use:
- Apify API β Full programmatic access to runs and datasets
- Webhooks β Get notified when a run completes
- Google Sheets β Direct spreadsheet export of the dataset
- Zapier / Make / n8n β Automate workflows across 1,500+ apps
- Slack / Email β Notifications on run completion or new results
- Datasets β Download as JSON, CSV, XML, or Excel
Legal & Ethical Use
This actor is intended for legitimate market research, price monitoring, competitive analysis, and catalog enrichment. You are responsible for using the data in compliance with applicable laws and with Google's Terms of Service. Do not use the output for spam, harassment, deceptive pricing, or any illegal purpose. The actor collects only publicly visible product listings β no login, no personal data, and no private content.