Facebook Ads Advertiser Leads - Businesses Running Meta Ads
Pricing
from $3.50 / 1,000 saved leads
Facebook Ads Advertiser Leads - Businesses Running Meta Ads
Find businesses that run Facebook and Instagram ads now. Search the Meta Ad Library by niche and get each advertiser's website, email, phone, WhatsApp, address, social profiles, website platform and ad activity. No login. Export JSON, CSV or Excel.
Pricing
from $3.50 / 1,000 saved leads
Rating
0.0
(0)
Developer
Harish Garg
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
17 days ago
Last modified
Categories
Share
Find businesses that run Facebook and Instagram ads right now, and get their website, email, phone, WhatsApp, address and social profiles, plus how they advertise. Enter a niche such as roofing, dentist or skincare. The Actor searches the Facebook Ad Library, groups the ads by advertiser and visits each advertiser's website to find their public business contacts.
These are not cold leads from a directory. Every business in the list pays for ads today, so it has a marketing budget and wants new customers.
No Facebook account. No login. No coding needed. Run it in Apify Console, call it from the API or from Claude and ChatGPT, schedule it every week, and send the leads to your CRM with Apify integrations.
What does Facebook Ads Advertiser Leads do?
- Finds active advertisers — searches the Meta Ad Library by keyword in any country and keeps one row per business.
- Finds the website — reads the landing pages of the ads, removes tracking links and skips marketplaces such as Amazon, directories such as Thumbtack, and link pages such as Linktree.
- Finds the contacts — visits the home page and the contact, about, imprint and location pages of the website, and reads the email, phone, address, business name and social profiles that the business publishes.
- Shows the ad activity — number of active ads, new ads in the last 30 days, how long the business has advertised, video ads, platforms and calls to action.
- Shows how to reach them — WhatsApp numbers and the contact channels the ads use: website, Messenger, WhatsApp, Instagram, phone call or lead form.
- Shows the website platform — Shopify, WordPress, WooCommerce, Wix, Squarespace, Webflow, GoHighLevel and more.
- Skips big brands — advertisers with more than 1,000,000 page likes are left out by default.
Who uses Facebook ad leads?
- Marketing agencies — find local businesses that already spend on Facebook ads and offer them better ads, landing pages or management.
- Ad creative and video producers — find brands that run many ads and need new creatives every month.
- Shopify app and e-commerce service sellers — find Shopify stores that advertise in your niche.
- SaaS sales teams — find businesses that use lead forms, call buttons or Messenger ads, and sell them CRM, call tracking or chat tools.
- Lead generation and appointment setting — build a fresh list of active businesses in a city, state or country, on a schedule.
- Market research — see who advertises in a niche, how much and on which platforms.
How to use Facebook Ads Advertiser Leads
You can run the Actor in five ways. All examples below use the same input: 10 roofing advertisers in the United States, kept only when they have an email or a phone.
In Apify Console (no code)
- Open the Actor page and click Try for free.
- Enter one or more Search keywords for your niche, for example
roofing,med spaorsolar panels. - Select the Country.
- Set Maximum advertisers per search, for example
10for a first test. - Optional: set Only leads with contact data to Only leads with an email or a phone.
- Click Start.
- When the run finishes, open the Output tab, or download the leads as CSV, Excel, JSON or HTML.
To get new leads every week, open the Actor and click Schedule. Use Exclude websites to skip leads that you already have.
With the Apify API (HTTP)
Get your API token in Apify Console under Settings > API & Integrations. This request starts a run, waits for it to finish and returns the leads as JSON:
curl -X POST "https://api.apify.com/v2/acts/hgservices~facebook-ads-advertiser-leads/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["roofing"],"country": "US","maxAdvertisersPerSearch": 10,"requireContact": "email_or_phone"}'
The synchronous endpoint waits up to 300 seconds. For large runs, start the run with the /runs endpoint and read the dataset when the run finishes. See the API tab for all endpoints.
With the JavaScript client
Install the client with npm install apify-client, then run:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });// Start the Actor and wait for it to finish.const run = await client.actor('hgservices/facebook-ads-advertiser-leads').call({searchQueries: ['roofing'],country: 'US',maxAdvertisersPerSearch: 10,requireContact: 'email_or_phone',});// Read the leads from the run's dataset.const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const lead of items) {console.log(lead.pageName, lead.websiteUrl, lead.primaryEmail, lead.primaryPhone);}
With the Python client
Install the client with pip install apify-client, then run:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])# Start the Actor and wait for it to finish.run = client.actor('hgservices/facebook-ads-advertiser-leads').call(run_input={'searchQueries': ['roofing'],'country': 'US','maxAdvertisersPerSearch': 10,'requireContact': 'email_or_phone',})# Read the leads from the run's dataset.for lead in client.dataset(run.default_dataset_id).iterate_items():print(lead['pageName'], lead['websiteUrl'], lead['primaryEmail'], lead['primaryPhone'])
This example is for apify-client version 2 or later. In version 1, call() returns a dictionary, so use run['defaultDatasetId'].
With Claude, ChatGPT and other AI assistants (MCP)
The Apify MCP server lets AI assistants find and run Apify Actors. Connect it once, then ask for leads in plain language. You sign in to Apify in your browser the first time. You do not need to copy an API token.
Claude (claude.ai and Claude Desktop)
- Open Settings > Connectors and click Add custom connector.
- Enter the URL
https://mcp.apify.comand click Add. - Sign in to Apify and approve the access.
Claude Code
$claude mcp add --transport http apify https://mcp.apify.com
Then run /mcp in Claude Code and sign in to Apify.
ChatGPT
- Turn on Developer mode in ChatGPT settings.
- Open Settings > Apps & Connectors and click Create.
- Enter a name such as
Apify, the MCP server URLhttps://mcp.apify.com, and select OAuth authentication. - Click Create and sign in to Apify.
- In a new chat, click +, select More, and add the Apify connector.
Cursor, VS Code and other MCP clients
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Example prompt
Use the Apify Actor hgservices/facebook-ads-advertiser-leads to find 10 roofing companies in the US that run Facebook ads and have an email or a phone. Show the company name, website, email and phone in a table.
The assistant runs the Actor and reads the leads from the dataset. To give the assistant only this Actor as a tool, use the server URL https://mcp.apify.com?tools=hgservices/facebook-ads-advertiser-leads.
Input
| Field | Description | Default |
|---|---|---|
searchQueries | Keywords that the ads contain. Each keyword is one search. | roofing |
adLibraryUrls | Keyword search URLs from facebook.com/ads/library. | — |
exactPhrase | Find only ads with the words in this order. | false |
country | Two-letter country code, or ALL. | US |
languages | Ad languages, for example en, es. Empty means all. | all |
platforms | facebook, instagram, messenger, audience_network, threads, whatsapp. Empty means all. | all |
sortBy | impressions (biggest spenders first) or newest. | impressions |
maxAdvertisersPerSearch | Stop each search after this many new advertisers. | 50 |
maxAdsPerSearch | Stop each search after this many ads. | 1000 |
maxPageLikes | Skip advertisers with more page likes. 0 keeps all. | 1000000 |
minAdsFound | Keep only advertisers with at least this many active ads in the results. | 1 |
requireWebsite | Keep only advertisers with a website. | false |
requireContact | none, email, phone or email_or_phone. | none |
excludeDomains | Skip advertisers with these websites, for example your clients. | — |
crawlWebsites | Visit the websites to find contacts. | true |
maxPagesPerWebsite | Pages to read on each website. | 5 |
onlyRoleEmails | Keep only company emails such as info@ and sales@. | false |
Input example
Dentists and med spas in the United States that advertise on Instagram, with an email or a phone:
{"searchQueries": ["dentist", "med spa"],"country": "US","platforms": ["instagram"],"maxAdvertisersPerSearch": 200,"requireContact": "email_or_phone"}
Output
Each lead is one advertiser. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The Output tab has three views: Leads, Contacts and Ad activity.
{"pageName": "Gator Metal Roofing","businessName": "Gator Metal Roofing","websiteUrl": "https://gatormetalroofing.com/","websiteDomain": "roofs.gatormetalroofing.com","websiteStatus": "ok","primaryEmail": "info@gatormetalroofing.com","emails": ["info@gatormetalroofing.com", "infos@gatormetalroofing.com"],"roleEmails": ["info@gatormetalroofing.com"],"primaryPhone": "+18882022711","phones": ["+18882022711"],"whatsappNumbers": [],"address": "140 Spaceway Ct. #125, Garner, NC 27529, US","socials": {"facebook": "https://www.facebook.com/gatorhomeprofessionals","instagram": "https://www.instagram.com/gatormetalroofing","youtube": "https://www.youtube.com/channel/UCFtKivhs4-2or5YUgn2aYVQ"},"contactChannels": ["website"],"hasContactForm": false,"websitePlatform": "wordpress","websiteTitle": "Roofing, Windows & Doors for The Carolinas | (888) 202-2711","pageId": "111445424455372","facebookUrl": "https://www.facebook.com/gatorhomeprofessionals/","adLibraryUrl": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&media_type=all&search_type=page&view_all_page_id=111445424455372","pageLikes": 1866,"pageCategories": ["business"],"adsFound": 1,"newAdsLast30Days": 0,"oldestAdStartDate": "2026-06-18T07:00:00.000Z","newestAdStartDate": "2026-06-18T07:00:00.000Z","longestRunningAdDays": 112,"videoAds": 0,"platforms": ["audience_network", "facebook", "instagram", "messenger", "threads"],"ctaTypes": ["LEARN_MORE"],"sampleAdText": "Think a metal roof is out of reach?\n\nIt may be more affordable than you think...","sampleAdUrls": ["https://www.facebook.com/ads/library/?id=2229870087838367"],"landingUrls": ["https://roofs.gatormetalroofing.com/metalroofspringspecial"],"otherDomains": [],"profilePictureUrl": "https://api.apify.com/v2/key-value-stores/DNIsjP5JOE9dmgVKo/records/logo-111445424455372?signature=...","pagesCrawled": 5,"searchTerms": ["roofing"],"searchCountry": "US","scrapedAt": "2026-10-08T11:03:26.871Z"}
Data fields
| Field | Description |
|---|---|
pageName, businessName | Facebook page name, and the business name from the website. |
websiteUrl, websiteDomain, websiteTitle | The website most of the ads link to, and its page title. |
websiteStatus | ok, failed, no_website, not_crawled or blocked_by_robots. |
primaryEmail, emails, roleEmails | Public emails. Company emails on the website's own domain come first. |
primaryPhone, phones | Public phone numbers in international format when the country is known. |
whatsappNumbers | Numbers from WhatsApp links in the ads. |
address | Address from the website's structured data. |
socials | Instagram, Facebook, LinkedIn, TikTok, YouTube, X, Pinterest and Yelp profiles. |
contactChannels | How the ads ask people to get in touch. |
hasContactForm | The website has a contact form. |
websitePlatform | Shopify, WordPress, WooCommerce, Wix, Squarespace and more. |
pageId, pageLikes, pageCategories | The advertiser's Facebook page. |
profilePictureUrl | The advertiser's logo. The Actor saves a copy in the run's key-value store, because Facebook's image links expire after a few days. |
facebookUrl, adLibraryUrl | The Facebook page, and all its active ads in the Ad Library. |
adsFound | Active ads of the advertiser in the search results. |
newAdsLast30Days | Ads that started in the last 30 days. |
oldestAdStartDate, newestAdStartDate, longestRunningAdDays | When the ads started, and days since the oldest active ad started. |
platforms, ctaTypes, videoAds | Where the ads run, their buttons, and the number of video ads. |
sampleAdText, sampleAdUrls, landingUrls | Examples of the ads and their landing pages. |
otherDomains | Other websites that the ads link to. |
pagesCrawled | Website pages that the Actor read. |
searchTerms, searchCountry, scrapedAt | Which searches found the advertiser, and when. |
The SUMMARY record in the key-value store shows how many advertisers each search found, why advertisers were skipped, and how many websites loaded.
How many leads have an email or a phone?
We tested the Actor on US advertisers in October 2026. The results depend on the niche:
- About 70% of advertisers link their ads to their own website. The others use Messenger, WhatsApp, call buttons, lead forms or a marketplace.
- About 40% of all leads have an email, and about 50% have an email or a phone.
- Local services such as roofers and dentists often show a phone and a contact form, but no email.
- Online shops more often show an email such as support@ or hello@.
Use Only leads with contact data to keep only the leads you can contact.
Tips
- Use several keywords for one niche, for example
roofing,roof replacementandroof repair. Each advertiser appears only once. - Sort by newest to find businesses that started advertising recently.
- Set Minimum ads per advertiser to 3 or more to find businesses that spend more on ads.
- Lower Maximum page likes to 50,000 to find small and local businesses.
- Turn off Find contacts on websites for a fast list of advertisers and their ad activity only.
- Schedule the Actor every week and use Exclude websites to skip leads you already have.
FAQ
Is it legal to collect this data?
The Actor reads ads that Meta publishes in its public Ad Library, and contact data that businesses publish on their own websites. It does not log in and does not read private data. The Actor reads robots.txt and does not visit pages that robots.txt blocks.
Emails such as info@ or sales@ belong to companies. An email such as john@company.com can be personal data under the GDPR and similar laws. Turn on Only company emails to keep only company emails. You are responsible for how you use the data, including the rules for cold email and calls in your country. If you are not sure, ask a lawyer.
Why does a lead have no email?
Many small businesses show only a phone number and a contact form on their website. Some websites load their content with JavaScript or block automated visits. The websiteStatus field shows if the website loaded.
Why is adsFound lower than the number of ads in the Ad Library?
adsFound counts only the ads that matched your keywords. Open adLibraryUrl to see all active ads of the advertiser.
Can I get the ads themselves?
Yes. Use our Facebook Ads Library Scraper to get every ad with its text, images, videos and landing page.
I need a feature or found a problem
Open an issue in the Issues tab. We also build custom solutions.