~/business/google-ads-scraper
Google Ads Scraper — 検索・YouTube・ショッピング広告
競合他社がGoogleに出稿するすべての広告——検索、YouTube、ショッピング、マップ、Play——をドメイン・広告主・ブランド名から検索。各広告の掲載日数、掲載された国、EUについてはインプレッション数とオーディエンスターゲティングまで取得できます。
広告インテリジェンス
TypeScript
全世界
カテゴリbusiness / 広告インテリジェンス
言語TypeScript
スタックTypeScript
マーケット全世界
出力クリーンでRAG対応のJSON
主な機能
広告主がGoogle 検索、YouTube、ショッピング、マップ、Playに出稿するすべての広告
サイトのドメイン、広告主ID、ブランド名、またはコピーしたページURLで広告を検索——1回の実行内で混在指定可能
掲載開始日と最終掲載日、そして各広告がこれまでに掲載された日数
Googleが確認した広告主の正式名称と、その所在地
国・プラットフォーム別のEUインプレッション数の範囲と、使用されたオーディエンス条件——詳細情報をオンにすると取得可能
テキスト広告の見出し、ショッピング広告の商品、動画広告のYouTube動画、ランディングページ——広告コンテンツをオンにすると取得可能。課金は見つかった場合のみ
国・プラットフォーム・フォーマット・日付でフィルタリング。30 daysのような相対期間を指定すれば、スケジュール実行のたびに対象期間が自動的にスライドします
活用例
- スケジュール実行で競合他社のGoogle 広告を継続的にモニタリング。新しいキャンペーンは次回の実行結果に反映されます
- 市場全体のクリエイティブ調査——広告主が継続的に出稿している見出し、商品、動画を把握
- 国・プラットフォーム別のEUインプレッション数の範囲を使ったメディアプランニング
- 代理店・ブランドセーフティチェック——あるWebサイトに誘導する広告に、実際にどの法人が広告費を支払っているかを確認
- リードジェネレーション——どの企業がGoogle 広告を出稿しているか、いつから出稿しているか
- ApifyのMCPサーバー経由で、AIエージェントに競合広告データを提供
入力パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
domains | array | 任意 | これらのサイトに誘導するすべての広告——出稿しているすべての広告主が対象 |
advertiserIds | array | 任意 | 指定した広告主のすべての広告——IDまたは広告主ページのURLで指定 |
advertiserNames | array | 任意 | 会社名またはブランド名。その名前を持つ広告主のうち、広告数が最も多いアカウントを検索します |
startUrls | array | 任意 | 広告主ページ、単一広告ページ、またはドメイン検索結果ページのURL。URLに含まれるフィルタはそのURLにのみ適用されます |
region | string | 任意 | 指定した国で掲載された広告のみ、または国を限定しない |
platform | string | 任意 | Google 検索、YouTube、Google ショッピング、Google マップ、Google Playのいずれか |
adFormat | string | 任意 | テキスト、画像、動画のいずれか |
dateFrom | string | 任意 | 指定した日付以降に掲載された広告。30 daysのように、今日を起点とした相対期間でも指定可能 |
dateTo | string | 任意 | 指定した日付以前に掲載された広告。未指定の場合は本日まで |
maxItems | number | 任意 | 保存する広告数の上限——実行コストのハードリミット |
maxAdsPerSearch | number | 任意 | ドメイン・広告主・名前・URLごとに、この件数に達した時点で取得を打ち切ります |
includeDetails | boolean | 任意 | 国、EUインプレッション数の範囲、オーディエンス条件を取得——広告1件ごとに課金 |
includeAdContent | boolean | 任意 | 見出し、商品、YouTube動画、ランディングページを取得——見つかった場合のみ課金 |
出力例
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}
紙幅の都合で一部省略しています。詳細情報をオンにすると、detailsには広告が掲載された国ごとの掲載開始日・終了日も一覧され、EUではプラットフォーム別のインプレッション数も含まれます。contentにはproducts、youtubeVideoId、youtubeUrlも含まれます。
ヒント
- 網羅的に調べるには、ブランド名ではなくドメインを検索してください。 ドメイン検索なら、そのサイトに誘導するすべての広告主が取得できます——ブランド名検索では見落としがちな地域法人や販売代理店も含まれます。
maxItemsが支出の上限です。 1回の実行で保存・課金される広告数のハードリミットです。maxAdsPerSearchを使えば、1社の大口広告主がこの上限を使い切ってしまうのを防げます。- モニタリング用途には相対日付を使いましょう。 スケジュール実行で
dateFromを30 daysに設定すれば、毎回の実行が常に直近1か月をカバーします。 - キーワード挿入のプレースホルダーはGoogleが保存している形のまま残します。
{KeyWord:Nike Vomero}のような見出しは、検索語で置き換えられなかった場合に使われるフォールバック テキストを示しています。
よくある質問
GoogleアカウントやAPIキーは必要ですか?
いいえ、不要です。広告はGoogleの公開広告ライブラリから取得しており、誰でもログインせずに閲覧できます。Apify上でこのActorを実行すると、広告1件がデータセットの1行になります。
ブランド名で検索すると、なぜ広告主が1件しか見つからないのですか?
ブランドは複数の法人を通じて広告を出稿していることがよくあります——NikeであればNike, Inc.やNike Retail BVなど。ブランド名検索ではそのうち主要な1件しか見つかりません。そのブランドのドメインで検索すれば、そこへ誘導するすべての広告主を取得できます。
テキスト広告に見出しがないことがあるのはなぜですか?
Googleは多くのテキスト広告を、広告の画像として保存しています。その場合、見出しの代わりにプレビュー画像が付きます。見出しと説明文が取得できるのは、Googleが現在も配信中のテキスト広告に限られます。
インプレッション数やオーディエンスの数値はどこから取得していますか?
GoogleはEU域内で掲載された広告について、デジタルサービス法に基づきこれらの数値を公開しており、インプレッション数の集計には約3か月の遅れがあります。EU域外では、詳細情報として広告が掲載された国と、その国での掲載日数が得られます。