Find the ads a brand is running
Find the ads run by the advertisers matching a brand or company name, or by an advertiser website when domain is given, across Google Search, YouTube, Shopping, Maps and Play. The query matches advertiser names, not the wording inside ads — Google publishes no searchable index of ad copy, so there is no full-text search over creative. The advertisers the query resolved to come back on matchedAdvertisers so you can confirm what it matched before trusting the ads. A name that matches nothing returns 404 rather than an empty list.
/search-ads Ads https://api.fetchlayer.dev/google-ad-library/search-ads Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
query string required Advertiser or brand name to find ads for. This matches advertiser names, not ad wording.
domain string optional Search by advertiser website instead of by name, for example nike.com.
advertiserLimit number optional How many matching advertisers to pull ads from (max 10). Raise it when a brand name resolves to several registered advertisers. (default: 1)
region string optional Two-letter country code, or ANYWHERE. (default: ANYWHERE)
regions string[] optional Several countries at once (max 20). Overrides region.
adFormat string optional text, image, or video. Google publishes one format per ad.
surfaces string[] optional Restrict to the Google surfaces the ad ran on: search, youtube, shopping, maps, play.
shownAfter string optional Only ads shown on or after this YYYY-MM-DD date.
shownBefore string optional Only ads shown on or before this YYYY-MM-DD date.
limit number optional Maximum ads returned (max 2000), or -1 for everything available. (default: 30)
pages number optional Pages of results to collect in one request (max 100), or -1 for the maximum allowed.
cursor string optional Resume from a previous response's nextCursor.
delayMs number optional Milliseconds to wait between pages (max 30000).
sortBy string optional first_shown, days_shown, or none.
sortDirection string optional asc or desc.
Response Fields
search-ads
Find the ads a brand is running
query string The name the search ran with.
matchedAdvertisers object[] The advertisers the query resolved to, with their ids, verified country and approximate ad counts. Check this before trusting the ads — a common brand name can resolve to the wrong registered advertiser.
ads object[] The matching ads.
ads[].adId string Ad id — the handle for ad-detail and ad-media, which also need the advertiserId.
ads[].adLibraryUrl string Public Google Ad Library permalink for this ad.
ads[].advertiserId string Advertiser running the ad.
ads[].advertiserName string Advertiser name as Google publishes it.
ads[].format string text, image, or video.
ads[].firstShownDate string First day the ad was seen, as YYYY-MM-DD.
ads[].daysShown number Days the ad was actually shown. Approximate, and lower than the span between its first and last day whenever the ad paused.
ads[].domain string The advertiser's website, when Google reports it.
ads[].regions object[] Countries the ad ran in with the last date seen in each. Populated on a single-ad lookup; empty on a listing.
ads[].variations object[] Each version of the creative. Google publishes ads as pictures of the rendered ad, not as separate headline and body text — see the note on ad-detail.
ads[].variationCount number How many creative versions the ad carries.
ads[].previewImageUrl string First picture of the ad across its versions, for a quick preview.
filters object The filters this request actually ran with, after defaults were applied.
adCount number Number of ads in this response.
approximateTotal object Roughly how many ads match in total, as a { min, max } range. Google publishes counts as ranges, never exact figures.
pagesScraped number Pages actually walked. Each page counts as one request against your plan.
pagesRequested number Pages the request asked for, which can exceed pagesScraped when the listing ran out.
nextCursor string Pass back as cursor to continue, or null when the listing is exhausted.
hasNextPage boolean Whether more results are available beyond this response.
notes string[] Caveats about this particular result — a walk that stopped short, or a listing that may be incomplete. Read it before treating a result set as the whole picture.
Request
curl -X POST "https://api.fetchlayer.dev/google-ad-library/search-ads" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"query":"Nike","region":"US","surfaces":["youtube","search"],"adFormat":"video","limit":30}'Response
{
"query": "Nike",
"adCount": 30,
"pagesScraped": 1,
"hasNextPage": true,
"approximateTotal": {
"min": 1000,
"max": 5000
},
"matchedAdvertisers": [
{
"advertiserId": "AR01234567890123456789",
"advertiserName": "Nike, Inc.",
"countryCode": "US",
"approximateAdCount": {
"min": 1000,
"max": 5000
}
}
],
"ads": [
{
"adId": "CR01234567890123456789",
"advertiserId": "AR01234567890123456789",
"advertiserName": "Nike, Inc.",
"format": "video",
"firstShownDate": "2026-07-14",
"daysShown": 48,
"domain": "nike.com",
"variationCount": 2
}
],
"notes": []
}