Google Ads Scraper — Search, YouTube & Shopping Ads
Every ad a competitor runs on Google — Search, YouTube, Shopping, Maps, and Play — found by domain, advertiser, or brand, with the days each ad ran, the countries it reached, and, for the EU, its impressions and audience targeting.
key features
Every ad an advertiser runs on Google Search, YouTube, Shopping, Maps, and Play
Look ads up by website domain, advertiser ID, brand name, or a copied page URL — mixed in one run
First and last day shown, and how many days each ad has run
The legal name Google verified for the advertiser, and where it is based
EU impression ranges by country and platform, and the audience criteria used — with details on
A text ad's headline, a Shopping ad's products, a video ad's YouTube video, and the landing page — with content on, charged only when found
Filters by country, platform, format, and date; a span such as 30 days moves with each scheduled run
use cases
- Monitoring competitors' Google ads on a schedule, so new campaigns show up in the next run
- Creative research across a market: the headlines, products, and videos advertisers keep running
- Media planning with EU impression ranges by country and platform
- Agency and brand-safety checks: which legal entities pay for ads that lead to a website
- Lead generation: which companies advertise on Google, and since when
- Giving AI agents competitor ad data through Apify's MCP server
input parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
domains | array | optional | Every ad that leads to these websites, from every advertiser running one |
advertiserIds | array | optional | Every ad of these advertisers, by ID or advertiser page URL |
advertiserNames | array | optional | A company or brand name; the advertiser holding that name with the most ads is searched |
startUrls | array | optional | Advertiser, single-ad, or domain-search page URLs; filters in a URL apply to that URL |
region | string | optional | Only ads shown in this country, or anywhere |
platform | string | optional | Google Search, YouTube, Google Shopping, Google Maps, or Google Play |
adFormat | string | optional | Text, image, or video |
dateFrom | string | optional | Shown on or after a date, or a span back from today such as 30 days |
dateTo | string | optional | Shown on or before a date; empty means today |
maxItems | number | optional | Maximum ads stored — the hard cap on run spend |
maxAdsPerSearch | number | optional | Stops each domain, advertiser, name, or URL after this many ads |
includeDetails | boolean | optional | Countries, EU impression ranges, and audience criteria, charged per ad |
includeAdContent | boolean | optional | Headlines, products, YouTube videos, and landing pages, charged only when found |
Output Example
1{
2 "creativeId": "CR04380650295827365889",
3 "adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR04380650295827365889?region=NL",
4 "advertiserId": "AR18378488041124659201",
5 "advertiserName": "Nike Retail BV",
6 "advertiserLegalName": "Nike Retail BV",
7 "advertiserCountry": "NL",
8 "advertiserVerified": true,
9 "format": "TEXT",
10 "firstShown": "2025-10-22T15:05:47.575Z",
11 "lastShown": "2026-09-28T13:07:21.342Z",
12 "daysShown": 342,
13 "region": "NL",
14 "queryType": "advertiserId",
15 "details": {
16 "euImpressions": { "min": 250000, "max": 300000 },
17 "audience": {
18 "demographicInfo": { "included": true, "excluded": false },
19 "geographicLocations": { "included": true, "excluded": false },
20 "contextualSignals": { "included": true, "excluded": false }
21 }
22 },
23 "content": {
24 "headline": "{KeyWord:Nike Vomero}",
25 "description": "Découvre {Keyword:chaussures Nike} sur Nike.com. Commande sur le site officiel Nike.",
26 "landingUrl": null
27 }
28}
Trimmed for length: with details on, details also lists every country the ad ran in, with its first and last day and, in the EU, impressions by platform; content also carries products, youtubeVideoId, and youtubeUrl.
Tips
- Search the domain, not the brand name, for full coverage. A domain search returns every advertiser whose ads lead to the site — including the regional entities and resellers a brand name misses.
maxItemscaps your spend. It is the hard ceiling on the ads a run stores and charges for;maxAdsPerSearchstops one large advertiser from using it all up.- Use a relative date for monitoring. Set
dateFromto30 dayson a scheduled run and every run covers the latest month. - Keyword-insertion placeholders are kept as Google stores them. A headline such as
{KeyWord:Nike Vomero}shows the fallback text used when the search term doesn’t replace it.
faq
Do I need a Google account or an API key?
Why does a brand name find only one advertiser?
Why do some text ads have no headline?
Where do the impression and audience figures come from?
related in ~/business
Anytime Mailbox Scraper — Virtual Mailbox & CMRA Registry
Virtual mailbox locations worldwide, address-verified into a CMRA registry.
openIndeed Scraper — Jobs, Employers, Reviews & Salaries
Jobs and the employers behind them — descriptions, salaries, reviews, and Q&A.
openShopify Store Leads — Catalog Size, Apps & Contacts
Qualified Shopify store leads — catalog size, tech stack, and contacts.
open