WhatsApp Group Links Scraper With Metadata
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
WhatsApp Group Links Scraper — Groups, Channels & Source Posts
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.
🔎 What is WhatsApp Group Links Scraper With Metadata?
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
🧾 What data does WhatsApp Group Links Scraper With Metadata collect?
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 Type | Key Fields | JSON Field Names |
|---|---|---|
| Group invite links | live join status, real current group name, live photo URL, invite kind | linkStatus, liveGroupName, liveGroupPhotoUrl, inviteLinkType |
| Channel invite links | invite 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 URL | keyword, 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.
👥 Why do developers and teams scrape WhatsApp group links?
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.
🚀 How to scrape WhatsApp group links (step by step)
- Open WhatsApp Group Links Scraper With Metadata on its Apify Store page and start a new run.
- Provide input — every field is optional. Leave everything blank to use the built-in defaults, or set
searchTerms,socialNetworkandsearchCountryyourself; to skip search entirely, paste your own links intoinviteLinksToVerifyinstead. - Set your filters — turn
verifyLinkStatuson or off, switch ononlyActiveLinksto drop dead invites, cap total rows withmaxLinkRecords, and setlinkCheckConcurrencyfor check speed. - Start the run from the Apify Console, or trigger it through the API, a schedule, or a webhook.
- 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.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
searchTerms | No | array | Topics 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"] |
socialNetwork | No | string (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" |
searchCountry | No | string (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" |
maxLinkRecords | No | integer, min 1 | Stop after this many result rows (counted across all search terms). Schema description says "leave empty for no cap" — see the caveat below. | 25 |
inviteLinksToVerify | No | array | Paste 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"] |
verifyLinkStatus | No | boolean, default true | Open 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 |
onlyActiveLinks | No | boolean, default false | Drop 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 |
linkCheckConcurrency | No | integer, default 8, min 1, max 20 | How many invite links are checked at the same time. Higher is faster, lower is gentler. | 8 |
keywords | No | array | Legacy alias. Used only when searchTerms is empty. | ["marketing"] |
platform | No | string (enum) | Legacy alias. Used only when socialNetwork is empty. Same eight options as socialNetwork. | "facebook.com" |
country | No | string (free text) | Legacy alias. Used only when searchCountry is empty. Not restricted to the searchCountry enum — passed through as-is. | "us" |
limit | No | integer, min 1 | Legacy alias. Used only when maxLinkRecords is empty. | 25 |
proxyConfiguration | No | object, 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.
Scraped group invite link
{"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"}
Scraped channel invite link
{"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.
📊 How does WhatsApp Group Links Scraper With Metadata compare to other WhatsApp scrapers?
| Feature | WhatsApp Group Links Scraper With Metadata | Generic alternative |
|---|---|---|
| Output format | Typed JSON with a fixed, documented schema | ✅/❌ varies — often raw HTML or loosely structured text |
| Live status verification | Opens 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 mode | Paste invite links or bare codes and skip search entirely | ❌ usually search-only, no standalone verification mode |
| Source coverage | Discovery across 8 social networks, one selectable per run | ❌ frequently limited to a single fixed source |
| Group vs. channel handling | Tags 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.
🔢 How many results can you scrape with WhatsApp Group Links Scraper With Metadata?
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.
🔌 Integrate WhatsApp Group Links Scraper With Metadata and automate your workflow
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 ApifyClientclient = 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.
⚖️ Is it legal to scrape WhatsApp group links?
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
Does WhatsApp Group Links Scraper With Metadata work without a WhatsApp account?
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.
What happens if none of my search terms return any group invite links?
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.
Can WhatsApp Group Links Scraper With Metadata check private or restricted WhatsApp groups?
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.
Does WhatsApp Group Links Scraper With Metadata work for AI agent workflows and LLM pipelines?
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.
What's the difference between a group invite link and a channel invite link in the output?
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.
Does WhatsApp Group Links Scraper With Metadata return data in a format LLMs can use directly?
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.