Google Shopping Ads Scraper avatar

Google Shopping Ads Scraper

Pricing

from $2.35 / 1,000 shopping ads

Go to Apify Store
Google Shopping Ads Scraper

Google Shopping Ads Scraper

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.35 / 1,000 shopping ads

Rating

5.0

(1)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

7

Monthly active users

2.6 days

Issues response

3 days ago

Last modified

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.

📦 Returned data

Each dataset row is one paid Google Shopping ad. It can include product and merchant details, displayed and numeric prices, ratings, free-shipping status, delivery text, a merchant domain, a Google ad URL, and a detected location. 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

  1. Add product or category terms under Search keywords.
  2. Choose a market and Google page language.
  3. Select desktop, mobile, or both.
  4. Set limits, or leave them empty to return all available ads until the source is exhausted.
  5. Check optional fields such as merchantDomain, originalPrice, deliveryText, and googleAdUrl after the run when Google provides them.
  6. 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

FieldTypeWhat it does
devicestringChecks desktop, mobile, or both Google Search surfaces.
searchQueriesstring[]Sets 1 to 500 product or category keywords.
countrystringSets the Google market with a two-letter country code.
languagestringSets the Google page language with a two-letter code.
locationstringAdds an optional city, state, or postal area.
maxAdsPerQueryintegerLimits ads saved for each keyword. Leave it empty to return all available ads until the source is exhausted.
maxTotalAdsintegerLimits ads saved in the run. Leave it empty to return all available ads until the source is exhausted.

This is the public input from a successful current-beta default-input run:

{
"device": "desktop",
"searchQueries": [
"Sony WH-1000XM5"
],
"country": "US",
"language": "en",
"maxTotalAds": 3
}

🧾 Output

Optional fields may be null or absent when Google does not show them or they cannot be found.

Run output

FieldTypeWhat it does
resultsstringOpens the default dataset overview of collected Shopping ads.

Dataset rows

FieldTypeWhat it does
idstringStable ID for the saved ad row.
searchQuerystringBuyer keyword that first found the ad.
devicestringGoogle Search surface used for the row: desktop or mobile.
positionintegerAd order on the search page, starting at 1.
productIdstringGoogle product or offer ID shown by the ad.
productTitlestringProduct title shown in the ad.
pricestringCurrent price text shown in the ad.
priceValuenumber or nullNumeric current price when it can be read from the displayed price.
currencystringCurrency code for shown prices.
originalPricestring or nullPrice text shown before the discount.
merchantstringMerchant name shown in the ad.
merchantDomainstring or nullNormalized merchant website domain when the source exposes it.
ratingnumber or nullProduct rating shown in the ad.
reviewCountinteger or nullNumber of product reviews shown in the ad.
freeShippingboolean or nullTrue when the ad shows free shipping or delivery.
deliveryTextstring or nullDelivery, shipping, or pickup text shown in the ad.
googleAdUrlstring or nullGoogle ad click or product page URL from the ad.
detectedLocationstring or nullLocation shown by Google on the search page.

This is one genuine row from the successful current-beta Sony WH-1000XM5 run:

{
"id": "o6_8IDIyJtai9SKkXXp46qc150C2PeRS",
"searchQuery": "Sony WH-1000XM5",
"device": "desktop",
"position": 1,
"productId": "1311674:6538379",
"productTitle": "Sony - WH-1000XM5 Wireless Noise Cancelling Over-the-Ear Headphones - Blue",
"price": "$298",
"priceValue": 298,
"currency": "USD",
"originalPrice": null,
"merchant": "Best Buy",
"merchantDomain": "bestbuy.com",
"rating": 4.6,
"reviewCount": 9000,
"freeShipping": null,
"deliveryText": null,
"googleAdUrl": "https://www.google.com/aclk?sa=L&ai=DChsSEwjQhKeK7I-XAxVoB3sHHQmDMTcYACICCAEQCBoCdG0&ae=2&co=1&ase=2&gclid=EAIaIQobChMI0ISniuyPlwMVaAd7Bx0JgzE3EAQYASABEgJxXvD_BwE&cid=CAASugHkaMBRPXw3UoocGLUznEJ0UaoV0aejPWwh6a7PJRrtuBaRF_I4YjF8wwBYz1sg92vynbPF7AML5dahnMRMT7m_NcuiK8NYmumLgHIt3lf6qunIseBzHTtCso9-P2DLgkK8--88eFjDWlXttGAuzt0rpSzX045DOvqMcb16jdKJvSnIB6jVOkkEIKbkp5vwFeLbRKJykzNCpQHmxP0O2fyswWeyQo2JTvCn_wX6d3h3QX44aiV7f2YLK5E&cce=2&category=acrcp_v1_71&sig=AOD64_3Ljd1hhWaq-LV8rqvdLlh5P90qQQ&ctype=5&q=&nis=4&ved=2ahUKEwjV6qCK7I-XAxWiklYBHffxHnYQ5bgDKAB6BAgLEAs&adurl=",
"detectedLocation": null
}

💳 Pricing

This Actor uses pay-per-event pricing. A Shopping ad event is charged once for each paid ad saved to the dataset. Apify platform usage may still apply.

🔌 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. detectedLocation stays null unless Google shows location details.

Are ad URLs and detected location always available?

No. Google does not show every optional field on every ad, and some ad URLs or location details 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

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 🫡

Made with ❤️ by Maxime Dupré