WhatsApp Scraper — Numbers, Channels & Groups avatar

WhatsApp Scraper — Numbers, Channels & Groups

Pricing

from $1.99 / 1,000 whatsapp results

Go to Apify Store
WhatsApp Scraper — Numbers, Channels & Groups

WhatsApp Scraper — Numbers, Channels & Groups

Scrape public WhatsApp data from phone numbers, channel pages, group invite links, and business catalogs: name, photo, followers, bio, catalog flag, and latest updates. No login, no QR code.

Pricing

from $1.99 / 1,000 whatsapp results

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

4

Monthly active users

9 days ago

Last modified

Share

Disclaimer: Unofficial tool for publicly accessible WhatsApp pages (click-to-chat, channel pages, group invite previews, catalog landings). WhatsApp and related marks are trademarks of WhatsApp LLC / Meta. Not affiliated with, sponsored by, or endorsed by WhatsApp or Meta. Does not access private chats, messages, or anything behind login. For informational, research, lead-enrichment, and community-intelligence use only. Respect applicable terms of use and law (including GDPR / CCPA when you process phone numbers).

WhatsApp scraper for public numbers, channels, group invite links, and business catalogs — a practical WhatsApp API alternative that needs no login, no QR code, and no Business API token. Look up wa.me click-to-chat pages, hydrate WhatsApp channel URLs, resolve group invites, detect a WhatsApp Business catalog, or discover channels by keyword. Export business name, account type, profile photo, followers, bio, catalog flag, and latest-update reaction counts as JSON, CSV, or Excel. Scrape WhatsApp with Python, Node.js, cURL, or Apify MCP / AI assistants.

This Actor reads the same public Open Graph metadata a logged-out browser sees. It is a WhatsApp number checker for publicly exposed profiles (typical WhatsApp Business pages), a WhatsApp channel scraper, a WhatsApp catalog checker, and a WhatsApp group scraper in one run.

ActorFocus
WhatsApp Scraper ◄── you are herePublic WhatsApp numbers, channels, group invites, catalogs
TikTok Trending Hashtags ScraperTikTok Creative Center trending hashtags
YouTube Comments ScraperYouTube comments without the Data API

When to use this Actor

  • You need a WhatsApp scraper / WhatsApp API alternative that returns structured JSON
  • You want to check if a number exposes a public WhatsApp Business profile (name, photo, business / official-business flag)
  • You want a WhatsApp channel scraper (name, follower count, bio, avatar, web join URL, latest updates)
  • You want to check if a WhatsApp Business number has a public catalog (hasCatalog)
  • You want a WhatsApp group scraper for invite-link previews (name, avatar, invite type)
  • You scrape WhatsApp with Python, Node.js, or MCP and export a dataset

When not to use this Actor

  • Private chats, message history, last seen, or About text — not published on public pages
  • Guaranteed true/false for personal numbers — a personal account with locked privacy looks the same as an unregistered number (status: unresolved). That is not a “not on WhatsApp” verdict
  • Business email, website, hours, GPS, or catalog product SKUs — those fields are not on the public click-to-chat / catalog landing pages
  • Joining groups or following channels — metadata only; the Actor never joins

Key Features

  • Four public surfaces — numbers (wa.me), channels (whatsapp.com/channel/…), group invites (chat.whatsapp.com/…), catalogs (wa.me/c/… / whatsapp.com/catalog/…)
  • WhatsApp number checker (public) — E.164 normalization, line type, Brazil extra-9 fallback, public vs unresolved (never a false “not registered”)
  • WhatsApp Business flagsbusiness / official_business from the public page
  • WhatsApp Business catalog checkerhasCatalog from the public catalog landing (name + flag; no product grid without login)
  • WhatsApp channel scraper — parsed follower counts (29K29000), bio, avatar, web join URL, optional latest-update strip (time, reactions, text when shown)
  • Keyword channel discovery — search-engine indexing of public channel pages with extra result pages (not the in-app directory)
  • HTTP only — Chrome TLS via curl_cffi, 256–512 MB, no Playwright, no QR
  • MCP / AI ready — call from assistants via Apify MCP

Use Cases

Use caseWhat you get
CRM / outreach listsPublic business name + photo + click-to-chat URL for numbers that expose a profile
Lead qualificationisBusiness / isOfficialBusiness to rank WhatsApp Business accounts
Channel researchFollower counts, bios, web join URL, and latest-update reactions
Catalog qualificationhasCatalog on public business numbers (Twilio-style catalog landing)
Invite-link auditLive vs expired group invites (name + avatar when the invite is valid)
Community discoveryKeyword queries that surface indexed public channels

Quick Start

Business number + catalog:

{
"phoneNumbers": ["+14155238886", "+918976859807"],
"includeCatalog": true,
"maxItems": 50,
"proxyConfiguration": { "useApifyProxy": false }
}

Channel page + group invite:

{
"startUrls": [
{ "url": "https://www.whatsapp.com/channel/0029Va4K0PZ5a245NkngBA2M" },
{ "url": "https://wa.me/c/14155238886" },
{ "url": "https://chat.whatsapp.com/IJhrKyIsd3aCo3JypCW3KA" }
],
"includeChannelUpdates": true,
"maxItems": 20
}

Discover channels by keyword:

{
"queries": ["crypto trading"],
"maxChannelsPerQuery": 20,
"maxItems": 40
}

Input Parameters

ParameterTypeDefaultDescription
phoneNumbersArrayInternational numbers (E.164 preferred)
numbersTextStringPaste many numbers (lines / commas / semicolons)
startUrlsArrayChannel, group-invite, wa.me, or catalog URLs
queriesArrayChannel keyword discovery (paginated search-engine index)
defaultCountryStringISO country (US, GB, BR, IN) for numbers without +
includeChannelUpdatesBooleantrueAttach channel latest-update strip when present
includeCatalogBooleantrueCheck the public catalog landing for each number
maxChannelsPerQueryInteger20Cap on discovered channel URLs per query
maxItemsInteger100Hard cap on dataset rows
concurrencyInteger5Parallel page fetches (1–20)
proxyConfigurationObjectoffOptional; useful for large channel-search batches

Output Format

Each dataset item is one number, channel, or group.

FieldTypeDescription
typeStringnumber / channel / group
statusStringpublic / unresolved / not_found / invalid / error
nameStringPublic display name when the page exposes one
accountTypeStringbusiness / official_business / channel / group / public
isBusiness / isOfficialBusinessBooleanFrom the public click-to-chat page
onWhatsAppPublicBooleantrue only when named public metadata was present
descriptionStringChannel bio or business label
followers / followersRawInteger / StringChannel follower count
avatarUrl / profileImageUrlStringPublic profile / channel / group image
phoneObjectE.164, country, line type (numbers)
hasCatalogBooleantrue when the public catalog landing exists
catalogStatusStringok / none / skipped / error
catalogName / catalogUrlStringBusiness name and catalog landing URL
channelId / inviteCodeStringFrom the URL
webJoinUrlStringweb.whatsapp.com/accept?channel_invite_code=…
latestUpdatesArrayChannel time + reactions + text when shown
clickToChatUrlStringCanonical wa.me URL
matchedQueryStringSearch query that surfaced a channel
scrapedAtStringUTC timestamp

Example — public business number:

{
"type": "number",
"status": "public",
"name": "Twilio",
"accountType": "business",
"isBusiness": true,
"onWhatsAppPublic": true,
"url": "https://wa.me/14155238886",
"clickToChatUrl": "https://wa.me/14155238886",
"hasCatalog": true,
"catalogStatus": "ok",
"catalogName": "Twilio",
"catalogUrl": "https://www.whatsapp.com/catalog/14155238886/"
}

Example — channel:

{
"type": "channel",
"status": "public",
"name": "WhatsApp",
"followers": 234000000,
"followersRaw": "234M",
"description": "WhatsApp’s official channel. Follow for our latest feature launches, updates, exclusive drops and more.",
"channelId": "0029Va4K0PZ5a245NkngBA2M",
"webJoinUrl": "https://web.whatsapp.com/accept?channel_invite_code=0029Va4K0PZ5a245NkngBA2M",
"hasLatestUpdates": true,
"url": "https://www.whatsapp.com/channel/0029Va4K0PZ5a245NkngBA2M"
}

unresolved on a number means the public send page stayed generic. It does not prove the number has no personal WhatsApp account.

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/whatsapp-scraper').call({
phoneNumbers: ['+14155238886'],
startUrls: [{ url: 'https://www.whatsapp.com/channel/0029Va4K0PZ5a245NkngBA2M' }],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/whatsapp-scraper").call(
run_input={
"phoneNumbers": ["+14155238886"],
"startUrls": [{"url": "https://www.whatsapp.com/channel/0029Va4K0PZ5a245NkngBA2M"}],
"maxItems": 20,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("type"), item.get("name"), item.get("status"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~whatsapp-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"phoneNumbers":["+14155238886"],"maxItems":20}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/whatsapp-scraper.

Example prompts:

  • "Run WhatsApp Scraper for +14155238886 and return name, accountType, hasCatalog, status, clickToChatUrl as JSON"
  • "Scrape the official WhatsApp channel and summarize follower count, webJoinUrl, plus latestUpdates"
  • "Find public WhatsApp channels for crypto trading (max 20) then scrape each channel page"

Suite next step

WhatsApp is the messaging layer next to short-video social. For TikTok trend boards, run TikTok Trending Hashtags Scraper. For YouTube comment threads, continue with YouTube Comments Scraper.

FAQ

Is this an official WhatsApp API?
No. It reads public HTML / Open Graph on click-to-chat, channel, group-invite, and catalog landing pages — a WhatsApp API alternative for public metadata only.

Can it tell me if a personal number is on WhatsApp?
Only when that number exposes a public profile (typical for WhatsApp Business). Personal accounts with default privacy return unresolved. Do not treat that as false.

WhatsApp number checker vs WhatsApp Business lead scraper?
Same Actor. Numbers that publish a business page come back with name, isBusiness, and avatarUrl. Channels and groups are separate type values in the same dataset.

Does it scrape channel messages?
It captures the public Latest updates strip when WhatsApp renders it (time, reaction counts, and post text when the HTML includes it). Full message history stays in the app.

Does it scrape WhatsApp Business catalog products?
The public catalog landing confirms a catalog exists (hasCatalog: true) and usually the business name. Product SKUs, prices, and images are not on the logged-out page.

Do I need a WhatsApp account or QR code?
No.

Python / Node.js / MCP?
Yes — use the Apify client examples above or Apify MCP prompts.

Can I export CSV or Excel?
Yes. Download the default dataset from Apify Console, or pull it via the API / MCP.

ActorFocus
WhatsApp Scraper ◄── you are herePublic WhatsApp numbers, channels, groups, catalogs
TikTok Trending Hashtags ScraperTikTok trending hashtags
YouTube Comments ScraperYouTube comments