Facebook Ads Advertiser Leads - Businesses Running Meta Ads avatar

Facebook Ads Advertiser Leads - Businesses Running Meta Ads

Pricing

from $3.50 / 1,000 saved leads

Go to Apify Store
Facebook Ads Advertiser Leads - Businesses Running Meta Ads

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

Harish Garg

Maintained by Community

Actor 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)

  1. Open the Actor page and click Try for free.
  2. Enter one or more Search keywords for your niche, for example roofing, med spa or solar panels.
  3. Select the Country.
  4. Set Maximum advertisers per search, for example 10 for a first test.
  5. Optional: set Only leads with contact data to Only leads with an email or a phone.
  6. Click Start.
  7. 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 os
from apify_client import ApifyClient
client = 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)

  1. Open Settings > Connectors and click Add custom connector.
  2. Enter the URL https://mcp.apify.com and click Add.
  3. 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

  1. Turn on Developer mode in ChatGPT settings.
  2. Open Settings > Apps & Connectors and click Create.
  3. Enter a name such as Apify, the MCP server URL https://mcp.apify.com, and select OAuth authentication.
  4. Click Create and sign in to Apify.
  5. 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

FieldDescriptionDefault
searchQueriesKeywords that the ads contain. Each keyword is one search.roofing
adLibraryUrlsKeyword search URLs from facebook.com/ads/library.—
exactPhraseFind only ads with the words in this order.false
countryTwo-letter country code, or ALL.US
languagesAd languages, for example en, es. Empty means all.all
platformsfacebook, instagram, messenger, audience_network, threads, whatsapp. Empty means all.all
sortByimpressions (biggest spenders first) or newest.impressions
maxAdvertisersPerSearchStop each search after this many new advertisers.50
maxAdsPerSearchStop each search after this many ads.1000
maxPageLikesSkip advertisers with more page likes. 0 keeps all.1000000
minAdsFoundKeep only advertisers with at least this many active ads in the results.1
requireWebsiteKeep only advertisers with a website.false
requireContactnone, email, phone or email_or_phone.none
excludeDomainsSkip advertisers with these websites, for example your clients.—
crawlWebsitesVisit the websites to find contacts.true
maxPagesPerWebsitePages to read on each website.5
onlyRoleEmailsKeep 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

FieldDescription
pageName, businessNameFacebook page name, and the business name from the website.
websiteUrl, websiteDomain, websiteTitleThe website most of the ads link to, and its page title.
websiteStatusok, failed, no_website, not_crawled or blocked_by_robots.
primaryEmail, emails, roleEmailsPublic emails. Company emails on the website's own domain come first.
primaryPhone, phonesPublic phone numbers in international format when the country is known.
whatsappNumbersNumbers from WhatsApp links in the ads.
addressAddress from the website's structured data.
socialsInstagram, Facebook, LinkedIn, TikTok, YouTube, X, Pinterest and Yelp profiles.
contactChannelsHow the ads ask people to get in touch.
hasContactFormThe website has a contact form.
websitePlatformShopify, WordPress, WooCommerce, Wix, Squarespace and more.
pageId, pageLikes, pageCategoriesThe advertiser's Facebook page.
profilePictureUrlThe 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, adLibraryUrlThe Facebook page, and all its active ads in the Ad Library.
adsFoundActive ads of the advertiser in the search results.
newAdsLast30DaysAds that started in the last 30 days.
oldestAdStartDate, newestAdStartDate, longestRunningAdDaysWhen the ads started, and days since the oldest active ad started.
platforms, ctaTypes, videoAdsWhere the ads run, their buttons, and the number of video ads.
sampleAdText, sampleAdUrls, landingUrlsExamples of the ads and their landing pages.
otherDomainsOther websites that the ads link to.
pagesCrawledWebsite pages that the Actor read.
searchTerms, searchCountry, scrapedAtWhich 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 replacement and roof 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

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.