Google Shopping Scraper
Pricing
from $2.50 / 1,000 shopping products
Google Shopping Scraper
Scrape Google Shopping products and sponsored PLA ads by keyword — titles, prices, merchants, ratings, delivery, and direct retailer URLs. Multi-country, multi-query. Organic listings + ads in one run. Flat JSON/CSV for price monitoring, PPC research, and ecommerce intelligence.
Pricing
from $2.50 / 1,000 shopping products
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Google Shopping Scraper — Products, Prices & Sponsored Ads
Extract live Google Shopping results by keyword: organic product cards and sponsored PLA ads, with prices, merchants, ratings, delivery signals, and direct retailer URLs when Google exposes them.
Built for price monitoring, competitive research, and ecommerce intelligence — multi-query, multi-country, JSON or CSV out.
Why Use This Scraper?
- Organic + sponsored in one run — most Shopping scrapers skip PLAs; this one returns both
- Direct retailer URLs on sponsored ads — when Google shows them (JBL, Walmart, Target, Best Buy, …)
- Structured money fields —
price+ numericpriceValue+ currency for easy pipelines - Market + language targeting — any
gl/hlGoogle Shopping market - Flat dataset — one product row per result, ready for sheets, warehouses, or agents
Overview
This Actor scrapes Google Shopping search results (udm=28) for one or more buyer keywords. Each dataset item is a single product card — either an organic Shopping listing or a sponsored Product Listing Ad (PLA).
It does not scrape Google Ads Transparency Center, Merchant Center, CPC/spend, or organic web Search results.
Supported Inputs
| Input | Supported |
|---|---|
Keyword / product search (queries) | ✅ |
Country market (countryCode) | ✅ |
Language (languageCode) | ✅ |
| Price range + sort | ✅ |
| Sponsored / organic toggles | ✅ |
| Google Shopping product detail URLs | ❌ (search mode only) |
| EAN / GTIN / SKU lookup | ❌ (not in this version) |
Example keywords: wireless headphones, office chair, nike running shoes.
Use Cases
| Audience | What you get |
|---|---|
| Ecommerce sellers | Competitor prices, merchants, discount signals |
| PPC / PLA teams | Sponsored ad creative, ranks, retailer destinations |
| Market researchers | Category assortments across countries |
| Price-monitoring tools | Repeatable keyword → product rows |
| AI agents / MCP | Flat JSON for RAG, alerts, and enrichment |
How It Works

- Submit one or more product keywords and pick a market / language.
- The Actor builds Google Shopping URLs (
udm=28) with optional sort and price filters. - Pages are fetched with anti-block defenses (residential attempt → unlocker fallback).
- Organic cards and sponsored PLA units are parsed into flat product rows.
- Results land in the default dataset — charge is per saved product.
Input Configuration
| Field | Type | Default | Description |
|---|---|---|---|
queries | string[] | — | Required. Product / category keywords |
maxProductsPerQuery | integer | 40 | Cap per keyword |
maxTotalProducts | integer | — | Optional run-wide cap |
countryCode | string | US | ISO market (US, GB, DE, …) |
languageCode | string | en | UI language |
includeSponsored | boolean | true | Collect PLA ads |
includeOrganic | boolean | true | Collect organic cards |
sortBy | enum | relevance | relevance / price_low / price_high / rating |
minPrice / maxPrice | number | — | Price filters |
maxConcurrency | integer | 3 | Parallel keywords |
maxRequestRetries | integer | 3 | Retries per keyword |
saveHtml | boolean | false | Debug: store raw HTML |
proxy | object | — | Optional Apify/custom proxy |
Example — US headphones, 10 products
{"queries": ["wireless headphones"],"maxProductsPerQuery": 10,"countryCode": "US","languageCode": "en","includeSponsored": true,"includeOrganic": true}
Example — price band + sort
{"queries": ["office chair"],"countryCode": "US","languageCode": "en","sortBy": "price_low","minPrice": 50,"maxPrice": 250,"maxProductsPerQuery": 30}
Output Overview
Each row is one Shopping product. Sponsored rows carry retailerUrl (direct merchant link) and googleAdUrl. Organic rows carry rating, reviewCount and delivery when shown, plus five of Google's own identifiers — productId (data-cid), googleGroupId, googleItemId, googleOfferId, googleProductId — which are the durable handles to join a listing across runs.
Two fields are honestly limited on organic rows, and it is Google's page, not the parser. The modern Shopping results page (
udm=28) contains no product anchor at all — navigation is JavaScript-driven — soproductUrlisnullfor organic rows. Constructedgoogle.com/shopping/product/<id>forms were tested against every id the page exposes and all returned Not available, so none is emitted rather than shipping a link that 404s.imageUrlis populated when Google publishes the thumbnail as a URL (google.ldi→encrypted-tbn…); on many organic rows it inlines the thumbnail as a multi-kilobyte base64 JPEG instead, and that is left out rather than carried under a field named "URL". Sponsored rows are unaffected — they have real links.
Output Samples
Sponsored PLA (with retailer URL)
{"type": "sponsored","position": 1,"searchQuery": "wireless headphones","countryCode": "US","languageCode": "en","title": "JBL Tune 510BT Wireless On-Ear Headphones - White","price": "$29.95","priceValue": 29.95,"currency": "$","originalPrice": "$50","originalPriceValue": 50,"merchant": "JBL","retailerUrl": "https://www.jbl.com/JBLT510BTWHTAM.html","googleAdUrl": "https://www.google.com/aclk?…","scrapedAt": "2026-07-22T22:41:00.000Z"}
Organic Shopping card
{"type": "organic","position": 7,"searchQuery": "wireless headphones","countryCode": "US","languageCode": "en","productId": "5636327565946258541","title": "Sony WH-1000XM6 Wireless Noise Canceling Headphones","price": "$458.00","priceValue": 458,"currency": "$","merchant": "Best Buy","rating": 4.7,"reviewCount": "4.9K","reviewCountValue": 4900,"delivery": "Free delivery by Fri","scrapedAt": "2026-07-22T22:41:00.000Z"}
Key Output Fields
| Group | Fields |
|---|---|
| Context | type, position, searchQuery, countryCode, languageCode, scrapedAt |
| Product | productId, googleGroupId, googleItemId, googleOfferId, googleProductId, title |
| Pricing | price, priceValue, currency, originalPrice, originalPriceValue |
| Merchant | merchant, rating, reviewCount, reviewCountValue, delivery |
| Links | retailerUrl, googleAdUrl |
Optional values are null when Google does not display them.
FAQ
Does this scrape organic web Search or only Shopping?
Only Google Shopping (udm=28) — product cards and PLAs.
Why is retailerUrl null on some organic rows?
Organic cards often open Google’s product viewer instead of a direct merchant link. Sponsored PLAs usually expose the retailer destination.
Can I pass EAN / GTIN codes?
Not in this version — keyword search only.
Do I need my own Google API key?
No. No Google login or Ads account is required.
Support
- Open an issue on the Actor’s Issues tab in Apify Console
- Website: apify.com/memo23
- Custom scrapers / exports: contact via Apify
Additional Services
Need EAN→offers lookup, scheduled price monitoring, or a custom schema? Reach out for a tailored build or enrichment pipeline.
Explore More Scrapers
Browse the full portfolio: apify.com/memo23
🤖 For AI Agents & LLM Apps
Purpose: Scrape Google Shopping product listings + sponsored PLA ads by keyword.
Minimal input:
{"queries": ["wireless headphones"],"maxProductsPerQuery": 10,"countryCode": "US","languageCode": "en"}
Output fields (flat): type, position, searchQuery, countryCode, languageCode, productId, googleGroupId, googleItemId, googleOfferId, googleProductId, title, price, priceValue, currency, originalPrice, originalPriceValue, merchant, rating, reviewCount, reviewCountValue, delivery, productUrl, retailerUrl, googleAdUrl, imageUrl, scrapedAt
Billing: Pay-per-event — charged per dataset item (apify-default-dataset-item) plus actor start. One row = one product card.
Agent notes: Prefer short keyword lists; set maxProductsPerQuery explicitly; treat null retailerUrl as expected on many organic rows; type is organic or sponsored.
⚠️ Disclaimer
This Actor is not affiliated with, endorsed by, or sponsored by Google LLC. Google Shopping™ and Google™ are trademarks of Google LLC. All trademarks remain the property of their respective owners.
This tool collects publicly available Shopping listing data for research and monitoring. You are responsible for complying with Google’s Terms of Service, applicable laws (including GDPR/CCPA where relevant), and your own use-case policies. Use responsibly and at your own risk.
SEO Keywords
google shopping scraper, google shopping api, scrape google shopping, google shopping products, google shopping prices, PLA scraper, product listing ads scraper, google shopping merchant, price monitoring scraper, competitor price scraper, ecommerce intelligence, shopping results scraper, google udm=28 scraper, sponsored shopping ads, product price comparison scraper, google shopping dataset, apify google shopping, shopping keyword scraper, retailer url extractor, multi country shopping scrape