Google Shopping Ads Scraper: Prices & Merchants
Pricing
from $2.65 / 1,000 shopping ads
Google Shopping Ads Scraper: Prices & Merchants
Collect paid Google Shopping ads shown on Google Search. Export product titles, prices, merchants, positions, ratings, delivery details, merchant domains, and available ad URLs by keyword, market, language, and device.
Pricing
from $2.65 / 1,000 shopping ads
Rating
5.0
(1)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
46
Total users
12
Monthly active users
0.16 hours
Issues response
2 days ago
Last modified
Categories
Share
🛒 Collect paid Google Shopping ads by keyword
Google Shopping Ads Scraper helps PPC teams, ecommerce sellers, and market researchers collect paid product ads shown on Google Search. Add buyer keywords and get product titles, prices, merchants, positions, ratings, and available ad URLs for ad research.
- Set up Google Shopping ads monitoring to collect paid products for your chosen keywords.
- Run shopping ad price research to compare current prices with original prices.
- Do shopping ad merchant research to find merchants and their website domains.
- Use product listing ad rank tracking to compare paid product positions across runs.
- Make a desktop and mobile shopping ad comparison to see which ads each device shows.
📦 Returned data
Each dataset row is one paid Google Shopping ad. It can include product and merchant details, displayed and numeric prices, product images, ratings, delivery text, a merchant domain, and a Google ad URL. Optional values may be null or absent when Google does not show them. The Actor does not return organic listings, campaign spend, CPC, clicks, conversions, or Merchant Center data.
When the same source ad appears more than once, the Actor saves its first eligible match. The saved row shows the first keyword and device that found it.
🚀 Running the Actor
- Add product or category terms under Search keywords.
- Choose a market and Google page language.
- Select
desktop,mobile, orboth. - Set limits, or leave them empty to return all available ads until the source is exhausted.
- Check optional fields such as
merchantDomain,originalPrice,deliveryText, andgoogleAdUrlafter the run when Google provides them. - Start the Actor and open the default dataset.
Use product or category terms such as office chair or wireless headphones as your search keywords.
⚙️ Input
| Field | Type | What it does |
|---|---|---|
device | string | Required. Checks desktop, mobile, or both Google Search surfaces. The form prefills desktop. |
searchQueries | string[] | Required. Sets 1 to 500 product or category keywords. |
country | string | Sets the Google market with a two-letter country code. The default is US. |
language | string | Sets the Google page language with a two-letter code. The default is en. |
location | string | Adds an optional city, state, or postal area. |
maxAdsPerQuery | integer | Limits ads saved for each keyword. Leave it empty or set 0 to return all available ads. |
maxTotalAds | integer | Limits ads saved in the run. Leave it empty or set 0 to return all available ads. The form prefills 3. |
This is the public input from a successful current-beta default-input run:
{"device": "desktop","searchQueries": ["wireless headphones"],"maxTotalAds": 3,"country": "US","language": "en"}
🧾 Output
Output fields
Each dataset row is one paid Shopping ad. Optional fields may be null or absent when Google does not show them.
| Field | Type | What it does |
|---|---|---|
id | string | Stable ID for the saved ad row. |
searchQuery | string | Buyer keyword that first found the ad. |
device | string | Google Search surface used for the row: desktop or mobile. |
position | integer | Ad order on the search page, starting at 1. |
productId | string | Google product or offer ID shown by the ad. |
productTitle | string | Product title shown in the ad. |
productImage | string or null | Product image from the ad card, as an inline image (data URL) or a Google image link. It is null only when the card shows no image. |
price | string | Current price text shown in the ad. |
priceValue | number or null | Numeric current price when it can be read from the displayed price. |
currency | string | Currency code for shown prices. |
originalPrice | string or null | Price text shown before the discount. |
merchant | string | Merchant name shown in the ad. |
merchantDomain | string or null | Normalized merchant website domain when the source exposes it. |
rating | number or null | Product rating shown in the ad. |
reviewCount | integer or null | Number of product reviews shown in the ad. |
deliveryText | string or null | Delivery, shipping, or pickup text shown in the ad. |
googleAdUrl | string or null | Google ad click or product page URL from the ad. |
Example row
This is one genuine row from a successful current-beta wireless headphones run. It is shortened: the long inline productImage value is replaced with "...".
{"id": "i9Zcutqj9DGNVbi2sBhqjhr6duUgp_7q","searchQuery": "wireless headphones","device": "desktop","position": 1,"productId": "10046:1012764581","productTitle": "Sony WH-CH530 Bluetooth Wireless Headphones with Microphone - Black","price": "$49.99","priceValue": 49.99,"currency": "USD","originalPrice": "$70","productImage": "...","merchant": "Target","merchantDomain": "target.com","rating": 4.9,"reviewCount": 494,"deliveryText": null,"googleAdUrl": "https://www.google.com/aclk?sa=L&ai=DChsSEwi2kYC-6OeXAxVLGYcDHXNnMpgYACICCAEQGBoCamY&ae=2&co=1&ase=2&gclid=EAIaIQobChMItpGAvujnlwMVSxmHAx1zZzKYEAQYASABEgKml_D_BwE&cid=CAASugHkaPWwGOi288JakXgLMgpEmS2B7Noy8mMyzLBjA67je5xUI1hzpxNH3BoX6GWTJ1_vULMBTiVHQq8yD4ORH5kMoZBshBkTI4oWGn7aTjuLS4-LWAgvvRol_KrUo1-IRmrLK_Ez-oBbwAMmHGFuHHtGQfHKThXugal2-JhXctwCElxh4tRq4R_5F19JmcUBu3a5ymXzPxTKndF96WDHCwUaM6_UKJWIi64K4dU7AQnZHi-MzRO-ThXrYJ4&cce=2&category=acrcp_v1_71&sig=AOD64_0dhkeM4ksPDbf3IXmsrqWgQClt3A&ctype=46&q=&nis=4&ved=2ahUKEwjgjfu96OeXAxUyN4YAHcsWJkEQ5bgDKAB6BAgNEAc&adurl="}
💳 Pricing
This Actor uses pay-per-event pricing. You pay for one Shopping ad event for each paid ad saved to the dataset. The price is $0.0027 per ad, or $0.00265 per ad on Gold, Platinum, and Diamond plans. A keyword with no ads saves no rows and has no Shopping ad charge.
🔌 Integrations
Use the Apify API to send input and get dataset rows. You can also schedule runs, export JSON, CSV, or Excel, and use webhooks after runs finish.
❓ FAQ
Why did my keyword return no rows?
Google may not show paid Shopping ads for that keyword, market, language, device, or time. Try a product keyword, another supported market, or a later run.
Can I compare desktop and mobile ads?
Yes. Choose both to check both in one run. Google may show different ads on each device.
Can I target a city or postal area?
Yes. Add the optional location input. The Actor sends it to Google with the search. The rows do not include the location.
Are ad URLs and other optional fields always available?
No. Google does not show every optional field on every ad, and some ad URLs may be unavailable. Missing optional fields stay null or may be absent.
Does this scrape organic Google Shopping results?
No. It collects paid Shopping ads only.
How is this different from the Google Ads API or Transparency Center?
The Google Ads API gives account-owned campaign data. Transparency Center has public advertiser creatives and past ad dates. This Actor checks live paid Shopping product ads shown for buyer keywords on Google Search.
📝 Changelog
v3.0 (01-11-2026)
- The
detectedLocationoutput field was removed because Google does not show a detected location on the page. There is no replacement field. - The
freeShippingoutput field was removed. There is no replacement field. Shipping text such as "Free by 11/10" still appears indeliveryText. - The keyword ad limit and the run ad limit now accept 0. Set 0 or leave the limit empty to get all available ads.
- Ratings and review counts are now read in more page languages, not only English.
- Merchant names and other ad details are now read more accurately from each ad card.
- Runs now need at least 1024 MB of memory.
- Reliability improvements.
v2.1 (20-10-2026)
- Each ad now has a
productImagefield with its product picture, including ads further down the carousel. - Product pictures are returned even when ad card screenshots are off.
- Shopping ad searches now show progress for each search.
v2.0 (27-09-2026)
- The dataset now uses a smaller core field set with product, price, merchant, rating, delivery, and ad URL details.
- Paid Shopping ads are collected from Google Search results, with a numeric price and merchant domain when available.
- Shopping ad events now use one fixed price for each saved ad.
v1.0 (23-09-2026)
- Google Shopping ad results now focus on core product, price, merchant, promotion, and delivery details.
v0.4
- Added optional ad card screenshots, unit-price and store-review fields, multi-device collection in one run, and resumable runs.
v0.3
- Added checkout price and promotion fields for coupon ads.
v0.2
- Added desktop and mobile choices, more Shopping ad fields, and lower Shopping ad pricing.
v0.1
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Google Shopping Scraper - Prices & Offers: get regular Google Shopping product offers, prices, and merchants by keyword or product code.
- Google Ads Scraper: collect public Google Ads Transparency Center creatives for advertiser archive research.
- Amazon Keywords Discovery Tool: find Amazon autocomplete terms before you research product ad keywords.
- Etsy Keywords Research Tool: find Etsy autocomplete ideas for listing and PPC research.
- MercadoLibre Search Scraper: get marketplace products, prices, sellers, shipping, images, and rank by query.
Made with ❤️ by Maxime Dupré