Back to Blog
Google Ads

Scrape Google Search Ad Copy: Build a Competitor Swipe File

December 1, 2025
5 min read
S
By SociaVault Team
Google AdsPPCAd CopyCompetitor Analysis

Scrape Google Search Ad Copy: Build a Competitor Swipe File

Here's a useful truth about Google Search ads: if a competitor is still running one, the copy is probably working. Search ads cost money per click, and nobody keeps paying for a headline that doesn't convert. That makes the Google Ads Transparency Center a free, continuously-updated swipe file of proven copywriting — every headline and description your competitors trust enough to pay for.

This guide focuses on the copy angle: pull a competitor's search ad text and landing pages into a structured swipe file you can learn from. (For the broader "spy on all their ads" workflow, see the Google Ads Transparency competitor guide.) Code in JavaScript.

A quick honesty note

The Transparency Center shows ad creatives — headlines, descriptions, formats, destinations — not the keywords an advertiser bids on or what they spend. You can infer likely keywords from the copy, but the actual keyword list and budget stay private. So this builds a copywriting swipe file, not a keyword-spend report.

Step 1: Resolve the advertiser

const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE = "https://api.sociavault.com/v1/scrape/google-ad-library";

async function findAdvertiser(query) {
  const res = await fetch(
    `${BASE}/search-advertisers?query=${encodeURIComponent(query)}`,
    {
      headers: { "x-api-key": API_KEY },
    },
  );
  const json = await res.json();
  if (!json.success) throw new Error(json.error);
  console.log(json.data); // pick the right advertiser
  return json.data?.[0]?.id;
}

Step 2: Pull their ads and build the swipe file

The company-ads endpoint takes an advertiser_id (or domain), plus region and a cursor.

async function buildSwipeFile(advertiserId) {
  const res = await fetch(
    `${BASE}/company-ads?advertiser_id=${advertiserId}&region=US`,
    { headers: { "x-api-key": API_KEY } },
  );
  const json = await res.json();
  if (!json.success) throw new Error(json.error);

  const ads = json.data.ads || json.data.results || json.data || [];
  // Log one ad to confirm field names (headline, body, destination).
  return ads.map((ad) => ({
    headline: ad.headline ?? ad.title,
    body: ad.body ?? ad.description,
    link: ad.link ?? ad.destination_url,
    format: ad.format ?? ad.type,
  }));
}

Step 3: Mine the patterns

A swipe file is only useful if you read it. Two quick passes pay off:

Hook patterns. Run a word-frequency check across the headlines and you'll see the angles a competitor leans on — "free trial," "vs [rival]," "official site," a specific number. Those repeated phrases are battle-tested hooks worth adapting.

Landing-page intent. The destination URL tells you the funnel stage each ad serves:

function classifyDestination(url = "") {
  if (/\/compare|\/vs-|\/alternative/.test(url))
    return "High-intent (comparison page)";
  if (/\/webinar|\/demo|\/signup|\/trial/.test(url)) return "Lead gen / trial";
  if (/\/blog|\/guide|\/resources/.test(url)) return "Top-of-funnel content";
  return "Homepage / brand";
}

A competitor pointing search ads at a "/vs-trello" page is bidding on high-intent comparison traffic — a signal about both their strategy and a keyword space you might contest.

Google vs Facebook for swipe files

Worth knowing which library to mine for what:

  • Google ads are textual — mine them for copywriting (headlines, hooks, offers).
  • Facebook ads are visual — mine them for creative (image and video concepts). See the Facebook Ad Library scraper.

A complete competitive picture usually wants both.

Frequently Asked Questions

Can you see a competitor's Google search ad copy?

Yes. The Google Ads Transparency Center publicly shows the ads verified advertisers run, including search ad headlines and descriptions. You can pull them programmatically by resolving the advertiser and fetching their ads, as shown here, to build a swipe file of copy that's proven enough to keep running.

Does this reveal their keywords or budget?

No. The transparency data covers ad creatives, not the keywords an advertiser bids on or how much they spend. You can infer probable keywords from the copy, but the actual keyword list and budget remain private to the advertiser's account.

How do I know which ad copy is working?

Ads that have been running a long time are the strongest signal — advertisers don't keep paying for search ads that don't convert. Combine that with how often a particular angle or offer repeats across their ads to identify their most reliable messaging.

What can the landing page URLs tell me?

The destination reveals funnel intent: a comparison or "vs competitor" page signals high-intent targeting, a trial/demo page signals lead gen, and a homepage signals brand. Classifying destinations across a competitor's ads maps how they route paid traffic.

Is scraping the Google Ads Transparency Center allowed?

It's a public transparency tool Google built to make ads visible to everyone, so reading it is standard competitive research. Stay on public data, respect rate limits, and use the copy as inspiration rather than copying it verbatim.

How is this different from the Facebook Ad Library?

Google search ads are text-first, so you mine them for copywriting; Facebook ads are visual, so you mine them for creative concepts. Both are public ad libraries, but they serve different research goals — use Google for copy, Facebook for creative.

The bottom line

Your competitors are funding a copywriting test you get to read for free. Pull their search ad headlines and landing pages into a swipe file, mine the repeated hooks and the funnel intent, and write sharper ads of your own.

Want to build your swipe file? Start free with SociaVault with 50 credits.

Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.