Google Ads Transparency Scraper + LinkedIn Ad Library API avatar

Google Ads Transparency Scraper + LinkedIn Ad Library API

Under maintenance

Pricing

$1.00 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper + LinkedIn Ad Library API

Google Ads Transparency Scraper + LinkedIn Ad Library API

Under maintenance

Scrape any competitor's ads from the Google Ads Transparency Center (Search, Display, YouTube) and the LinkedIn Ad Library: advertiser, format, ad text, image/video, first and last shown, days running, regions. Search by name, domain or advertiser ID. No login, no browser. $1 per 1,000 ads.

Pricing

$1.00 / 1,000 ads

Rating

0.0

(0)

Developer

John Vedovino II

John Vedovino II

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Competitor Ad Library Scraper — Google Ads Transparency + LinkedIn

Every ad your competitors run on Google (Search, Display, YouTube) and LinkedIn, pulled from the public ad-transparency libraries: advertiser, format, ad text, headline, image or video, first and last shown, days running, and the regions it ran in. Search by company name, domain or Google advertiser id. Plain HTTP: no browser, no login, no API key. $1 per 1,000 ads.

Why it is cheap

Google's Ads Transparency Center loads its results from its own JSON endpoints, and LinkedIn's Ad Library is server-rendered HTML. This Actor calls those directly, so it never starts a headless browser and never chains other Actors. One request returns up to 40 Google ads or about 24 LinkedIn ads.

What you get

FieldSourceNotes
competitorbothThe input line this row came from.
sourcebothgoogle or linkedin.
advertiser, advertiserIdbothGoogle's id looks like AR….
creativeId / adIdgoogle / linkedinStable ad id.
formatbothGoogle: text · image · video. LinkedIn: e.g. Single Image Ad, Video Ad.
firstShown, lastShown, daysRunninggoogledaysRunning is the quickest signal of a winning ad: advertisers stop paying for ads that lose.
regions[]google, with details onEach region the ad ran in and the last date it ran there.
adText, headline, adTextTruncatedlinkedinadTextFull adds the untruncated text when details are on.
imageUrl(s), previewUrlbothCreative image, or the video preview.
adUrlbothThe ad's own page in the public library.
advertiserUrl, paidBylinkedin, with details onThe advertiser's LinkedIn page and its "Paid for by" entity.

A real record

From a live run on 2026-10-04 (input Salesforce, LinkedIn):

{
"competitor": "Salesforce",
"source": "linkedin",
"adId": "1630842716",
"advertiser": "Salesforce",
"format": "Single Image Ad",
"creativeType": "SPONSORED_STATUS_UPDATE",
"headline": "「Salesforceの営業はチーム戦。だから成長できる」。IT未経験から常務執行役員になったリーダーのキャリア論",
"adTextTruncated": true,
"adUrl": "https://www.linkedin.com/ad-library/detail/1630842716"
}

And a Google row from the same day (input hubspot.com, region US, details on): format text, firstShown 2026-07-31, lastShown 2026-10-04, daysRunning 66, run in 6 regions.

How to use it

  • Competitor swipe file: list 5–20 competitors, run weekly, sort by daysRunning — the long-running ads are the ones that pay.
  • New-campaign alert: schedule daily and diff creativeId / adId against yesterday's dataset.
  • Agency pitch deck: one run per prospect's top three competitors, exported to CSV.
  • n8n / Make / Zapier: call the run-sync endpoint and read the dataset.

Inputs

InputDefaultNotes
competitors["hubspot.com"]One per line: a domain (hubspot.com), a company name (Salesforce) or a Google advertiser id (AR…). Up to 50.
sourcesgoogleAdd linkedin together with a RESIDENTIAL proxy (see Limits).
maxAdsPerSource40Caps rows and cost per competitor per library.
googleRegionanywhereISO country code such as US or GB.
linkedinCountries, linkedinDateOptionall, anyLinkedIn's own filters.
linkedinExactAdvertisertrueKeeps only ads whose advertiser name contains the competitor's name. LinkedIn's search is loose without it.
includeDetailsfalseOne extra request per ad: Google regions, full LinkedIn text, paid-by. Slower.
proxyConfigurationoffNeeded for LinkedIn (RESIDENTIAL group); for Google only if the log says blocked.

Pricing (pay per event)

EventPrice
Ad pushed to the dataset$0.001 each — $1 per 1,000 ads

No start fee. Searches that fail, are blocked or find nothing are not charged. Example: 10 competitors × 40 Google ads = 400 ads = $0.40.

Limits, stated plainly

  • Meta (Facebook/Instagram) is not covered. Meta's Ad Library API needs a token tied to an identity-verified Facebook account, and its web page is a JavaScript app. It is left out rather than done badly.
  • LinkedIn refuses Apify's datacenter IPs. From the platform, LinkedIn answered HTTP 403 both with no proxy and with the datacenter proxy (tested 2026-10-04); from a home connection it answers normally. Use the RESIDENTIAL proxy group for LinkedIn; residential proxy traffic is billed by Apify on top of the per-ad price. A blocked LinkedIn search is logged and not charged.
  • Google rate-limits by IP. Requests are paced at least 3 seconds apart per site and that cannot be changed, but Google still returns HTTP 429 to an address that has made many searches. When it does, that search is logged blocked, is not charged, and the Actor moves on. Turn on the proxy input for big runs.
  • A domain search on Google returns ads that point at that domain, which can include resellers and affiliates. Search by company name or advertiser id to get only the brand's own ads.
  • Both libraries can change their format without notice. Every field is read defensively (a change gives null, not a crash) and the parsers are tested against pinned fixtures from the 2026-10-04 live responses.
  • These are public transparency libraries, but each platform has its own terms on reuse of the data. Check them before you resell it.

More Actors by johnveds15

Same pay-per-result pricing, same JSON/CSV output, no login needed: