# Changelog of WhatsApp Group Links Scraper (`socialdataapi/whatsapp-group-links-scraper`) Actor

- **URL**: https://apify.com/socialdataapi/whatsapp-group-links-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/socialdataapi/whatsapp-group-links-scraper.md

## Changelog

### 0.5 — Per-keyword limit and faster runs

- 🔢 `limit` now applies to each keyword on its own: every keyword is searched until it reaches `limit` or runs out of live links.
- 🔎 Each keyword is searched with more query variations, so more keywords reach `limit`.
- ⚡ Faster runs: a slow or refusing search source no longer holds up the others, and a keyword stops once its searches stop turning up new live links.

### 0.4 — Rebuild

- 🔎 New search across several public sources at once: far more WhatsApp links per keyword.
- ✅ Every WhatsApp link is opened once and kept only when it leads to a live group or channel.
- ⚡ Rows are saved as soon as their links are checked; keywords run at the same time and `limit` is shared evenly, with unused shares passed on.
- 🗓️ `snippetDate` / `snippetAgeDays` now also read dates like "Sep 6, 2026 ·" and "1 day ago ·".
- 📍 Every country in the list is now searched as the country it names.
- 🧾 `success: false` rows for keywords with no live links are no longer charged.
- 💳 The run stops cleanly at your spend limit.
- 🔒 Apify residential proxy by default.

### 0.3 — Base finalize (cont.)

- 🔒 Pinned the coupled `apify`/`pydantic`/`browserforge`/`impit` dependency set to a proven-consistent combination (the prior `apify~=3.4` + `impit~=0.4` constraint was internally inconsistent — `apify` 3.4.x requires `impit>=0.8.0`).
- 🧹 Scrubbed internal proxy-tier/network-route names and retry/escalation log lines so no buyer-visible surface (README, actor input description, or runtime log) reveals the underlying proxy group or a raw HTTP status code.
- 🧹 Removed a leftover "Support & Feedback / open an issue" section from the README.
- 📝 Rewrote the README with accurate current input/output tables, an FAQ covering the legacy-link and duplicate-flag fixes, and an analysis-derived related-keywords section.

### 0.2 — Base finalize

- 🐛 Fixed `WHATSAPP_RE`/`extract_whatsapp_links` mishandling of the legacy `chat.whatsapp.com/invite/<code>` link format (previously captured the literal word "invite" as the code) and the `whatsapp.com/channel/<id>` host (previously mis-prefixed onto `chat.whatsapp.com`).
- 🐛 Fixed the query builder only ever searching for the literal phrase `"chat.whatsapp.com"`, silently under-searching for `whatsapp.com/channel`-only mentions.
- 🧹 Added a group-link-level duplicate flag (`isDuplicateGroupUrl`) — the existing dedup only worked at the SERP source-URL level, so the same WhatsApp group could appear multiple times across keywords/platforms with no signal.
- 🗓️ Added `scrapedAt`, `snippetDate`, and `snippetAgeDays`.
- 🧾 Added `success` / `failureReason` row for a keyword that returns nothing.
- 📊 Added a per-run summary object saved to the key-value store (`RUN_SUMMARY`).
- 🇰🇵 Fixed the country enum: `kn` was mislabeled as generic "Korea" with the South-Korea flag, duplicating `ks` — relabeled to "Korea, North" / "Korea, South".
- 🧹 Removed a stray marketing/contact line from the input description.

### 0.1 — Initial release

- 🔎 Keyword + platform + country search across 8 social networks.
- 💬 Extracts WhatsApp group and channel invite links from result snippets.
- 🛡️ Automatic proxy-escalation ladder: direct → datacenter → residential (sticky).
- 🔁 Retry with exponential backoff (up to 3 attempts per page).
- 📡 Real-time, engaging progress logging.
- 💾 Live `push_data` — partial results survive a crash.
- 📊 Table dataset view grouped by keyword and platform.
