If you do competitive ad research, your morning probably looks like this: open the Google Ads Transparency Center, search the brand, screenshot a few creatives... then open the LinkedIn Ad Library, search the same brand again, and try to line the two up in a spreadsheet.
Two tabs. Two search UIs. Two export formats (actually zero export formats — neither site has one).
I built an Apify actor that collapses this into a single normalized feed: Brand Ads Spy — Google + LinkedIn Ads in One Feed.
What it does
Give it a list of brand names or domains. It pulls, for each brand:
- Google Ads Transparency Center — every active creative (text, image, video), regions, first/last shown dates
- LinkedIn Ad Library — every ad, advertiser, format, paying entity, EU run dates
...and returns them in one dataset with a shared schema:
| Field | Meaning |
|---|---|
network |
google or linkedin
|
adId |
stable ID on that network |
advertiser |
advertiser / page name |
format |
text / image / video |
adText |
creative text where available |
firstShownAt / lastShownAt
|
date range the ad ran |
isNew |
first time this actor has seen this ad |
mediaUrls |
creative assets |
libraryUrl |
deep link back to the source library |
payer |
who paid (LinkedIn EU transparency data) |
No login, no proxies, no browser rendering — both legs are plain HTTP, so runs finish in seconds and cost stays at $1.20 per 1,000 ad results.
Monitor mode: only pay for what's new
Set onlyNew: true and the actor remembers every ad ID it has seen (across both networks). The next run only emits — and only charges for — ads that appeared since last time. That turns it from a scraper into a change monitor: "tell me when my competitor launches a new campaign, on either network."
How to schedule it (the whole point)
Ad intelligence is only useful if it's fresh. On Apify:
- Open the actor page → Try for free
- Set your
brandslist andonlyNew: true - Save the task → Schedules → e.g.
0 7 * * *(every morning, 7 AM) - Add an integration (Slack, email, webhook) so new ads land where you work
Every morning you get a diff of your competitors' ad activity across Google and LinkedIn — without opening either library.
Why cross-network matters
B2B brands stage campaigns differently per channel: LinkedIn gets the expensive lead-gen creative first, Google gets the retargeting variants a week later (or the reverse). Seeing one network gives you half the story; the interesting signal is in the gap between them — a brand live on LinkedIn but dark on Google is usually mid-launch.
If you only need the Google side, the standalone Google Ads Transparency Scraper is $0.64/1k.
Questions or feature requests — comments are open, and reviews on the actor page genuinely help a small builder. 🙏
Top comments (0)