Ads Presence Unified Lookup: Google/LinkedIn/Meta from $16/1k
Pricing
from $12.16 / 1,000 ad presence checked (found on at least one platform)s
Ads Presence Unified Lookup: Google/LinkedIn/Meta from $16/1k
Is this company running ads anywhere? One domain or name in, one row out: Google, LinkedIn, Meta, Microsoft and Snapchat ad libraries checked at once. Never charged for a company with no ads on any checked platform.
Pricing
from $12.16 / 1,000 ad presence checked (found on at least one platform)s
Rating
0.0
(0)
Developer
Adriana Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
18 hours ago
Last modified
Categories
Share
Ads Presence Unified Lookup: Google, LinkedIn, Meta, Microsoft & Snapchat Ads for One Company
You give this actor a list of company domains or names. For each one, it checks the Google Ads
Transparency Center, the LinkedIn Ad Library, Meta's official Ad Library API, Microsoft's
Advertising Ad Library, and Snapchat's Ads Library at once, and
returns a single row answering "is this company advertising, and where" — which platforms it's
active on, roughly how many ads, how recently, and a handful of sample ad URLs to click through
and verify by eye. It's a composite of this portfolio's own five single-platform actors
(google-ads-presence-lookup, linkedin-ads-presence-lookup,
meta-ads-presence-lookup, microsoft-ads-presence-lookup, snapchat-ads-presence-lookup), fanned
out and billed as one flat charge per company instead of five separate ones.
Who it's for
You're building or cleaning an outbound list and want one column that answers "is this prospect already running paid ads anywhere" — a company that's actively buying ads on Google, LinkedIn, Meta, Microsoft or Snapchat is a company with an ad budget and (usually) a marketing team already running campaigns, which changes how you'd pitch a marketing, creative, or ad-tech tool to them. You're also useful to a media buyer or competitive-intelligence analyst who wants a fast triage pass across a competitor list before going deep on any one of them with the single-platform actors, and to an agency doing prospecting who wants to filter out companies that already have an agency or in-house team clearly running paid media. This isn't a bulk creative export — for that, see the five single-platform actors below, each of which returns the full sample-ad detail for its one platform. This is the fast, cheap "which of these 500 domains are worth a closer look" pass.
Why this one
- Five ad platforms, one row, one price. Instead of running five actors and joining the
results yourself, this fans out to all five ad libraries per company and folds them into one
flat row —
anyAds,platformsActive, and per-platform found/count fields — charged once, not five times. See "Price" below for exactly what "once" costs. Microsoft and Snapchat were added under the same flatads-presence-checkevent: the price did not go up. - Never charged for a company that isn't advertising. If none of the checked platforms show an
ad, the row still comes back (
anyAds: false) explaining why on each platform, and costs nothing. - Degrades gracefully instead of failing. Meta's Ad Library API needs your own access token
(see the FAQ) — without one,
metaAdsFoundcomes backfalsewith a plain-English reason, not an error, and Google and LinkedIn still run normally. Same for a rate limit or a blocked request on any platform: a per-platform miss never fails the row or the other two platforms. - Turn off any platform you don't need. "Check Google Ads" / "Check LinkedIn Ads" / "Check Meta
Ads" / "Check Microsoft Ads" / "Check Snapchat Ads" in the Input tab are on by default; turning
one off skips it entirely for every row in the run — useful if you only have a Meta token, or
only care about B2B (LinkedIn) presence. Microsoft and Snapchat share one "EU market"
(
adsMarket, default DE). - Sample ad URLs to verify by eye. Up to 3 URLs per active platform (Google Ads Transparency
Center pages, LinkedIn Ad Library detail pages, Meta Ad Library snapshot URLs) so you're never
taking the
true/falseon faith.
What you get
One row per company. The platform blocks are independent — a null on any found/count/
reason field means that platform wasn't checked this run (see the checkboxes above), not that it
returned zero.
| Field | Type | Description |
|---|---|---|
query | text | The domain or company name you submitted |
found | boolean | Same as anyAds below — true if at least one checked platform found ads. This is what's billed. |
status | text | OK if any platform found ads; NOT_FOUND if none did |
message | text | Plain-English summary of what each checked platform reported — only present when found is false |
advertiserName | text | Best-matching advertiser/page name, from whichever platform matched first (Google, then LinkedIn, then Meta) |
googleAdsFound | boolean/null | true/false if Google was checked; null if "Check Google Ads" was off |
googleAdsCount | number/null | Estimated total ads in the Google Ads Transparency Center for the matched advertiser |
googleAdsLast30Days | number/null | Estimated Google ads shown in the last 30 days |
googleAdsReason | text/null | Why Google came back not-found or unchecked; null when found |
linkedinAdsFound | boolean/null | true/false if LinkedIn was checked; null if "Check LinkedIn Ads" was off |
linkedinAdsCount | number/null | Ads currently in the LinkedIn Ad Library for the matched advertiser |
linkedinAdsReason | text/null | Why LinkedIn came back not-found or unchecked; null when found |
metaAdsFound | boolean/null | true/false if Meta was checked; null if "Check Meta Ads" was off |
metaAdsCount | number/null | Active Meta ads found, capped at 50 (Meta's own per-request sample size) |
metaAdsReason | text/null | Why Meta came back not-found or unchecked — most commonly "no access token supplied" |
microsoftAdsFound | boolean/null | true/false if Microsoft was checked; null if "Check Microsoft Ads" was off |
microsoftAdsCount | number/null | Ads in the queried EU/EEA market for the matched Microsoft advertiser |
microsoftAdsSampleUrl | text/null | Destination URL from the first sample Microsoft ad |
microsoftAdsReason | text/null | Why Microsoft came back not-found or unchecked; null when found |
snapchatAdsFound | boolean/null | true/false if Snapchat was checked; null if "Check Snapchat Ads" was off |
snapchatAdsCount | number/null | Ads in this Snapchat sample page (not a true total) |
snapchatAdsImpressionsTotal | number/null | Sum of impressions_total across the Snapchat sample |
snapchatAdsReason | text/null | Why Snapchat came back not-found, unchecked, or RATE_LIMITED |
anyAds | boolean | true if at least one checked platform found ads for this company |
platformsActive | array | Which of google, linkedin, meta, microsoft, snapchat actually had ads (subset of what was checked) |
sampleAdUrls | array | Up to 3 sample ad/library URLs per active platform, combined into one list |
scrapedAt | ISO 8601 datetime | When the check ran |
Deselect any field in the Input tab's "Which columns do you want?" picker to drop it from every row — this changes what's returned, not what's billed, since the price is flat per company either way.
Price
- Ad presence checked (found on at least one platform): $16 per 1,000 company domains or names
Plus a $0.001 (from 2 November 2026) start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.
1,000 companies through this actor: ~$16 if every one is found running ads somewhere ($0.016 per found row, plus a $0.001 (from 2 November 2026) actor-start charge), less if some aren't. That's roughly the sum of what the original three single-platform actors would charge separately for the same company (google-ads-presence-lookup $0.003, linkedin-ads-presence-lookup $0.012, meta-ads-presence-lookup $0.003 — $0.018 combined) minus a 10% bundle discount for buying them at once. Microsoft and Snapchat fold into that same flat charge — the price did not change when they were added. A company running ads on all five costs exactly the same as one running ads on only one. A company with no ads on any checked platform is never billed at all.
How to use
- In the Apify Console. Open the actor page and click Start — the
domainsfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~ads-presence-unified-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"domains":["hubspot.com","notion.com","a-company-that-almost-certainly-runs-no-ads.example"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
- If you have your own Meta Ad Library API access token, paste it into "Your Meta Ad Library API access token" at the top of the Input tab — without it, Meta is skipped gracefully on every row (see the FAQ).
- Leave "Try it first" on for your first run to see the output shape on 5 companies before spending on the full list.
- Turn off "Check Google Ads" / "Check LinkedIn Ads" / "Check Meta Ads" / "Check Microsoft Ads" /
"Check Snapchat Ads" for any platform you don't need — this doesn't change the price of a found
row, but it does mean one less request per company (faster, and one fewer thing that can come
back
BLOCKED). Microsoft and Snapchat shareadsMarket(default DE).
Input
{"domains": ["hubspot.com","notion.com","a-company-that-almost-certainly-runs-no-ads.example"]}
One domain or company name per line. Each is checked against Google Ads Transparency Center, the LinkedIn Ad Library, Meta's Ad Library API, Microsoft's Advertising Ad Library, and Snapchat's Ads Library, and comes back as one row. Accepted formats: nike.com, https://www.nike.com/gb/, Nike, Inc..
A bare domain works best for Google (which has a real domain filter); LinkedIn, Meta, Microsoft
and Snapchat have no domain filter at all, so a domain input is turned into a best-effort
brand-name guess for those four (stripping www. and the TLD — "nike.com" becomes the search
term "nike"). A company name ("Nike, Inc.") works for all five and is generally more reliable
for LinkedIn, Meta, Microsoft and Snapchat.
Sample output
| query | found | status | advertiserName | googleAdsFound | googleAdsCount | googleAdsLast30Days | googleAdsReason | linkedinAdsFound | linkedinAdsCount | linkedinAdsReason | metaAdsFound | metaAdsCount | metaAdsReason | microsoftAdsFound | microsoftAdsCount | microsoftAdsSampleUrl | microsoftAdsReason | snapchatAdsFound | snapchatAdsCount | snapchatAdsImpressionsTotal | snapchatAdsReason | anyAds | platformsActive | sampleAdUrls | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hubspot.com | true | OK | Hubspot, Inc. | true | 4000 | 2000 | true | 2533 | false | No Meta Ad Library API access token supplied — provide your own to check Meta. | true | 623 | https://www.hubspot.jp/pa/ma-gg0023 | false | No Snapchat ads were found for this paying advertiser name in the selected countries and date range. Try the exact name Snap shows as the paying advertiser, a wider date range, or another country. | true | ["google","linkedin","microsoft"] | ["https://adstransparency.google.com/advertiser/AR10072600183532683265/creative/CR12569247845015617537?region=anywhere","https://adstransparency.google.com/advertiser/AR10072600183532683265/creativ... | 2026-10-05T06:10:13.989Z |
A company with no ads found on any checked platform gets a row with found: false,
anyAds: falsemessage summarizing what each platform reported — and is never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~ads-presence-unified-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"domains":["hubspot.com","notion.com","a-company-that-almost-certainly-runs-no-ads.example"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~ads-presence-unified-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"domains":["hubspot.com","notion.com","a-company-that-almost-certainly-runs-no-ads.example"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~ads-presence-unified-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"domains":["{{company domain or name}}"]}, mapping the row's company domain or name into the domains array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Ad Library Checker: Google, LinkedIn, Meta, Bing & Snap" — the agent will find and run this actor.
Typical uses: adding an "already running ads?" column to a Clay prospect table before a marketing- or ad-tech-tool outreach sequence, a weekly n8n workflow that re-checks a target-account list and flags newly-active advertisers, or an AI agent qualifying a lead list by ad spend signal before handing it to a sales rep.
Tips
- Leave all five platforms on for the first pass over a new list — you can always narrow to one platform later once you know which one matters for your use case.
- If you only care about B2B accounts, "Check LinkedIn Ads" alone (with Google and Meta off) is the fastest and cheapest way to run this actor, since it skips the Google RPC and Meta API requests entirely.
- Without a Meta access token,
metaAdsFoundis alwaysnull(not checked) rather thanfalse— that's expected, not a bug; see the FAQ for how to add one. sampleAdUrlslinks straight to each platform's own ad library page — worth a quick manual click-through before you act on atrue, especially for a brand-name (not domain) input where the match is a best-effort text search rather than a verified identity.- Domains match Google reliably; for LinkedIn and Meta, a company name ("Nike, Inc.") is more reliable than a bare domain, since neither has a real domain filter.
vs. alternatives
| What it costs | What you get | Trade-off | |
|---|---|---|---|
This actor (ads-presence-unified-lookup) | $0.016 per found row (same as before Microsoft/Snapchat were added), $0.001 (from 2 November 2026) actor start, nothing for a miss | One row per company: Google, LinkedIn, Meta, Microsoft and Snapchat ad presence, counts, recency, and sample URLs, checked live on every run | Presence and rough volume, not a full creative export — for that, run the single-platform actor for the one you care about |
google-ads-presence-lookup + linkedin-ads-presence-lookup + meta-ads-presence-lookup (this portfolio, run separately) | $0.003 + $0.012 + $0.003 = $0.018 per company found on all three, billed as three separate events | The same three platforms' full single-platform detail (image/text/video breakdown, verified/legal name, ad-type mix) — more depth per platform | Three actors to run and join yourself, and no bundle discount |
| PowerAdSpy (checked 2026-09) | $69–$399/month subscription, tiered by network | Facebook, Instagram, Google PPC and YouTube on every tier; LinkedIn only unlocks on the $399/mo Palladium tier | A real ad-creative library across many networks, but LinkedIn coverage costs 6x the entry price, and it's a seat-based monthly tool, not a pay-per-row API you can call from a workflow |
| Doing it yourself | Your time + reverse-engineering three different transports (Google's internal RPC, LinkedIn's Cloudflare-fronted HTML behind a residential-grade proxy requirement, Meta's official API auth flow), then joining three result sets per company | The same data | The per-platform quirks (LinkedIn needs Apify's UNBLOCKER proxy group specifically — see that actor's own notes — Google's RPC needs an undocumented client-context blob, Meta needs your own app token) are exactly what this actor absorbs |
Prices for third-party tools are their published list prices as of September 2026 and are not tracked here — check the vendor before relying on the comparison.
FAQ
Do I need a Meta Ad Library API access token?
Only if you want Meta results. Apply for one at
developers.facebook.com/docs/graph-api/reference/ads_archive and paste it into the Input tab —
it's never shipped, stored, or logged by this actor, only sent as a request parameter on your own
runs. Without one, metaAdsFound comes back null for every row (not checked), and Google and
LinkedIn still run normally.
Why is metaAdsFound false even outside the EU/UK when I know a company runs Facebook ads?
Meta's official Ad Library API only covers ordinary commercial ads inside the EU/UK; everywhere
else, it's restricted to political and issue ads. This is Meta's own API restriction, not a bug
here — see meta-ads-presence-lookup's README for the full explanation. If you specifically need
Meta commercial-ad coverage outside the EU/UK, this actor can't provide it (no actor legitimately
can without violating Meta's terms).
Am I charged for a company with no ads found?
No. found/anyAds is false and the row explains why on each checked platform, and
Actor.charge() is never called for that row.
What's the difference between null and false on googleAdsFound (or linkedin/meta/microsoft/snapchat)?
false means that platform was checked and found nothing. null means that platform wasn't
checked this run at all — either because you turned its checkbox off, or (Meta only) because no
access token was supplied. Check the matching ...Reason field for the specific explanation
either way.
Does turning off a platform change the price?
No — the price is one flat charge per company with anyAds: true, regardless of how many
platforms were checked or how many came back positive. Turning off a platform you don't need saves
time (fewer requests per company) and reduces what can come back BLOCKED, not money.
Do I need to configure proxies? No. Google and LinkedIn each use a specific Apify proxy group internally (RESIDENTIAL and UNBLOCKER respectively — LinkedIn requires UNBLOCKER specifically, see linkedin-ads-presence-lookup's own notes on why), baked in and not buyer-configurable. Meta, Microsoft and Snapchat call their official APIs directly with no proxy at all.
What does a Snapchat RATE_LIMITED reason mean?
Snap's own EU ads repository is often unavailable. This actor retries automatically (up to twice);
if Snap still returns HTTP 429, snapchatAdsFound is false with a RATE_LIMITED reason — that
is distinct from a genuine no-ads miss, never fails the row, and is never charged.
Is this a live check or a stored database? Live, on every run — there's no cached snapshot behind any of the five platforms. A company that starts or stops running ads shows up differently the next time you check it.
Should I use this instead of the five single-platform actors? Use this one for a fast "which of these companies are advertising anywhere" triage pass across a list. Once you've narrowed to a handful of companies you want the full picture on — every sample ad, image/text/video breakdown, verified advertiser identity — run the matching single-platform actor(s) for the depth this one deliberately leaves out.
Can I schedule this to re-check the same list on a cadence? Yes — set up an Apify Task with a schedule (daily, weekly, whatever cadence fits) and point it at this actor with a saved input.
Can an AI agent call this directly? Yes. It's registered on the Apify MCP server — an agent in Claude, Cursor, or another MCP client can find and run it by name, or call the REST endpoint shown above from any script or workflow tool.
Related actors
- Google Ads Presence Lookup — the full single-platform Google Ads Transparency Center detail: image/text/video ad breakdown, verified advertiser identity, legal name, and monitoring mode.
- LinkedIn Ads Presence Lookup — the full single-platform LinkedIn Ad Library detail, plus monitoring mode.
- Meta Ads Presence Lookup — the full single-platform Meta Ad Library API detail, including EU reach data.
- Microsoft Ad Library Lookup — the full single-platform Microsoft Advertising Ad Library detail (EU DSA repository).
- Snapchat Ads Library Lookup — the full single-platform Snapchat Ads Library detail, including impressions.
- Company Domain Enrichment — broader firmographic and technical enrichment (registration, DNS, tech stack, hiring signal) for the same domain.