Google Ads Transparency & Meta Ads Scraper — No Login
Pricing
from $0.70 / 1,000 results
Google Ads Transparency & Meta Ads Scraper — No Login
Competitor ads from Google Ads Transparency Center and Meta Ad Library in one run. Brands, domains or advertiser IDs; bulk lists from CSV or Google Sheets; advertiser check mode for lead lists; new-ads monitor for schedules. No login or cookies. MCP-ready for AI agents.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Fortuitous Pirate
Maintained by CommunityActor stats
2
Bookmarked
373
Total users
8
Monthly active users
3 days ago
Last modified
Categories
Share
Google Ads Transparency & Meta Ad Library Scraper
See every ad a competitor runs on Google (Search, YouTube, Shopping, Maps, Play) and Meta (Facebook, Instagram, Messenger, Audience Network) in one run. No login, no cookies, no API key.
- Ads mode: one row per ad creative, with format, title and body, image and video URLs, landing page, CTA, first and last shown dates, days running, and the advertiser's name, country, verification and total ad count.
- Advertiser check mode: one row per company, saying whether it advertises on Google and on Meta, how many ads it has, which formats, and when its latest ad ran. Paste or import thousands of domains to qualify a lead list.
- Monitor mode: schedule it and get only the ads that are new since the last run, for competitor alerts in Slack, email or a sheet.
- Bulk input: brand names, domains, Google advertiser IDs (
AR...), Meta page IDs, or Transparency Center and Ad Library URLs, mixed freely, typed in or imported from a CSV, TXT or Google Sheet link.
What people use it for
| Use case | How |
|---|---|
| Competitor ad research | queries: ["competitor.com"], sources: ["google","meta"] |
| Agency prospecting: who is spending on ads? | mode: "advertiserCheck", listUrl: your sheet of prospect domains |
| Weekly competitor ad alerts | onlyNewAds: true, a monitorId, and an Apify schedule plus a Slack or email integration |
| Creative swipe files | format: "VIDEO" or "IMAGE", startDate for recent ads only |
| Market and geo research | region: "DE" (any two-letter code) to see what runs in one country |
Input examples
Competitor ads on both networks:
{ "queries": ["hubspot.com", "Salesforce"], "sources": ["google", "meta"], "maxAdsPerQuery": 50, "maxItems": 200 }
Qualify a lead list (one row per company and network):
{ "mode": "advertiserCheck", "listUrl": "https://docs.google.com/spreadsheets/d/<id>/edit", "sources": ["google", "meta"], "region": "US", "maxItems": 10000 }
New-ads monitor (schedule daily):
{ "queries": ["competitor-a.com", "competitor-b.com"], "sources": ["google", "meta"], "onlyNewAds": true, "monitorId": "my-competitors", "maxItems": 500 }
Set firstRunBaseline: true to have the first run record the current ads silently, and webhookUrl to get a POST with {monitorId, runId, newCount, ads} after every monitor run.
Existing integrations keep working: searchQuery, advertiserId, region, platform, format and maxItems behave as before.
Output
Ad row (recordType: "ad"):
{"recordType": "ad", "query": "nike.com", "source": "google","advertiserId": "AR16735076323512287233", "advertiserName": "Nike, Inc.", "advertiserCountry": "US", "advertiserVerified": null, "adCount": 10000,"creativeId": "CR...", "adFormat": "Image", "imageUrl": "https://tpc.googlesyndication.com/...", "previewUrl": "https://...","firstShownDate": "2025-10-24T15:10:23.000Z", "lastShownDate": "2026-10-21T06:56:02.000Z", "daysRunning": 361,"adUrl": "https://adstransparency.google.com/advertiser/AR.../creative/CR...", "isNew": null}
Meta ads add ctaText, publisherPlatforms (FACEBOOK, INSTAGRAM, ...), isActive, the ad's own title and body text, and the landing URL.
Advertiser check row (recordType: "advertiserCheck"):
{"recordType": "advertiserCheck", "query": "hubspot.com", "source": "google", "isAdvertising": true,"advertiserName": "Hubspot, Inc.", "adCount": 3000, "sampledAds": 40, "formats": ["Text", "Video", "Image"],"latestAdShown": "2026-10-21T06:58:17.000Z", "otherAdvertisers": [], "transparencyUrl": "https://adstransparency.google.com/?domain=hubspot.com®ion=US"}
A domain search on Google returns every advertiser account pointing ads at that domain (resellers and regional entities included); they are listed in otherAdvertisers.
Pricing
Pay per result: one row (an ad, or one company check) is one result. No platform usage charge on top. A monitor run only bills the new ads it returns.
Good to know
- Partial results are kept. If Google or Meta stops answering for one query, everything already collected is saved, the run continues with the next query, and the
OUTPUTrecord in the key-value store lists which queries failed. - Google text ads are shown by Google as rendered previews, so their headline and description are in
previewUrlrather than as text. Meta ads carry their text directly. - Meta catalog ads (format
Dpa) are product feeds; the row shows the first product. - Ad counts come from Google's own approximate figures. Meta does not publish a count, so
sampledAdsshows how many ads were seen (up to 40 per check). - Region codes follow ISO two-letter codes. Leave empty for all countries.
- The data is what Google and Meta publish in their public ad libraries. This tool is independent and not affiliated with either.
Integrations
Works with the Apify API, JavaScript and Python clients, schedules, webhooks, Make, Zapier, n8n, Slack, Google Sheets and the Apify MCP server for AI agents.