WhatsApp Group Links Scraper With Metadata avatar

WhatsApp Group Links Scraper With Metadata

Pricing

from $4.99 / 1,000 results

Go to Apify Store
WhatsApp Group Links Scraper With Metadata

WhatsApp Group Links Scraper With Metadata

WhatsApp Group Links Scraper with Metadata extracts publicly available WhatsApp group links along with group names, descriptions, categories, source URLs, and other metadata. Ideal for community discovery, market research, audience analysis, and lead generation.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

3 days ago

Last modified

Share

WhatsApp Group Links Scraper With Metadata finds publicly posted WhatsApp invite links across Facebook, LinkedIn, Instagram, Twitter/X, YouTube, Reddit, Pinterest or TikTok, then opens every link against WhatsApp itself to confirm whether it still works. Each run returns three things: the group invite link with its live status and current name, the channel invite link when one turns up, and the source post that mentioned it — all as typed, normalized JSON, no HTML, no selectors, no parsing. Read on to see exactly which fields you get and how to run it.


It is an Apify Actor with two run modes: search discovery, which scans a chosen social network for public posts mentioning chat.whatsapp.com, and direct verification, where you paste your own invite links or bare invite codes and the search step is skipped entirely. Either way, every invite link found is opened against WhatsApp itself so the row carries a live linkStatus, the group's current name, and its current photo URL — not whatever a stale post once claimed. No WhatsApp account, phone number, or login is required; the Actor only issues plain HTTP requests to public pages.

  • 🔗 Discover group invite links posted on eight social networks, by search term
  • 🩺 Verify any invite link live against WhatsApp and get its real current name, photo and status
  • 📥 Check your own list of links or bare invite codes without running a search
  • 🧹 Filter down to only the links that are still joinable
  • 📦 Export as JSON, CSV or another Apify dataset format — no proxy management required

Every row combines up to three kinds of information: the group invite link's live verdict, the channel invite link's verdict when the link is a WhatsApp Channel address, and the source post that surfaced the link during a search run.

Data TypeKey FieldsJSON Field Names
Group invite linkslive join status, real current group name, live photo URL, invite kindlinkStatus, liveGroupName, liveGroupPhotoUrl, inviteLinkType
Channel invite linksinvite code, honest "not checkable" status (WhatsApp publishes no public per-channel metadata)linkType, inviteCode, linkStatus
Source posts (search mode)matched search term, source network, source page title/snippet, source page URLkeyword, platform, title, desc, url

Need more data from the same networks?

If you also need the underlying posts or profiles from the network a link was found on — rather than just the WhatsApp invite it mentions — API-Empire publishes dedicated scrapers for several of the same networks, including Instagram Posts Scraper, LinkedIn Company Profile Scraper With Firmographic Filters, Reddit API Scraper With Engagement & Trend, and TikTok User Profile Scraper By Hashtag & Keyword Search.


🛠️ Why not build this yourself?

WhatsApp's own public API surface (the WhatsApp Business Platform) is built for sending and receiving messages through numbers you control — it has no endpoint for discovering public invite links posted elsewhere on the web, and no endpoint for bulk-checking the live status of invite links you don't own. Building that yourself means writing and maintaining a search-engine scraper (HTML structure changes, blocking, proxy rotation), plus an invite-page parser that has to know the trap this Actor already handles: a revoked or never-valid WhatsApp invite still returns a normal successful page, so the verdict has to come from reading the page's own metadata, not its status code. That is ongoing maintenance work with no official alternative to fall back on.


For growth marketers and community managers

Finding active, on-topic WhatsApp communities is mostly manual work today — search a term, open a dozen dead links, repeat. Running a search term like "crypto jobs" against twitter.com with onlyActiveLinks turned on returns only groups that are joinable right now, tagged with the exact keyword and platform that surfaced them, so outreach lists stop wasting time on invites that expired months ago.

For AI engineers and agent builders

An agent that recommends or joins communities on a user's behalf needs a live, structured feed, not a scraped screenshot. Calling this Actor as a tool and passing linkStatus, liveGroupName and inviteUrl straight into an agent's decision step (or a RAG index) avoids parsing HTML inside the loop — a common reliability failure point when the source data isn't already typed.

For researchers and analysts

Studying how public discourse and community organizing move from open social feeds into closed messaging groups only requires publicly posted invite links — nothing behind a login. Re-running the same search terms on a schedule and comparing linkStatus and checkedAt across runs measures how fast a given niche's invite links decay, using only public data.

For developers building data products

A "verified group directory" product needs a source of always-current listings. Scheduling recurring runs, filtering onlyActiveLinks, and de-duplicating on inviteCode produces a directory feed that never ships a dead invite; the same Actor doubles as a link-health-check service by pointing inviteLinksToVerify at a client's existing list instead of searching.


  1. Open WhatsApp Group Links Scraper With Metadata on its Apify Store page and start a new run.
  2. Provide input — every field is optional. Leave everything blank to use the built-in defaults, or set searchTerms, socialNetwork and searchCountry yourself; to skip search entirely, paste your own links into inviteLinksToVerify instead.
  3. Set your filters — turn verifyLinkStatus on or off, switch on onlyActiveLinks to drop dead invites, cap total rows with maxLinkRecords, and set linkCheckConcurrency for check speed.
  4. Start the run from the Apify Console, or trigger it through the API, a schedule, or a webhook.
  5. Download the results as JSON, CSV or another Apify dataset export format — or read them live, since each row is pushed to the dataset the moment it is ready.

What to do when WhatsApp or a source page changes structure

This Actor is maintained: when a source network's markup or WhatsApp's invite-page metadata changes, the extraction and verification logic is updated to match. The output schema stays stable, so field names and types your integration relies on don't change on your end.


⬇️ Input

All twelve fields are optional — the schema requires nothing. Leaving searchTerms, socialNetwork and searchCountry empty runs a search for ["marketing", "jobs"] on facebook.com targeting us; pasting anything into inviteLinksToVerify skips search completely.

ParameterRequiredTypeDescriptionExample Value
searchTermsNoarrayTopics to hunt for, one per line (e.g. "marketing", "crypto jobs", "real estate"). Every term is searched on its own and tagged on the result row. Leave the direct-link box below empty to use this search mode.["marketing", "jobs"]
socialNetworkNostring (enum)Which social network the invite links should be discovered on. One network per run. Options: facebook.com, linkedin.com, instagram.com, twitter.com, youtube.com, reddit.com, pinterest.com, tiktok.com."facebook.com"
searchCountryNostring (enum)Bias the discovery step toward one country's results. Does not affect the live link check — that always talks to WhatsApp directly. One of 95 codes (full list below)."us"
maxLinkRecordsNointeger, min 1Stop after this many result rows (counted across all search terms). Schema description says "leave empty for no cap" — see the caveat below.25
inviteLinksToVerifyNoarrayPaste your own invite links or bare invite codes, one per line — e.g. https://chat.whatsapp.com/AbCdEf123..., chat.whatsapp.com/invite/AbCdEf123... or just AbCdEf123.... When this box has anything in it, the search step is skipped completely and only your links are checked and enriched.["https://chat.whatsapp.com/AbCdEf123456"]
verifyLinkStatusNoboolean, default trueOpen each discovered invite link against WhatsApp and fill in linkStatus, liveGroupName, liveGroupPhotoUrl, inviteLinkType and checkedAt. Turn this off to get discovery only (those columns come back empty).true
onlyActiveLinksNoboolean, default falseDrop every row whose invite link is revoked, expired or invalid, so the output contains joinable groups only. Needs the live check, which is switched on automatically when you enable this.false
linkCheckConcurrencyNointeger, default 8, min 1, max 20How many invite links are checked at the same time. Higher is faster, lower is gentler.8
keywordsNoarrayLegacy alias. Used only when searchTerms is empty.["marketing"]
platformNostring (enum)Legacy alias. Used only when socialNetwork is empty. Same eight options as socialNetwork."facebook.com"
countryNostring (free text)Legacy alias. Used only when searchCountry is empty. Not restricted to the searchCountry enum — passed through as-is."us"
limitNointeger, min 1Legacy alias. Used only when maxLinkRecords is empty.25
proxyConfigurationNoobject, default/prefill {"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}Network route used for the discovery step. The Actor adapts on its own if a route becomes unreliable.{"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}

Example input (search mode):

{
"searchTerms": ["real estate", "crypto jobs"],
"socialNetwork": "facebook.com",
"searchCountry": "us",
"maxLinkRecords": 25,
"inviteLinksToVerify": [],
"verifyLinkStatus": true,
"onlyActiveLinks": false,
"linkCheckConcurrency": 8,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"] }
}

Example input (direct verification mode — search is skipped because inviteLinksToVerify is non-empty):

{
"inviteLinksToVerify": [
"https://chat.whatsapp.com/AbCdEf123456",
"chat.whatsapp.com/invite/GhIjKl789012",
"MnOpQr345678"
],
"onlyActiveLinks": true,
"linkCheckConcurrency": 8
}

⚠️ Common pitfall: the maxLinkRecords / legacy limit description says "leave empty for no cap," but that is not how the current build behaves — when both fields are left empty, the Actor falls back to a default cap of 10 rows, the same value shown as the field's prefill. If you want more than 10 rows, set maxLinkRecords explicitly.


⬆️ Output

Each run pushes one row per source page (search mode) or per supplied link (direct verification mode) as typed, normalized JSON — no HTML, no selectors. Results export as JSON, CSV, Excel, XML or any other Apify dataset format. Every pushed row charges exactly one row_result event; there are no separate uncharged status or error rows, so your dataset row count matches your billed event count exactly.

{
"keyword": "real estate",
"platform": "facebook.com",
"country": "us",
"title": "Real Estate Investors Network - Facebook",
"desc": "Join our WhatsApp group for real estate leads and deals: chat.whatsapp.com/AbCdEf123456",
"url": "https://www.facebook.com/groups/realestateinvestors",
"groupUrl": ["https://chat.whatsapp.com/AbCdEf123456"],
"sourceMode": "search",
"inviteUrl": "https://chat.whatsapp.com/AbCdEf123456",
"inviteCode": "AbCdEf123456",
"linkType": "group",
"linkStatus": "active",
"liveGroupName": "🏠 Real Estate Investors Network",
"liveGroupPhotoUrl": "https://pps.whatsapp.net/v/t61.24694-24/example_photo.jpg",
"inviteLinkType": "REGULAR",
"checkedAt": "2026-07-30T10:15:22+00:00",
"activeLinkCount": 1,
"checkedLinkCount": 1,
"linkChecks": [
{
"inviteUrl": "https://chat.whatsapp.com/AbCdEf123456",
"inviteCode": "AbCdEf123456",
"linkType": "group",
"linkStatus": "active",
"liveGroupName": "🏠 Real Estate Investors Network",
"liveGroupPhotoUrl": "https://pps.whatsapp.net/v/t61.24694-24/example_photo.jpg",
"inviteLinkType": "REGULAR",
"checkedAt": "2026-07-30T10:15:22+00:00"
}
],
"scrapedAt": "2026-07-30T10:15:20+00:00"
}
{
"keyword": null,
"platform": null,
"country": null,
"title": null,
"desc": null,
"url": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXX",
"groupUrl": ["https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXX"],
"sourceMode": "direct_links",
"inviteUrl": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXX",
"inviteCode": "0029VaXXXXXXXXXXXXXX",
"linkType": "channel",
"linkStatus": "not_checkable",
"liveGroupName": null,
"liveGroupPhotoUrl": null,
"inviteLinkType": null,
"checkedAt": "2026-07-30T10:16:05+00:00",
"activeLinkCount": 0,
"checkedLinkCount": 1,
"linkChecks": [
{
"inviteUrl": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXX",
"inviteCode": "0029VaXXXXXXXXXXXXXX",
"linkType": "channel",
"linkStatus": "not_checkable",
"liveGroupName": null,
"liveGroupPhotoUrl": null,
"inviteLinkType": null,
"checkedAt": "2026-07-30T10:16:05+00:00"
}
],
"scrapedAt": "2026-07-30T10:16:05+00:00"
}

keyword, platform, country, title and desc are null in direct verification mode because there was no search post to read them from — they are only populated in search mode.


FeatureWhatsApp Group Links Scraper With MetadataGeneric alternative
Output formatTyped JSON with a fixed, documented schema✅/❌ varies — often raw HTML or loosely structured text
Live status verificationOpens every invite link against WhatsApp and tags active / revoked_or_invalid / unreachable / not_checkable❌ typically discovery only — dead links stay in the list
Bring-your-own-links modePaste invite links or bare codes and skip search entirely❌ usually search-only, no standalone verification mode
Source coverageDiscovery across 8 social networks, one selectable per run❌ frequently limited to a single fixed source
Group vs. channel handlingTags WhatsApp Channel links not_checkable instead of guessing a name❌ often treats every whatsapp.com link the same

If you're building an AI agent or RAG pipeline, the output format row is the decision-maker — parsing HTML inside an agent loop is a reliability failure mode, not a feature. Everything else in the table is something you can verify yourself by running both tools on the same search term.


There is no hard maximum on maxLinkRecords / legacy limit — set it as high as you want. But leaving both fields empty does not mean unlimited, despite what the field description says: the Actor falls back to a default cap of 10 rows when neither is set. Separately, each search term stops after 5 pages of Google results (10 results per page, so roughly 50 raw hits per term) even with no cap configured, and search terms run concurrently, each with its own 5-page ceiling. linkCheckConcurrency (1–20, default 8) only controls how many links are checked in parallel — it does not limit the total number of rows. No benchmark run time is published; none is claimed here.


WhatsApp Group Links Scraper With Metadata works with any language or tool that can send an HTTP request.

REST API integration

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("<YOUR_USERNAME>/whatsapp-group-links-scraper-with-metadata").call(
run_input={
"searchTerms": ["real estate", "crypto jobs"],
"socialNetwork": "facebook.com",
"onlyActiveLinks": True,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["inviteUrl"], item["linkStatus"], item["liveGroupName"])

Works in Python, Node.js, Go, Ruby, cURL — anything that can call the Apify API.


Yes — this Actor only reads publicly accessible pages: public social-media posts that mention an invite link, and the public WhatsApp invite page itself. It returns group- and channel-level metadata (name, photo URL, join status) — it never reads member lists, phone numbers, or any private profile data, so it is not built to collect personal data about identifiable individuals. Because the output is public directory-style data rather than personal records, the relevant framework is the terms of service of WhatsApp and of whichever source network you search, plus database-rights considerations for republishing structured results — not GDPR. Consult legal counsel for commercial use cases involving bulk data collection.


❓ Frequently asked questions

Yes. No WhatsApp account, phone number, or login is needed — the Actor only sends plain HTTP requests to public invite pages. You do need an Apify account to run the Actor itself.

How often is the scraped data updated?

Every run is a live fetch: discovery hits the search source live, and every invite link is opened against WhatsApp live at the moment the run executes — checkedAt records exactly when. Nothing is served from a cache.

The run finishes with zero rows and logs a warning suggesting broader search terms, a different source network, or switching off "Keep Only Working Links." This is expected behavior when a niche term has no matching public posts, not an error.

No. Only invite links that have been publicly posted somewhere the Actor can find them (or that you already have) are checked. It cannot discover or join a private group it has no link to, and it never reads a group's message content or member list.

Do I need to buy or configure proxies separately?

No. The default proxyConfiguration already routes discovery through Apify Proxy, and the Actor escalates to an alternate then a residential route automatically if one stops working. Live invite-link checks connect directly to WhatsApp first and only fall back to a residential proxy automatically if that fails.

Yes — it is callable as an HTTP endpoint by any agent framework through the Apify API. Every response is typed JSON with stable field names, so it can be passed directly into an LLM context window or agent tool step without a parsing stage.

How does it handle anti-bot defenses on the search source and on WhatsApp?

For discovery, it rotates through connection routes (a preferred route, then Apify's GOOGLE_SERP group, then a residential route), retries on 429/403/5xx responses with exponential backoff, and rotates desktop Chrome user agents. For the WhatsApp invite check, it connects directly for two attempts and only falls back to a residential proxy if both attempts fail.

linkType marks each link group or channel. Group invites (chat.whatsapp.com/...) get a full live check — status, current name, current photo. Channel invites (whatsapp.com/channel/...) are always returned as linkStatus: "not_checkable" with liveGroupName and liveGroupPhotoUrl set to null, because WhatsApp does not publish per-channel names or photos on that public address — every channel address answers with the same generic placeholder image.

Yes. Every row is typed, normalized JSON with stable field names — no HTML, no selectors. Pass it directly into an LLM context window, index it into a vector store, or route it through an agent tool call.

Can I use it without managing proxies myself?

Yes. The Actor manages its own connection routing for both the discovery step and the WhatsApp verification step, escalating automatically when a route becomes unreliable.

What happens if WhatsApp or a source network changes its page structure or blocks the scraper?

The Actor is maintained, and its output schema stays stable — field names and types on your end don't change even when the underlying extraction logic has to be updated. No specific turnaround time is promised.


💬 Your feedback

Found a bug, or a WhatsApp invite-page pattern this Actor misclassifies? We want to know. Open an issue from the Actor's page in Apify Console (the Issues tab) or message the developer directly through Apify — reports like these are exactly how the extraction and verification logic stays accurate as WhatsApp and the source networks change.