# WhatsApp Ad Scraper — Click-to-WhatsApp Meta Ads (`scrapeio/whatsapp-scraper-premium`) Actor

Scrape WhatsApp click-to-chat ads from Meta Ad Library. Search by keyword, Page ID, or URL. wa.me links, CTAs, spend estimates. Apify AI, MCP, Cursor ready.

- **URL**: https://apify.com/scrapeio/whatsapp-scraper-premium.md
- **Developed by:** [Shop Intel](https://apify.com/scrapeio) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 53 total users, 8 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$7.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## WhatsApp Ads Scraper – Extract Click‑to‑WhatsApp Ads from Meta Ad Library | Apify Actor

**WhatsApp Ads Scraper** extracts WhatsApp‑surface ads — including Click‑to‑WhatsApp campaigns — from the [Meta Ad Library](https://www.facebook.com/ads/library) by keyword, Facebook Page ID, or Ad Library URL, delivered as structured JSON or CSV.

### Use with Apify AI

[Apify AI](https://docs.apify.com/account/apify-ai) is live in Apify Console. Describe the job in plain English and it **finds this Actor, fills the input form, runs it, and returns the dataset**. The same ranking powers Store search and the [Apify MCP server](https://docs.apify.com/integrations/mcp) `search-actors` tool used by **Cursor**, Claude, ChatGPT, and other agents.

Use this Actor for **Click-to-WhatsApp** ads in Meta Ad Library (wa.me links, WhatsApp CTAs). Open [WhatsApp Ad Scraper](https://apify.com/scrapeio/whatsapp-scraper-premium) or ask Apify AI with the prompts below.

#### Prompts that match this Actor

Type these in the **Apify Store search bar** (long, intent-heavy queries route to Apify AI) or the dashboard **Ask Apify AI** widget:

- "Find Click-to-WhatsApp ads for insurance brands"
- "Scrape WhatsApp ads from Meta Ad Library by keyword"
- "Collect wa.me landing links and WhatsApp ad creatives for a Page ID"
- "Extract WhatsApp click-to-chat ads with spend estimates"
- "Get competitor WhatsApp ads from an Ad Library URL"

#### How Apify AI fills the input

| You say | This Actor sets |
|---|---|
| brand or topic | `keyword` |
| Facebook Page ID | `pageId` |
| Ad Library URL | `url` |
| how many ads | `maxResults` |

Apify AI always asks for confirmation before it runs. Nothing is charged until you approve.

#### Cursor, Claude, ChatGPT (Apify MCP)

Pin this Actor as a **default Cursor / MCP tool** so agents call `scrapeio/whatsapp-scraper-premium` instead of a random Store result. Keep `actors` + `docs` so Apify AI search still works, and list your suite so Cursor prefers these Actors.

**Cursor MCP URL (this Actor first):**

```text
https://mcp.apify.com?tools=actors,docs,scrapeio/whatsapp-scraper-premium,scrapeio/amazon-scraper,scrapeio/google-maps-scraper-advance,scrapeio/meta-facebook-ad-scrapper-using-ad-library-url-premium,scrapeio/instagram-scraper-premium,scrapeio/facebook-ad-library-suggestions,scrapeio/google-news-scraper
```

`.cursor/mcp.json` / Cursor Settings → MCP:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=actors,docs,scrapeio/whatsapp-scraper-premium,scrapeio/amazon-scraper,scrapeio/google-maps-scraper-advance,scrapeio/meta-facebook-ad-scrapper-using-ad-library-url-premium,scrapeio/instagram-scraper-premium,scrapeio/facebook-ad-library-suggestions,scrapeio/google-news-scraper"
    }
  }
}
```

Then: `search-actors` → `fetch-actor-details` → `call-actor` with `scrapeio/whatsapp-scraper-premium`. Example:

```text
Use scrapeio/whatsapp-scraper-premium to do this: scrape the data I described. Fill the input from my description and return the dataset.
```

### How to scrape WhatsApp ads

Use this **WhatsApp ad scraper** to collect Click-to-WhatsApp ads and wa.me links from Meta Ad Library by keyword or Page ID.

### WhatsApp ads scraper API for Cursor

Call `scrapeio/whatsapp-scraper-premium` from **Cursor** (Apify MCP), Claude, ChatGPT, the [Apify API](https://docs.apify.com/api/v2), Python (`apify-client`), or JavaScript. Apify AI uses the same ranking as Store search: title, description, README, and input/output schemas. This Actor is documented for that ranker — limited permissions, pay-per-event or compute (not rental), and a filled example input.

### 🧠 Overview

This **WhatsApp Ads Scraper** is an Apify Actor purpose‑built for brands, agencies, and researchers tracking the fast‑growing world of **Click‑to‑WhatsApp** and **WhatsApp Business** advertising. Search by keyword (e.g., `customer support`), Facebook Page ID, or a pre‑filtered Ad Library URL, and the Actor collects every ad where **WhatsApp is the reported publisher platform**. You get structured rows with **metadata, ad copy, timing, performance ranges, regional distribution, and demographics** — exported to the Apify Dataset and `OUTPUT` JSON. Ideal for **competitive intelligence on messaging ads**, **cross‑platform ad research**, **lead‑generation benchmarking**, and **conversational‑commerce monitoring** without Meta developer approval.

### ✨ Features

- **Extract** WhatsApp‑surface ads (Click‑to‑WhatsApp, WhatsApp Business campaigns) only — filtered at the API layer.
- **Search** by **keyword**, **Facebook Page ID**, or full **Meta Ad Library URL**.
- **Scrape** unlimited ads per run with no hard `maxResults` cap.
- **Capture** ad metadata: page name, ad archive ID, publisher platforms, and run status.
- **Harvest** ad creative details: copy, CTA, landing URL (deep link to `wa.me` or `api.whatsapp.com`), and media.
- **Track** performance ranges: impressions, spend ranges, and regional coverage (when Meta discloses).
- **Export** per‑ad Dataset + `OUTPUT` JSON (`summary` + `data.ads`) for automation.
- **Integrate** with n8n, Make, Zapier, Google Sheets, Airtable via Apify webhooks and REST API.
- **Monitor** `summary.status` (`SUCCESS` / `ERROR`) plus typed error objects for debuggable pipelines.
- **Skip** Meta's restricted Ad Library API — no dev app, no token lifecycle, no review process.

### 🎯 Use Cases

- **Click‑to‑WhatsApp Campaign Research:** Reverse‑engineer high‑performing conversational ads — copy, CTAs, and `wa.me` landing formats — from global brands.
- **Conversational‑Commerce Benchmarking:** Measure how fashion, fintech, travel, and D2C brands deploy WhatsApp ads across regions.
- **Competitive Intelligence for Agencies:** Track every WhatsApp ad your clients' competitors are running alongside their Facebook and Instagram creatives.
- **SaaS & Chatbot Vendor Outreach:** Identify brands running WhatsApp ads as sales prospects for chatbot, CRM, or conversational AI tools.
- **Regional Market Expansion:** Use `country=ALL` or per‑region URLs to discover brands running WhatsApp ads in India, Brazil, LATAM, and the Middle East.
- **Academic & Journalism Research:** Build public datasets of messaging‑platform ads for media transparency and regulatory reporting.

### ⚙️ Input Parameters

| Name | Type | Required | Description | Example |
|------|------|----------|-------------|---------|
| `keyword` | string | One of three | Brand or campaign search term. | `"customer support"` |
| `pageId` | string | One of three | Numeric Facebook Page ID. | `"15087023549"` |
| `url` | string | One of three | Full Meta / Facebook Ad Library URL. | `"https://www.facebook.com/ads/library/?q=support&ad_type=all"` |
| `maxResults` | integer | Yes | Target number of WhatsApp ads to collect. | `100` |

### 📤 Output Example (JSON)

```json
{
  "metadata": {
    "adArchiveId": "9876543210123456",
    "pageId": "15087023549",
    "pageName": "Acme Finance",
    "publisherPlatforms": ["WHATSAPP"]
  },
  "ad_content": {
    "body": "Chat with us on WhatsApp for instant loan approval.",
    "cta": "Send Message",
    "landingUrl": "https://wa.me/15551234567?text=I%20want%20a%20loan",
    "mediaUrls": ["https://scontent.../image.jpg"]
  },
  "timing": {
    "startDate": "2026-04-02",
    "endDate": null,
    "active": true
  },
  "performance": {
    "impressions": { "lowerBound": 10000, "upperBound": 15000 },
    "spend": { "lowerBound": 100, "upperBound": 499, "currency": "USD" }
  },
  "distribution": {
    "regions": ["IN", "AE", "SG"]
  }
}
```

### 📋 Output Data Schema

Every WhatsApp ad is returned as a structured object with these top‑level keys:

| Key | Type | Fields |
|---|---|---|
| `metadata` | object | `adArchiveId`, `pageId`, `pageName`, `publisherPlatforms` (always includes `WHATSAPP`) |
| `ad_content` | object | `body`, `title`, `cta`, `landingUrl` (typically `wa.me` / `api.whatsapp.com`), `mediaUrls[]` |
| `timing` | object | `startDate`, `endDate`, `active` |
| `performance` | object | `impressions.lowerBound`, `impressions.upperBound`, `spend.lowerBound`, `spend.upperBound`, `spend.currency` |
| `distribution` | object | `regions[]`, `demographics.ageRange`, `demographics.gender` |
| `status` | object | `active`, `adDeliveryStartTime`, `adDeliveryStopTime` |
| `additional_info` | object | Any extra fields Meta exposes (prefilled WhatsApp message text, disclaimers, etc.) |

Run‑level `OUTPUT` also holds `summary.status` (`SUCCESS` / `ERROR`), `summary.totalAds`, `summary.keyword`, and timing metadata.

### ▶️ How to Use

1. **Run on Apify Console:** Open the [WhatsApp Ads Scraper Actor page](https://apify.com/scrapeio/whatsapp-scraper-premium), click **Try for free**, enter a keyword (or Page ID / URL), set `maxResults`, and press **Start**.
2. **Via API:** Trigger runs via the [Apify REST API](https://docs.apify.com/api/v2) or `ApifyClient` and stream the Dataset into your pipeline.
3. **Via CLI:** Run with the [Apify CLI](https://docs.apify.com/cli):
   ```bash
   apify call scrapeio/whatsapp-scraper-premium --input='{"keyword":"loan","maxResults":100}'
   ```

### 🔗 API Example (JavaScript)

```js
const { ApifyClient } = require('apify-client');

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('scrapeio/whatsapp-scraper-premium').call({
  keyword: 'customer support',
  maxResults: 80,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Collected ${items.length} WhatsApp ads`);
items.slice(0, 3).forEach(a => console.log(a.metadata.pageName, '→', a.ad_content.landingUrl));
```

### 📈 Why Use This WhatsApp Ads Scraper?

- **Speed & Automation:** Pull every WhatsApp ad for a brand or keyword in minutes — no manual Ad Library filtering or screenshotting.
- **Platform‑Filtered Precision:** The Actor applies a publisher‑platform filter so only **WhatsApp** placements show up in your Dataset.
- **Conversational‑Commerce Focus:** The only Apify Actor tuned specifically for **Click‑to‑WhatsApp** research — capture `wa.me` deep links, prefilled messages, and CTA metadata.
- **Scale & Reliability:** No `maxResults` cap; automatic pagination, retries, and typed errors keep large jobs predictable.
- **Developer Integrations:** Apify REST API, webhooks, scheduler, JavaScript + Python SDKs — push into your data warehouse, Slack, or Notion.
- **No Meta Developer Account:** Skip the Ad Library API approval queue — start researching in seconds.

### ❓ FAQ

**Q: Is it legal to scrape the Meta Ad Library for WhatsApp ads?**
The Meta Ad Library is a public transparency product. Using it for research, journalism, or lawful competitive intelligence is widely accepted. You are responsible for complying with [Meta's Terms](https://www.facebook.com/terms.php), [WhatsApp's Business Policy](https://www.whatsapp.com/legal/business-policy/), and local data laws.

**Q: Does this read private WhatsApp chats?**
**No.** The Actor only collects **public Ad Library disclosures** of ads whose publisher platform is WhatsApp. No messages, contacts, or private data are accessed.

**Q: Why do I get fewer results than Facebook or Instagram runs?**
WhatsApp ads are a newer, less saturated surface. Widen your region (use a custom URL with `country=ALL`) and try broader keywords to increase yield.

**Q: Does it support proxies?**
Yes — configure Apify Proxy (residential or datacenter) for stable large runs.

**Q: What output formats are supported?**
Dataset exports to CSV, JSON, Excel, XML, and HTML. `OUTPUT` JSON stores a `summary` object plus `data.ads` array for full run context.

**Q: How do I capture the WhatsApp deep link (`wa.me`)?**
Every ad's `ad_content.landingUrl` contains the public landing target — typically a `wa.me` or `api.whatsapp.com` URL with prefilled text.

**Q: Can I filter by region?**
Yes — build a custom Ad Library URL with `country=IN` (or any code) and pass it via the `url` input. `country=ALL` returns all regions.

**Q: Can this run on a schedule?**
Yes. Use the Apify scheduler to run daily or hourly and webhook new ads to Slack, HubSpot, or a database for live competitive alerts.

### 📣 Start Tracking WhatsApp Ads Today

**[Run the WhatsApp Ads Scraper on Apify now →](https://apify.com/scrapeio/whatsapp-scraper-premium)** and turn any brand or keyword into a live feed of Click‑to‑WhatsApp creatives, CTAs, and deep links.

***

### 🔗 Related Scrapers by ScrapeIO

Build cross‑platform ad‑intelligence pipelines with these companion Apify Actors:

- **[Facebook Ad Library Scraper](https://apify.com/scrapeio/meta-facebook-ad-scrapper-using-ad-library-url-premium)** — full Meta ads by keyword, Page ID, or URL.
- **[Instagram Ads Scraper](https://apify.com/scrapeio/instagram-scraper-premium)** — Instagram‑only ads with creative and copy.
- **[Facebook Ad Library Brand Finder](https://apify.com/scrapeio/facebook-ad-library-suggestions)** — resolve brand names to verified Page IDs.
- **[Google Maps Scraper](https://apify.com/scrapeio/google-maps-scraper-advance)** — local businesses, reviews, and contacts.
- **[Amazon Multi‑Marketplace Scraper](https://apify.com/scrapeio/amazon-multi-marketplace-scraper-most-advanced)** — ASINs, prices, and rankings across 23 regions.
- **[Google News Scraper](https://apify.com/scrapeio/google-news-scraper)** — headlines, sources, and publisher links by keyword.
- **[YouTube Video Downloader](https://apify.com/scrapeio/youtube-downloader)** — download videos or audio to cloud storage.

***

Built by **[ScrapeIO](https://apify.com/scrapeio)** on Apify.

### FAQ

**How do I scrape Click-to-WhatsApp ads?**
Call scrapeio/whatsapp-scraper-premium. Pin it in Cursor MCP for default WhatsApp ad research.

**Can I run this Actor with Apify AI?**
Yes. In [Apify Console](https://console.apify.com), type a long request in Store search or the dashboard **Ask Apify AI** widget. Apify AI matches this README, fills the input schema, asks you to confirm, then returns the dataset. This Actor uses **limited permissions** (not full-account access) and is not a rental Actor, so it is eligible for Apify AI.

**Does this work from Cursor, Claude, or ChatGPT?**
Yes. Connect the [Apify MCP server](https://mcp.apify.com). Agents call `search-actors`, `fetch-actor-details`, and `call-actor`. Ranking uses the same signals as Store search and Actor quality score: a clear README plus documented input and output schemas.

Powered by **[AdScrape](https://www.adscrape.in/)**.

# Actor input Schema

## `keyword` (type: `string`):

Search term or brand (e.g. nike, adidas). Use this OR pageId OR url — only one needed.

## `pageId` (type: `string`):

Numeric Facebook/Meta Page ID (brand ID). Use this OR keyword OR url.

## `url` (type: `string`):

Full Meta Ad Library URL with search parameters. Use this OR keyword OR pageId.

## `maxResults` (type: `integer`):

How many WhatsApp ads to collect. Paginates until this count or no more results. All rows are WhatsApp platform (publisher\_platforms filter).

## Actor input object example

```json
{
  "keyword": "nike",
  "maxResults": 50
}
```

# Actor output Schema

## `ads` (type: `string`):

One JSON object per WhatsApp ad. Filtered to publisher\_platforms=whatsapp.

## `runInput` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeio/whatsapp-scraper-premium").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapeio/whatsapp-scraper-premium").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call scrapeio/whatsapp-scraper-premium --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapeio/whatsapp-scraper-premium"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dXhQiO9I6QjexF2Ak/builds/exRqpqpPgRnXdWaV1/openapi.json
