Google Ads Transparency Scraper & Ads Library API avatar

Google Ads Transparency Scraper & Ads Library API

Pricing

from $0.85 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper & Ads Library API

Google Ads Transparency Scraper & Ads Library API

See every ad a competitor runs on Google. Google Ads Transparency Center scraper and API by keyword, domain, advertiser ID or URL: ad copy read from screenshot text ads, YouTube video links, first and last shown dates, regions, EU reach, legal name. Google ad library export, no login.

Pricing

from $0.85 / 1,000 ads

Rating

0.0

(0)

Developer

API Mint

API Mint

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

Google Ads Transparency Scraper

Get every ad an advertiser runs on Google, with the ad copy: from a keyword, a domain, an advertiser ID or a Google Ads Transparency Center URL. Text, image and video ads, with headline, description, display URL, sitelinks, YouTube link, first and last shown dates, countries, EU reach and the advertiser's verified legal name. Many targets in one run, no login, no caps.

AdvertiserFormatHeadlineDescriptionDisplay URL
HubSpottextAI Meeting Notetaker - Automate Meeting NotesNotetaker records, transcribes, and summarizes meetings, then logs notes to your CRM.www.hubspot.com/
ZappostextZappos Clearance - Zappos Official Site - Fast, Free ShippingStay Up To Date On The Latest Styles and Trends. Zappos Offers Ways To Shop And Save.www.zappos.com/
317 Plumbertext317 Plumber - Family-Owned Local Plumbers - Local Plumbing CompanyAs Local Plumbers, We Answer Every Call Around the Clock & Back Our Work With Warranties…www.317plumber.com/

Price: one price per ad, everything included (reading the copy out of screenshot ads too).

Apify planPer adPer 1,000 ads
Free$0.0017$1.70
Bronze$0.0014$1.40
Silver$0.00115$1.15
Gold$0.00085$0.85

You are never charged for empty ad templates, for text ads whose screenshot has no readable copy, or for ads skipped in monitoring mode.

Free plan vs paid plans. Reading the copy out of screenshot ads is included in the price on every plan. On the free Apify plan it uses standard OCR (Tesseract). On paid plans an AI model reads every screenshot, which gets more words exactly right and runs faster. Each row says which reader was used in ocrEngine (tesseract or the AI model's name).

Works well with: a YouTube transcript scraper (feed it the videoUrl of video ads).

How to scrape Google Ads Transparency Center

By domain

Put hubspot.com in Domains. You get HubSpot's ads plus ads from other advertisers that point to hubspot.com (resellers, agencies, affiliates). https://, www. and paths are removed for you.

By advertiser

Put the advertiser ID in Advertiser IDs (for example AR16735076323512287233 is Nike, Inc.). You find it in the Transparency Center URL: adstransparency.google.com/advertiser/AR….

By keyword

Put a brand or keyword in Search terms, such as plumber or nike. Honest note: Google's Transparency Center does not search ad text. It matches your keyword against advertiser names and website domains, and the Actor then pulls every ad of the matching advertisers (up to Max advertisers per search term). This works well for brands and local services ("plumber", "dentist chicago") and poorly for generic product phrases ("running shoes"). Turn on Search term must appear in the ad to keep only ads whose copy contains the keyword.

By URL

Paste any adstransparency.google.com URL into Transparency Center URLs: an advertiser page, a domain search or a single ad. The URL's region, format and platform settings are used.

Monitoring competitors

Turn on Only new ads and run the Actor on a schedule (daily or weekly). Each run returns only ads it has not returned before for the same target and filters. Skipped ads are not charged.

Input example

{
"domains": ["hubspot.com"],
"searchTerms": ["plumber"],
"advertiserIds": ["AR16735076323512287233"],
"region": "US",
"format": "any",
"platform": "any",
"dateFrom": "30 days",
"maxAdsPerTarget": 200,
"includeAdDetails": true,
"extractTextFromScreenshots": true
}

Output example

One row per ad (a real row from a run on 2026-10-10):

{
"adId": "CR03966776861953884161",
"advertiserId": "AR10072600183532683265",
"advertiserName": "Hubspot, Inc.",
"advertiserLegalName": "Hubspot, Inc.",
"advertiserCountry": "US",
"advertiserVerified": true,
"format": "text",
"firstShown": "2026-10-06T19:12:18.899Z",
"lastShown": "2026-10-09T22:48:39.117Z",
"daysShown": 4,
"targetDomain": "hubspot.com",
"adUrl": "https://adstransparency.google.com/advertiser/AR10072600183532683265/creative/CR03966776861953884161?region=US",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/12999069173626747232",
"imageWidth": 364,
"imageHeight": 213,
"previewUrl": null,
"videoId": null,
"videoUrl": null,
"videoThumbnailUrl": null,
"headline": "AI Meeting Notetaker - Automate Meeting Notes",
"description": "Notetaker records, transcribes, and summarizes meetings, then logs notes to your CRM.",
"displayUrl": "www.hubspot.com/",
"callToAction": null,
"sitelinks": [
{
"title": "AI Meeting Prep and Notes",
"description": null
},
{
"title": "Notetaker",
"description": null
}
],
"copySource": "ocr",
"copyConfidence": 0.921,
"copyFieldConfidence": {
"headline": 0.909,
"description": 0.952,
"displayUrl": 0.903
},
"ocrEngine": "tesseract",
"emptyTemplate": false,
"variationCount": 1,
"variations": [
{
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/12999069173626747232",
"previewUrl": null,
"headline": null,
"description": null,
"displayUrl": null
}
],
"regions": [
{
"region": "US",
"firstShown": null,
"lastShown": "2026-10-09",
"impressionsMin": null,
"impressionsMax": null,
"platforms": []
}
],
"impressionsMin": null,
"impressionsMax": null,
"targeting": null,
"source": {
"type": "domain",
"value": "hubspot.com"
},
"matchedTerm": null,
"scrapedAt": "2026-10-10T01:53:15.875Z"
}

Each run also saves a SUMMARY record: for each target, how many ads were returned against the total Google reports (for example "Google reports 3,000–4,000, 312 returned"), and why the run stopped. A run never ends "succeeded" with zero rows without saying why, and a target that Google blocked fails the run instead of returning an empty dataset.

How much does it cost to scrape Google Ads Transparency?

You pay per ad returned. There is no start fee beyond Apify's standard tiny run start charge, and no extra charge for ad copy.

JobFree planGold plan
500 ads of one competitor$0.85$0.43
5,000 ads across 20 competitors$8.50$4.25
Daily monitoring, 30 new ads a day for a month$1.53$0.77

Turning off ad copy or details makes runs faster, not cheaper: the price per ad is the same. Set Max ads per target, Max ads in total or Apify's maximum cost per run to control spend.

What you get per format

  • Text ads. Google stores most text ads only as a screenshot. The Actor reads it and splits it into headline, description, displayUrl and sitelinks, leaving out the logo, star ratings, review snippets and buttons. copySource says ocr; ocrEngine says which reader was used (paid plans: an AI model; free plan: Tesseract); with Tesseract OCR, copyFieldConfidence gives a 0–1 confidence per field. Text ads that Google renders live come back with the exact text (copySource: content). For responsive search ads you get the combinations Google saved, one per version in variations.
  • Image ads. The image URL and size. variations lists every saved version.
  • Video ads. The YouTube link (videoUrl), video ID and thumbnail, plus the headline, description and call to action when Google provides them.
  • EU-served ads. Impressions (as Google's ranges) per country and per platform, and which targeting was used (demographics, location, contextual).

What Google does not publish

Answered once and plainly, so you know before you run:

  • Spend and budgets. Not published for commercial ads.
  • Keywords the advertiser bids on. Not published.
  • Landing pages. Google strips the final URL; you get the display URL shown in the ad.
  • Impressions outside the EU. Published only for ads served in the EU.
  • Unverified advertisers and age-restricted ads. Not shown to logged-out visitors.
  • The full list of headlines in a responsive ad. Google saves only the combinations it showed.
  • Search across all advertisers by ad text. The Transparency Center has no such search (see "By keyword").

FAQ

Is it legal to scrape the Google Ads Transparency Center? The Actor reads only public pages that Google publishes for transparency, with no login. Advertiser names and legal names are shown as Google publishes them. Check the rules that apply to your own use.

Why do I get fewer ads than the Transparency Center's count? Google shows rounded ranges ("3,000–4,000") and counts depend on the region filter. Your caps (maxAdsPerTarget, maxAds) also stop a target early; the SUMMARY record says which one did.

Can I search all advertisers by keyword? Not by ad text. See "By keyword" above for what is possible.

Can I use it through the API, MCP or integrations? Yes. Run it through the Apify API, from an AI agent via Apify's MCP server, or connect it to Make, Zapier, n8n, Google Sheets and webhooks. Every output field has a description for agents.

How does it compare with other Google Ads scrapers?

This ActorTypical alternatives
Ad copy for screenshot text adsYes, split into headline / description / display URL / sitelinksNone, or one raw text block, or description mixed with ratings and sitelinks
Empty templates and unreadable adsNot chargedOften charged
Keyword, domain, advertiser and URL input in one runYesUsually one input type
Advertiser legal name and verificationYesRarely
EU reach and targetingYesSome
Zero rows without a reasonNeverHappens

Changelog and feedback

See the ./CHANGELOG.md. Found a bug or missing a field? Open an issue on the Actor's Issues tab; we answer quickly. If it saves you time, a review helps others find it.