// Google Ads Scraper

Pull any company's complete Google ad library

Google ad coverage for any company your team is tracking. What they're running, how long it's been live, and which formats they're investing in. Returned as JSON. Built for automation and scale.

No credit card required

"When prospects saw we actually knew their ad mix, they started replying in ultra-relevant manners, referencing the exact ads they had been running and getting traction on vs those that they wanted to make the switch to video for."
Spencer Tahil

Spencer Tahil

Founder, Growth Alliance

Agency

What you get from each API call

Pass in a domain. Get back structured data for every ad that company is running on Google.

For the company:

  • Ad volume: Total count across Search, Display, and YouTube
  • Complete ad inventory across Search, Display, and YouTube
  • Pagination support via continuation_token for large ad libraries
  • Performance signals from timeline data (ads running 6+ months = likely working)
  • Creative testing activity from variant counts
  • Channel strategy from format distribution

For each ad:

  • Format type: Text (search), Image (display), or Video (YouTube)
  • Timeline data: When it first appeared (start) and when it was last seen (last_seen)
  • Creative variants: All sizes and dimensions in one variants array
  • Advertiser verification: Verified ID and legal business name from Google
  • Source link: Direct URL to the original ad in the Transparency Center

Example response (claude.ai):

{
  "status": "success",
  "data": {
    "company_domain": "claude.ai",
    "continuation_token": "CgoAP7zm00UnqGYbEhCFNReHz5+TES/O2zoAAAAAGgn8+H3I+J5QXGw=",
    "country_code": "anywhere",
    "total_ad_count": 2000,
    "ads": [
      {
        "advertiser_id": "AR15899303072422166529",
        "creative_id": "CR14867367858786009089",
        "original_url": "https://adstransparency.google.com/advertiser/AR15899303072422166529/creative/CR14867367858786009089?region=anywhere",
        "variants": [
          {
            "content": "<img src=\"https://tpc.googlesyndication.com/archive/simgad/8076656216322819338\" height=\"168\" width=\"380\">",
            "height": 168,
            "width": 380
          }
        ],
        "start": "2025-05-22",
        "last_seen": "2026-02-19",
        "advertiser_name": "Anthropic, PBC",
        "format": "Text"
      },
      {
        "advertiser_id": "AR15899303072422166529",
        "creative_id": "CR01282744467450757121",
        "original_url": "https://adstransparency.google.com/advertiser/AR15899303072422166529/creative/CR01282744467450757121?region=anywhere",
        "variants": [
          {
            "content": "<img src=\"https://tpc.googlesyndication.com/archive/simgad/18369327552909884147\" height=\"220\" width=\"380\">",
            "height": 220,
            "width": 380
          }
        ],
        "start": "2025-05-22",
        "last_seen": "2026-02-19",
        "advertiser_name": "Anthropic, PBC",
        "format": "Text"
      }
    ]
  }
}

Actionable data at any volume

Run one domain or batch thousands. Same structure every time.

Run it for:

Competitive monitoring
Schedule daily checks for your top competitors. Track when new ads appear, when old ones stop, how long each creative runs. Build a timeline of their ad strategy.

Account qualification
Check if prospects are running Google ads before outreach. Companies with active ad campaigns have budget and are investing in growth. Use ad activity as a qualification signal.

TAM analysis
Batch process your entire target account list. Flag which companies are advertising on Google. Segment by format (search vs display vs video) to understand channel preferences.

Creative research
Pull all display ads from your top 5 competitors. Feed the creative URLs to your design team. See what messaging angles they're testing and how long each runs.

Inbound enrichment
Trigger an API call when a prospect signs up. Check their company's ad activity. Route them to different sequences based on whether they're running ads.

// gong.io
{
  "total_ad_count": 700,
  "advertiser_id": "AR14106062795078369281",
  "advertiser_name": "Gong.io Inc",
  "ads": [ /* 40 ads per page */ ],
  "continuation_token": "CgoAP7zm06YJNFBPEhCE+5Jgz..."
}

// clay.com
{
  "total_ad_count": 200,
  "advertiser_id": "AR02473231714533507073",
  "advertiser_name": "Clay Labs",
  "ads": [ /* 40 ads per page */ ],
  "continuation_token": "CgoAP7zm2XX8x6RjEhDGG6NTAMr..."
}

// shopify.com
{
  "total_ad_count": 80000,
  "advertiser_id": "AR01625195283841286145",
  "advertiser_name": "Shopify Inc.",
  "ads": [ /* 40 ads per page */ ],
  "continuation_token": "CgoAP7zm00i6kj5nEhB4ohLW08..."
}

Each response includes total ad count, advertiser verification, and pagination token. Use continuation_token to page through results. Each call costs 1 credit.

Format ready for any tool or workflow

Clean JSON. Every field has the same structure across all responses. No parsing edge cases.

Clay

Add as HTTP API enrichment or use Adyntel's direct integration. Map fields to columns. Build conditional logic:

  • ads.length > 10: tag as "active advertiser"
  • format = "Video": add to "YouTube advertiser" list

CRMs (Salesforce, HubSpot, Pipedrive, Attio, etc)

Store as custom fields: google_ad_count (number), last_active_date (date), primary_ad_format (text), advertiser_id (text). Trigger sequences when last_seen updates or ad count changes.

Databases (Postgres, Airtable)

Store full JSON in JSONB column. Query by format, date ranges, advertiser name. Track changes over time by storing responses daily.

LLMs (ChatGPT, Claude, Gemini, Copilot, etc)

Pass structured ad data as context: "Analyze these 47 Google ads from Mailchimp: [JSON]. Extract their main value props and messaging themes." Get competitive intelligence without manual analysis.

Spreadsheets (Google Sheets, Excel)

Import via Apps Script or Power Query. Flatten JSON into rows. Track ad count by company, pivot by format, sort by last_seen date. Export individual ad data to CSV for manual review.

Python/Node

Standard HTTP POST. Parse with built-in JSON libraries. No SDK. No wrapper. Works anywhere you can make an HTTP request.

response = requests.post('https://api.adyntel.com/google', json={
  'api_key': key,
  'email': email,
  'company_domain': 'stripe.com'
})
ads = response.json()['data']['ads']

Simple, transparent pricing

Start with 50 free credits so you can test the product. No credit card required.

Subscription
(save 25%)
Pay as you go

5,000

credits

$44/mo

$0.00882 per credit

Try for Free

25,000

credits

$179/mo

$0.00714 per credit

Try for Free

50,000

credits

$321/mo

$0.00643 per credit

Try for Free

Need more than 50k credits? Contact us for a custom plan.

Frequently asked questions

Adyntel's Google Ads Transparency Center Scraper API

What input do I need?
A domain. That's it. Adyntel resolves it to the correct advertiser in the Google Ads Transparency Center automatically.
What data do I get back for each ad?
Advertiser name and ID, creative ID, ad format (text, image, or video), start date, last seen date, creative variants with content and dimensions, and a direct link to the ad in the Google Ads Transparency Center.
Can I filter by ad format?
Yes. Pass a media_type parameter to get only text, image, or video ads.
How many ads can I pull per company?
All of them. Use the continuation_token to page through every ad.
How does pricing work?
Each API call costs 1 credit. No platform fees, no actor subscriptions, no compute units on top.
How is Adyntel different from Apify Google Ads scrapers?
The most popular Apify Google Ads scraper requires a full Google Ads Transparency Center URL as input. That means you need to manually search the Transparency Center, find the right advertiser, and copy the URL. Adyntel takes a plain company domain and resolves it automatically. Apify scrapers also run as actors on their platform, with results stored in datasets you download separately. Adyntel returns JSON directly from a single API call. The most popular Apify scraper costs $30/month plus platform usage fees. Adyntel charges per successful call only.
How is this different from SerpApi?
SerpApi offers a Google Ads Transparency Center endpoint, but you still need to provide an advertiser ID or run a text search and sort through multiple results yourself. Adyntel resolves the domain to the correct advertiser for you. Adyntel also covers LinkedIn and Meta from the same API with the same input format.
Do I need cookies or special setup?
No. Some Apify scrapers may miss age-restricted ads unless you provide Google account cookies. Adyntel handles everything on its own infrastructure with no cookies or configuration needed.
There are a dozen Google Ads scrapers on Apify. Why use Adyntel?
Those scrapers are built by different community developers with different maintenance cycles. When Google changes the Transparency Center, each one breaks and gets fixed on its own schedule. Adyntel is a single maintained endpoint with 99.99% uptime.
Can I use this with Clay?
Yes. Adyntel integrates directly with Clay. Apify's Google Ads scrapers also work with Clay, but require you to go through Apify's API integration and manage actor runs. With Adyntel you call one endpoint directly.
Do you support other ad platforms?
Yes. Adyntel also covers LinkedIn and Meta ad libraries. Same domain-based input, same API structure.