WhatsApp Group Links Scraper avatar

WhatsApp Group Links Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
WhatsApp Group Links Scraper

WhatsApp Group Links Scraper

๐Ÿ“Œ WhatsApp Group Links Scraper extracts WhatsApp group invite links quickly and efficiently. ๐Ÿ”Ž Ideal for lead research, marketing & outreachโ€”helping you find relevant communities faster. โœ… Fast, reliable, and easy to use! ๐Ÿš€

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Share

WhatsApp Group Links Scraper searches Facebook, LinkedIn, Instagram, X/Twitter, YouTube, Reddit, Pinterest, and TikTok for public posts that mention a WhatsApp group or channel, then returns each discovery as structured JSON โ€” the invite link (groupUrl), the source post's title and URL, its snippet text (desc), and the keyword that found it. No parsing, no regex, no manual searching. Run it from the Apify Console or API and start collecting live in seconds. ๐Ÿš€


WhatsApp Group Links Scraper is a keyword + platform + country search tool that finds publicly shared chat.whatsapp.com invite links and whatsapp.com/channel links mentioned on other social networks, and returns each one as a structured record with its source context. It does not log into WhatsApp or into any of the eight social platforms it searches โ€” it works entirely from public Google search results, so no account, password, or API key for any of those platforms is required. It's built for growth marketers, recruiters, community managers, and researchers who need a live feed of publicly promoted WhatsApp groups without manually running dozens of search queries.


Anyone can already find these links by running the same searches manually in a browser โ€” the Actor automates and structures what Google's public index already exposes for the platform you choose, restricted to what a search engine has indexed.

Data CategoryIndexed by Google searchNot indexed / behind login
Post/page title mentioning a WhatsApp linkโœ…โ€”
Snippet text surrounding the linkโœ…โ€”
Source post URL on the chosen platformโœ…โ€”
The WhatsApp invite/channel link itselfโœ… (if present in the indexed snippet)Links only shared inside private posts, DMs, or closed groups
Relative post date ("3 days ago")โœ… (when Google's snippet includes one)Exact original post timestamp
Full post body beyond the snippetโ€”Requires opening the source page/login
Whether the invite link is still activeโ€”Not checked by this Actor

WhatsApp Group Links Scraper only returns publicly visible search-result data โ€” what any visitor sees on a search engine results page. Nothing behind a login wall on WhatsApp or the searched platform is touched.


Every run returns the full set of fields below, pushed the moment each link is found โ€” not just the columns shown in the default dataset view.

Field NameDescription
keywordThe search term that produced this result.
platformThe social network searched (e.g. facebook.com).
countryThe country code used to geo-target the search.
titleTitle of the source post/page from the search result.
urlThe source URL on the searched platform.
descSnippet text where the link was found, with any leading relative-date fragment stripped out.
snippetDateThe leading relative-date fragment from the raw snippet (e.g. "3 days ago"), or null if none was present.
snippetAgeDayssnippetDate converted to an approximate number of days, or null.
groupUrlArray of normalized WhatsApp group/channel links found in this result โ€” https://chat.whatsapp.com/<code> and https://whatsapp.com/channel/<id>, with legacy /invite/<code> links normalized to the modern bare form.
isDuplicateGroupUrltrue if any link in groupUrl had already been seen from a different source page earlier in the same run (possibly a different keyword or platform).
successtrue for a normal result row; false for a keyword/platform/country combination that returned no links.
failureReasonExplanation text when success is false; null otherwise.
scrapedAtISO-8601 UTC timestamp of when the row was collected.

๐Ÿ“ Search and source fields

keyword, platform, country, title, url, desc, snippetDate, snippetAgeDays โ€” identify what was searched and where the mention was found.

groupUrl, isDuplicateGroupUrl, success, failureReason, scrapedAt โ€” the actual WhatsApp link(s), dedup and outcome flags, and when the row was captured.

๐Ÿค– Add-on: Need additional social platform data?

This Actor only returns the search-result snippet that mentions a WhatsApp link โ€” not the full profile or post behind it. Pair it with Instagram Profile Post Scraper for full post detail on the Instagram sources it finds, TikTok User Profile Scraper With Engagement Analytics for the TikTok accounts sharing groups, or Reddit API Scraper to pull full Reddit post threads by the same keywords.


๐Ÿ› ๏ธ Why not build this yourself?

There's no official API for "find public WhatsApp invite links shared across other social networks" โ€” WhatsApp's own Business/Cloud API is for sending and receiving messages from your own account, not for discovering third-party group links, and none of the eight searched platforms expose a public API for this either. Building it yourself means maintaining a Google SERP scraper against markup that changes without notice, a regex that correctly separates three real link shapes (modern chat.whatsapp.com/<code>, legacy /invite/<code>, and whatsapp.com/channel/<id>) without mistaking the literal word "invite" for a code or a marketing page like whatsapp.com/download for a real group, plus a proxy-escalation and retry stack to survive blocks. This Actor already handles all of that.


Run it directly from the Apify Console or trigger it via the API โ€” no separate signup or credentials for WhatsApp or the searched platform are needed.

  1. Open WhatsApp Group Links Scraper on its Apify Store listing and click Try for free / Start.
  2. Provide the required input: at least one entry in keywords, a platform, and a country.
  3. Optionally set limit to cap total records, or adjust proxyConfiguration (safe to leave on defaults).
  4. Start the run.
  5. Stream or download results from the Output tab in JSON, CSV, or XLSX, or pull them via the API.

keywords accepts an array, and every keyword in the list is searched concurrently in the same run โ€” add ten keywords and get ten keyword-scoped result sets from one run, no extra runs needed. platform and country are single-select per run, so to cover multiple platforms or countries in bulk, loop the run (via the API or an Apify schedule), changing platform/country on each call.


  • ๐Ÿ“ฃ Growth marketers running community campaigns use groupUrl and platform to find niche WhatsApp groups matching a topic before reaching out to join or promote.
  • ๐Ÿง‘โ€๐Ÿ’ผ Recruiters sourcing candidates use keyword and title to shortlist job-sharing groups active on a given platform and region.
  • ๐Ÿ”ฌ Researchers studying community activity use snippetAgeDays and platform to see how recently groups tied to a topic are still being shared.
  • ๐Ÿ›ก๏ธ Brand-safety teams use isDuplicateGroupUrl and groupUrl to build a deduplicated registry of publicly promoted WhatsApp groups tied to their brand keywords.
  • ๐Ÿค– AI engineers feed title, desc, and groupUrl into a RAG pipeline or agent tool so an LLM can summarize and rank discovered groups by relevance to a prospect list โ€” no HTML parsing required on their end.

The Actor starts on the configured proxy route and automatically escalates to a wider route if a source stops responding โ€” escalation is sticky, so once it widens it never steps back down for the rest of the run. Each page fetch is retried up to 3 times with exponential backoff (base 1.5s, plus jitter) before the Actor moves to the next route; if every route is exhausted for a page, that page is treated as having no results and the keyword moves on. Keywords run concurrently and are isolated from each other โ€” one keyword failing outright does not stop the others, and a keyword that ends with zero links still produces a success: false row with a failureReason instead of silently vanishing.

โš ๏ธ Each keyword is capped at 2 search-query variants ร— 2 result pages (Google returns up to 20 organic results per page) โ€” once those pages are exhausted the keyword moves on, so this is not an infinite crawl even with limit left blank.


โฌ‡๏ธ Input

ParameterRequiredTypeDescriptionExample Value
keywordsYesarrayAdd one or more search terms. Each keyword is searched separately and results are grouped by keyword in the output.["marketing", "jobs"]
platformYesstringSocial platform to scan for public WhatsApp invite links. Default "facebook.com". Enum: facebook.com (๐Ÿ“˜ Facebook), linkedin.com (๐Ÿ’ผ LinkedIn), instagram.com (๐Ÿ“ธ Instagram), twitter.com (๐Ÿฆ Twitter / X), youtube.com (โ–ถ๏ธ YouTube), reddit.com (๐Ÿ‘ฝ Reddit), pinterest.com (๐Ÿ“Œ Pinterest), tiktok.com (๐ŸŽต TikTok)."facebook.com"
countryYesstringGeo-targets the search to a specific country (FIPS 10-4 code, mapped to Google's country restriction). Default "us". Enum of ~100 country codes โ€” see full list below."us"
limitNointegerMaximum number of WhatsApp link records to collect across all keywords. Minimum 1. Leave empty for no limit. Default 10.10
proxyConfigurationNoobjectNetwork route used while collecting. The Actor starts on the configured route and automatically adjusts to a wider one if a source stops responding. Default {"useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"]}.see example input

๐Ÿ“„ Example input

{
"keywords": ["marketing", "jobs"],
"platform": "facebook.com",
"country": "us",
"limit": 10,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["GOOGLE_SERP"]
}
}

โฌ†๏ธ Output

Every run produces typed, normalized JSON with a consistent field set across runs, streamed to the dataset live as each link is found. Export as JSON, CSV, or XLSX from the Output tab, or pull results via the API.

โš ๏ธ Pay-per-event billing: the only charged event is row_result, and it fires for every row pushed โ€” including the success: false row logged when a keyword/platform/country combination returns nothing. There is no separate uncharged path for zero-result rows. Filter success: true in your downstream processing (or via the dataset API) if you only want to count rows with a real discovered link.

๐Ÿ“„ Example output

[
{
"keyword": "marketing",
"platform": "facebook.com",
"country": "us",
"title": "WhatsApp Business Marketing",
"url": "https://www.facebook.com/groups/645308090352562/",
"desc": "WhatsApp Business Marketing. Join group. ... chat.whatsapp.com/HsOmSeLn8vvCoII4Vds0UL ...",
"snippetDate": null,
"snippetAgeDays": null,
"groupUrl": ["https://chat.whatsapp.com/HsOmSeLn8vvCoII4Vds0UL"],
"isDuplicateGroupUrl": false,
"success": true,
"failureReason": null,
"scrapedAt": "2026-07-30T15:04:22.123456+00:00"
},
{
"keyword": "crypto jobs",
"platform": "facebook.com",
"country": "us",
"title": null,
"url": null,
"desc": null,
"snippetDate": null,
"snippetAgeDays": null,
"groupUrl": [],
"isDuplicateGroupUrl": false,
"success": false,
"failureReason": "Search completed but no WhatsApp group/channel links were found inside the results.",
"scrapedAt": "2026-07-30T15:04:31.987654+00:00"
}
]

โš™๏ธ How does it work?

For each keyword, the Actor builds two Google search queries restricted to the chosen platform with a site: operator โ€” one targeting "chat.whatsapp.com" mentions and a second targeting "whatsapp.com/channel" mentions, so channel-only posts aren't missed. It fetches the search-result HTML through Apify Proxy, escalating to a wider route automatically if a request comes back blocked, and retries with backoff before doing so. The returned HTML is parsed to pull each result's title, snippet, and source URL, and a pattern match extracts WhatsApp invite/channel codes from the snippet or title โ€” filtering out known WhatsApp marketing pages and fragments too short to be a real code. Only what the search engine's public index already exposes is touched; the Actor never logs into the searched platform. The output field set stays the same run to run, regardless of layout changes on the searched platform.


๐Ÿ”Œ Integrations

WhatsApp Group Links Scraper runs on the Apify platform, so it works with anything that can call the Apify API.

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("whatsapp-group-links-scraper").call(run_input={
"keywords": ["marketing", "jobs"],
"platform": "facebook.com",
"country": "us",
"limit": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["groupUrl"], item["url"])

Works in Go, Ruby, Node.js, cURL โ€” any language that can make an HTTP request.

๐Ÿ”— No-code tools (n8n, Make, LangChain)

In n8n, use the HTTP Request node pointed at the Actor's run-sync-get-dataset-items endpoint with your input as the JSON body. In Make, use the Apify app's "Run an Actor and get dataset items" module the same way. In LangChain or any agent framework, wrap the same HTTP call as a tool so an agent can request fresh WhatsApp group links by keyword on demand.


Scraping publicly available search-result data is generally legal in most jurisdictions โ€” WhatsApp Group Links Scraper only returns what a search engine already surfaces publicly, not anything behind a login on WhatsApp or the searched platform. The primary data here is a link and its public post context, not a personal profile, so this falls under standard terms-of-service and database-rights considerations rather than a personal-data regime like GDPR/CCPA โ€” though if a specific snippet happens to surface personal information, ordinary data-handling diligence still applies to that record. Consult legal counsel if your use case involves bulk storage of personal data.


โ“ Frequently asked questions

The top fields are groupUrl, url, title, desc, and keyword โ€” see the data fields section above for the full set of 13 fields.

No. It never logs into WhatsApp or into any of the eight searched platforms โ€” it runs entirely against public Google search results, so no credentials for any of those services are needed.

As many as limit allows (across all keywords combined), capped by what Google's index actually surfaces per keyword โ€” each keyword scans up to 2 query variants ร— 2 result pages before moving on. Leave limit empty to collect everything found within that per-keyword ceiling.

What happens if a search returns zero results for a keyword?

The Actor pushes a success: false row for that keyword with a failureReason explaining why (no search results returned, or results returned but none contained a WhatsApp link) โ€” it never silently skips a keyword.

Can I scrape multiple keywords at once?

Yes โ€” keywords is an array, and every keyword is searched concurrently in a single run, with results tagged by keyword in the output.

It isn't exposed through an MCP server today, but it's callable as a plain HTTP endpoint via the Apify API by any agent framework that can make a web request.

It normalizes all three real link shapes seen in live search data โ€” modern chat.whatsapp.com/<code>, legacy /invite/<code>, and whatsapp.com/channel/<id> โ€” into one consistent format, flags (rather than silently drops or double-counts) group links repeated across different source pages via isDuplicateGroupUrl, and always writes an honest success: false row for a keyword that comes up empty instead of leaving a silent gap.

Yes. Typed, normalized JSON with consistent field names across runs โ€” no HTML parsing, no selectors. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when a searched platform or Google changes its layout?

The Actor is actively maintained and its output field set stays stable across runs. No specific turnaround time is promised for layout-change fixes.

Yes โ€” proxy routing, tiered escalation on blocks, and retry/backoff are all handled internally; you only need to leave proxyConfiguration on its default.

Which fields work best for RAG indexing or training data?

For RAG, index title and desc โ€” the free-text fields with the actual context around a discovered link. For training data or filtering, groupUrl, platform, keyword, and success are the most consistently structured fields across every run, and all fields return as typed primitives (strings, booleans, arrays, or null).


Scraper NameWhat it extracts
Google Images ScraperGoogle Images search results as structured JSON โ€” image URL, title, dimensions, source page.
Instagram Profile Post ScraperFull post data from an Instagram profile, including pinned posts and comments.
TikTok User Profile Scraper With Engagement AnalyticsPublic TikTok profile data enriched with engagement and growth metrics.
Reddit API ScraperReddit posts by keyword โ€” title, subreddit, author, score, comments.
LinkedIn Company Profile ScraperPublic LinkedIn company page data โ€” industry, size, HQ, followers, posts.

๐Ÿ’ฌ Your feedback

Found a bug or missing a field? Let us know via the Issues tab on this Actor's Apify Console page โ€” bug reports and field requests are what keep it accurate as platforms and Google's search markup change.