Google Ad Library: How to See Every Ad an Advertiser Is Running
Most competitor ad research stops at Meta, because the Facebook Ad Library is the one everyone knows. But a huge share of the money, and often the more revealing creative, lives on Google: Search text ads, YouTube video ads, Display banners. Google publishes all of it in its Ads Transparency Center, and almost nobody is mining it systematically. That's the opportunity.
Here's how to pull any advertiser's Google ads programmatically, what you can and can't learn from them, and how to turn it into competitor intel that goes well beyond "here's a screenshot of their landing page."
What Google's ad transparency data covers
Google's Ads Transparency Center lists ads tied to a verified advertiser. For a given company you can see the ad creatives they've run, the formats (text, image, video), and roughly when and where they've shown. Because it spans Search, YouTube, and Display, it gives you a wider view of a competitor's paid strategy than any single-surface library, you catch the YouTube pre-roll push and the Search copy in the same pull.
Two things to set expectations on. First, this is creative and presence data, not a spend report, you don't get budgets or exact impressions for standard commercial ads. Second, coverage depends on what Google surfaces for that advertiser and region.
Three ways in: domain, advertiser, or keyword
SociaVault's Google Ad Library endpoints give you three entry points, which matters because you don't always start with the same information:
- By domain or advertiser ID —
GET /scrape/google-ad-library/company-adswhen you know the company. Passdomain(likenike.com) or anadvertiser_id, optionallyregionand atopicofallorpolitical, and page withcursor. - Find the advertiser first —
GET /scrape/google-ad-library/search-advertisers?query=nikewhen you only have a brand name and need to resolve it to an advertiser. - One specific ad —
GET /scrape/google-ad-library/ad-details?url=...to expand a single ad you've spotted.
Base URL https://api.sociavault.com/v1, x-api-key header, 1 credit per call, payload under data.
const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE = "https://api.sociavault.com/v1";
async function gget(path, params) {
const qs = new URLSearchParams(params).toString();
const res = await fetch(`${BASE}${path}?${qs}`, {
headers: { "x-api-key": API_KEY },
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
return (await res.json()).data;
}
// 1. Resolve a brand name to an advertiser
const advertisers = await gget("/scrape/google-ad-library/search-advertisers", {
query: "nike",
});
// 2. Pull that company's ads by domain
const ads = await gget("/scrape/google-ad-library/company-ads", {
domain: "nike.com",
region: "US",
});
console.log(ads);
Python, pulling a company's ads and paging with the cursor:
import os, time, requests
API_KEY = os.environ["SOCIAVAULT_API_KEY"]
BASE = "https://api.sociavault.com/v1"
def company_ads(domain, region="US", max_pages=5):
out, cursor, pages = [], None, 0
while pages < max_pages: # cap pages so a loop can't burn credits
params = {"domain": domain, "region": region}
if cursor:
params["cursor"] = cursor
r = requests.get(
f"{BASE}/scrape/google-ad-library/company-ads",
headers={"x-api-key": API_KEY},
params=params,
timeout=60,
)
r.raise_for_status()
data = r.json().get("data", {})
out.extend(data.get("ads", []) if isinstance(data, dict) else [])
cursor = data.get("cursor") if isinstance(data, dict) else None
pages += 1
if not cursor:
break
time.sleep(1) # be gentle
return out
print(len(company_ads("nike.com")))
Note the defensive data.get("ads", []) and the cursor handling: log one raw response first and confirm the actual field names before trusting them, ad-platform shapes drift, so don't hard-code assumptions.
What to actually do with it
Map the surface mix. Is a competitor heavy on YouTube video, or grinding Search text ads? The format split tells you where they think their buyers are and where their production budget goes.
Read the Search copy like a positioning doc. Text ads are the most compressed statement of a company's value prop, they've paid to optimize every character. Pull a category's Search ads and you've got everyone's positioning on one page.
Diff over time for launches. A sudden burst of new video ads often precedes or accompanies a product push. Re-pull monthly and watch for volume spikes.
Cross-reference with Meta. Companies rarely run identical creative across Google and Meta. Pull both (we covered the cross-platform approach separately) and you see the full paid picture, which is where the real strategy shows up.
The honest limits
- No spend or true performance. Same as every public ad library: you get creative and presence, not budget, impressions, or ROI. Don't let a dashboard imply otherwise.
- Coverage varies. What's visible depends on the advertiser's verification and the region you query. Treat a pull as "a strong sample," not a guaranteed complete archive.
- Region matters. Ads differ by geography; always set
regiondeliberately and remember a US pull isn't a global one. - Formats parse differently. Text, image, and video ads carry different fields. Handle each shape and read defensively.
- Public ads only. This is transparency data on ads, not a path to any private account or targeting detail.
Frequently Asked Questions
What is the Google Ad Library?
It's Google's Ads Transparency Center, a public directory of ads tied to verified advertisers across Search, YouTube, and Display. It exists for transparency, so anyone can look up the ads a given company is running.
Can I see a competitor's Google ad spend?
No. Like other public ad libraries, Google shows the creative, format, and rough timing/region, but not budgets, impressions, or performance for standard commercial ads. Use it for creative and positioning intel, not spend analysis.
How do I find a company's ads if I only know the brand name?
Use the search-advertisers endpoint with the brand name to resolve it to an advertiser, then call company-ads with the domain or advertiser_id you get back to pull their ads.
Does it cover YouTube ads too?
Yes. Because the transparency data spans Search, YouTube, and Display, you see video ads alongside text and image ads, which is what makes it broader than a single-surface library.
How much does pulling Google ads cost?
Each call is 1 credit on SociaVault, with 50 free credits to start and no card. Resolving an advertiser and pulling their ads is a couple of credits.
How is this different from the Facebook Ad Library?
Different platform, different surfaces. Facebook's library covers Meta placements; Google's covers Search, YouTube, and Display. Competitors usually run different creative on each, so pulling both gives a fuller view of paid strategy than either alone.
Ready to see what your competitors are actually running on Google? Start free with 50 credits, no card required and pull an advertiser's ads in minutes. New to the platform? Start with our guide for indie developers.
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.