Google Ad Library Scraper API: Research Competitor Google Ads
Google's Ad Transparency Center reveals what advertisers are running across Google's network. This guide shows you how to research competitor advertising strategies.
Google Ad Library Endpoints
| Endpoint | Description |
|---|---|
| Company Ads | Get ads from a company domain |
| Ad Details | Get detailed ad information |
| Search Advertisers | Find advertisers by name |
Get Company Ads
Find all ads from a company:
const response = await fetch('https://api.sociavault.com/google-ad-library/company-ads', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain: 'nike.com'
})
});
const ads = await response.json();
Response
{
"advertiser": {
"name": "Nike",
"domain": "nike.com",
"verificationStatus": "verified",
"totalAds": 1250
},
"ads": [
{
"id": "AR123456789",
"format": "display",
"size": "300x250",
"lastShown": "2026-01-08",
"firstShown": "2025-12-15",
"regions": ["US", "CA", "UK"],
"previewUrl": "https://...",
"targetUrl": "https://nike.com/sale",
"creative": {
"type": "image",
"url": "https://..."
}
}
],
"hasMore": true
}
Search Advertisers
Find advertisers in the library:
const response = await fetch('https://api.sociavault.com/google-ad-library/search-advertisers', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: 'nike'
})
});
const advertisers = await response.json();
Response
{
"advertisers": [
{
"id": "AR987654321",
"name": "Nike, Inc.",
"domain": "nike.com",
"verificationStatus": "verified",
"activeAdsCount": 1250
}
]
}
Ad Details
Get comprehensive information about a specific ad:
const response = await fetch('https://api.sociavault.com/google-ad-library/ad-details', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://adstransparency.google.com/advertiser/AR123456789'
})
});
const adDetails = await response.json();
Use Cases
Competitor Ad Research
Analyze competitor Google Ads campaigns:
async function analyzeCompetitor(domain) {
const { advertiser, ads } = await getCompanyAds(domain);
return {
company: advertiser.name,
totalAds: advertiser.totalAds,
formats: countFormats(ads),
regions: [...new Set(ads.flatMap(a => a.regions))],
recentAds: ads.filter(a =>
new Date(a.lastShown) > new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
).length
};
}
function countFormats(ads) {
const formats = {};
ads.forEach(ad => {
formats[ad.format] = (formats[ad.format] || 0) + 1;
});
return formats;
}
Display Ad Analysis
Study display ad creative:
async function analyzeDisplayAds(domain) {
const { ads } = await getCompanyAds(domain);
const displayAds = ads.filter(a => a.format === 'display');
// Group by size
const bySizes = {};
displayAds.forEach(ad => {
bySizes[ad.size] = (bySizes[ad.size] || 0) + 1;
});
return {
totalDisplayAds: displayAds.length,
sizes: bySizes,
mostCommonSize: Object.entries(bySizes)
.sort((a, b) => b[1] - a[1])[0][0]
};
}
Geographic Targeting
Analyze where competitors advertise:
async function analyzeRegions(competitors) {
const regionData = {};
for (const domain of competitors) {
const { ads } = await getCompanyAds(domain);
const regions = {};
ads.forEach(ad => {
ad.regions.forEach(r => {
regions[r] = (regions[r] || 0) + 1;
});
});
regionData[domain] = regions;
}
return regionData;
}
Campaign Timeline
Track when competitors run campaigns:
async function trackCampaignTimeline(domain) {
const { ads } = await getCompanyAds(domain);
const timeline = ads.map(ad => ({
id: ad.id,
startDate: ad.firstShown,
endDate: ad.lastShown,
durationDays: Math.ceil(
(new Date(ad.lastShown) - new Date(ad.firstShown)) / (1000 * 60 * 60 * 24)
)
}));
// Group by month
const byMonth = {};
timeline.forEach(ad => {
const month = ad.startDate.substring(0, 7);
byMonth[month] = (byMonth[month] || 0) + 1;
});
return { timeline, byMonth };
}
Landing Page Analysis
Study where ads drive traffic:
async function analyzeLandingPages(domain) {
const { ads } = await getCompanyAds(domain);
const landingPages = {};
ads.forEach(ad => {
const path = new URL(ad.targetUrl).pathname;
landingPages[path] = (landingPages[path] || 0) + 1;
});
const topPages = Object.entries(landingPages)
.sort((a, b) => b[1] - a[1])
.slice(0, 10);
return {
uniquePages: Object.keys(landingPages).length,
topPages
};
}
Combining with Other Sources
Cross-reference with other ad libraries:
async function fullAdAudit(company) {
// Get ads from all platforms
const [googleAds, facebookAds, linkedInAds] = await Promise.all([
getGoogleAds(company.domain),
getFacebookAds(company.name),
getLinkedInAds(company.name)
]);
return {
google: {
total: googleAds.ads.length,
formats: countFormats(googleAds.ads)
},
facebook: {
total: facebookAds.ads.length,
platforms: countPlatforms(facebookAds.ads)
},
linkedin: {
total: linkedInAds.ads.length
},
totalAcrossAll: googleAds.ads.length + facebookAds.ads.length + linkedInAds.ads.length
};
}
Related Endpoints
- Facebook Ad Library - Meta ads
- LinkedIn Ad Library - LinkedIn ads
- Google Search Scraper - Google search results
Frequently Asked Questions
What ad types are included?
The Google Ad Transparency Center includes Search, Display, YouTube, and other Google network ads.
How far back does the data go?
Google stores ad data for varying periods depending on ad type. Display ads are typically available for several months.
Can I see ad spend?
Unlike Facebook's Ad Library, Google doesn't publicly share spend data. You can estimate based on ad volume and duration.
Are all advertisers included?
Verified advertisers running Google Ads are included. Political and issue ads have additional transparency requirements.
What regions are covered?
The Ad Transparency Center covers ads running globally across Google's platforms.
Get Started
Sign up free and start researching Google ads.
Documentation: /docs/api-reference/google-ad-library/company-ads
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.