Zalo Exporter - Group Members, Contacts and Chats
Pricing
from $1.50 / 1,000 group members
Zalo Exporter - Group Members, Contacts and Chats
Connect your Zalo account by QR and export joined groups, visible members, contacts, profiles, or bounded chat history to CSV/JSON. Choose a guided preset, reuse the encrypted session, and track conversation completeness and run limits.
Pricing
from $1.50 / 1,000 group members
Rating
0.0
(0)
Developer
KazKN
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
0
Monthly active users
16 hours ago
Last modified
Categories
Share
Zalo Data Exporter — Chat Backup, Group Members & Contacts
| KazKN · Data automation suite • Zalo exports, Vinted arbitrage, Shopify intelligence, App Store research | |||
|
➤ You are here |
Arbitrage across 26 Vinted markets |
Products, reviews + installed apps |
Metadata + localization gaps |
Copy to your AI assistant
Use kazkn/zalo-member-profile-exporter on Apify. The first connection is interactive: start one run in the Apify Console, open Output → ① First run: scan this Zalo QR, and approve it in the Zalo app. Later calls reuse the encrypted session for the same Apify user and accountAlias. Use APIFY_API_TOKEN from the environment—never paste the secret into this prompt.Python:import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_API_TOKEN"])run = client.actor("kazkn/zalo-member-profile-exporter").call(run_input={"exportMode":"groupRoster","accountAlias":"main","maxGroups":1,"maxMembersPerGroup":100})items = client.dataset(run["defaultDatasetId"]).list_items().itemsPresets: groupRoster, contactsAndProfiles, conversationBackup, completeSnapshot. Only data visible to the connected account is returned. Use a new accountAlias for a different Zalo account. Full spec: GET https://api.apify.com/v2/acts/kazkn~zalo-member-profile-exporter/builds/default (Bearer APIFY_API_TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token settings: https://console.apify.com/account/integrations
First run: scan once, then reuse the login
| First connection | Later runs |
|---|---|
| 1. Keep 👥 Group roster and the starter limits. 2. Click Start. 3. Immediately open Output → ① First run: scan this Zalo QR. 4. Scan and approve it in the Zalo app within about 100 seconds. 5. Keep the run open until the Dataset appears. | Choose the export you want and click Start. The encrypted login saved under main reconnects automatically. If it expires, enable 🔄 Refresh this saved login once and scan a new QR. |
If the temporary QR expires, the run ends with
QR_EXPIRED. Start a new run and scan the new QR immediately; the expired image cannot be reused.
🎯 Find the right Zalo export
| I want to… | Choose this preset | Download |
|---|---|---|
| Back up accessible Zalo messages | 💬 Conversation backup | Messages and conversation summaries |
| Export visible joined-group members | 👥 Group roster | Groups, members, and linked profiles |
| Export visible Zalo contacts | 👤 Contacts & profiles | Contacts and profile rows |
| Export all visible account data | 📦 Complete visible-account snapshot | Contacts, profiles, groups, members, conversations, and messages |
Every workflow uses the connected account and returns only data visible to it. Download the matching Dataset view as CSV, Excel, or JSON.
🚀 Quick start
- Choose the result in 📦 Export preset.
- Keep the starter limits: 1 group / 100 members or 3 conversations / 200 messages each.
- Click Start and follow the first-connection table above if Output asks for a QR.
- Open ③ Exported records and download the relevant Dataset view as CSV, Excel or JSON.
No cookies, token, IMEI, proxy or session passphrase is required in the input.
✨ Why use this Zalo exporter?
- 🎯 Choose the result, not a technical scope — group roster, contacts, conversation backup, or a complete snapshot.
- 📊 Download useful files immediately — CSV and Excel for spreadsheets, JSON and the API for automations.
- ⚡ Get a useful first result quickly — conservative starter limits avoid launching a huge account-wide export by accident.
- 💵 Pay for delivered records — separate prices for profiles, groups, members, conversations, and messages, with Apify subscription discounts.
🎬 Watch the step-by-step tutorial
Watch the complete Group roster workflow: choose the preset, connect Zalo, review the Dataset and export visible group members.
👉 Watch: How to Export Zalo Group Members to Excel or CSV
🧭 50 ready-made examples
The Examples tab contains 50 bounded workflows for group rosters, contacts, chats and complete snapshots. Every published example stays within 3 groups, 250 members per group, 3 conversations and 200 messages per conversation. Complete one successful run with the starter input above, then increase only the limit that matches the result you need.
- 👥 Export Zalo group members to CSV
- 👤 Export Zalo contacts to CSV
- 💬 Export Zalo chat history
- 📦 Export a complete visible-data snapshot
Each example opens the matching Dataset view. Duplicate it before increasing its limits; limits determine runtime, output volume and the maximum possible charge.
💵 Pricing
Pricing follows the value of the result. You pay for one successfully saved Dataset record at a time. Profiles, groups, members, conversations, and messages have separate paid events; messages remain the lowest-cost record because chat backups can contain thousands of them.
The start event is charged once per allocated GB of memory. With the default 4 GB memory, the start charge is four times the value shown below.
| Paid result | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Start / GB | $0.0500 | $0.0450 | $0.0400 | $0.0350 |
| Profile | $0.0030 | $0.0027 | $0.00225 | $0.0018 |
| Group | $0.0040 | $0.0036 | $0.0030 | $0.0024 |
| Group member | $0.0025 | $0.00225 | $0.001875 | $0.0015 |
| Conversation summary | $0.0035 | $0.00315 | $0.002625 | $0.0021 |
| Message | $0.0018 | $0.00162 | $0.00135 | $0.00108 |
Example prices at 4 GB:
| Example export | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| 100 contacts / profiles | ~$0.50 | ~$0.45 | ~$0.39 | ~$0.32 |
| 2 conversations + 500 messages | ~$1.11 | ~$1.00 | ~$0.84 | ~$0.68 |
| 1 group + 100 members + 100 profile rows | ~$0.75 | ~$0.68 | ~$0.58 | ~$0.47 |
Gold, Platinum, and Diamond currently use the same unit prices. Actual cost depends on the visible rows returned. Apify shows the maximum run charge before launch. Use 📅 Messages from and the safety limits to control large conversation exports.
✅ Verified output snapshots
- Verified build
0.1.29— a bounded saved-session run returned 1 joined group, 2 visible group members, and 2 profile rows. The Dataset and Output summary matched. - Earlier build
0.1.23— a conversation export returned 6 conversation rows and 522 message rows with no duplicate record keys. This is dated historical proof; test your desired chat boundary with a small first run.
These snapshots prove specific private runs, not universal account coverage or the number of records your account will return.
📦 What you get
The default Dataset uses one predictable schema with five record types:
| Record type | Includes |
|---|---|
profile | Zalo user ID, display name, Zalo name, avatar URL, relationship |
group | Group ID, name, and visible member count |
groupMember | Group ID, user ID, display name, stable record key |
conversation | Conversation ID, type, completeness, and stop reason |
message | Message ID, thread, sender, direction, date, text, attachment metadata |
Raw cookies, QR tokens, IMEI, session encryption material, and the internal account fingerprint are never Dataset fields.
🔎 Find the result you need
The Output tab provides five focused views:
- 👥 Group members
- 🏘️ Groups
- 👤 Contacts and profiles
- 💬 Conversations
- 📨 Messages
Apify views select the most useful columns. When downloading the unified
Dataset or using the API, filter on recordType to select a result family.
🔐 QR login and automatic reconnect
- The first run creates one temporary QR in that run's Key-Value Store.
- You scan and approve it with the Zalo mobile app.
- The reusable session is encrypted with AES-256-GCM and separated by Apify user and saved account name.
- Later runs reconnect automatically.
- Enable 🔄 Refresh this saved login only after expiry or revocation. To connect another Zalo account, create a new saved account name.
The QR record is deleted after success, rejection, or expiry. Two users can
both use the saved account name main without sharing session data.
⚙️ Input examples
The default group-roster export needs no input:
{}
Back up conversations from a chosen date:
{"exportMode": "conversationBackup","messagesSince": "2026-07-01","maxConversations": 3,"maxMessagesPerConversation": 200,"includeMessageText": true,"includeAttachmentMetadata": true}
Export selected joined groups only:
{"exportMode": "groupRoster","groupIds": ["joined-group-id-1", "joined-group-id-2"],"maxMembersPerGroup": 500}
Available presets are groupRoster, contactsAndProfiles,
conversationBackup, and completeSnapshot. Existing API integrations that
send the legacy scopes field remain compatible in the runtime parser; the
obsolete field is no longer published in the input schema.
❓ Zalo export FAQ
How do I export Zalo group members to CSV or Excel?
Choose 👥 Group roster, scan the temporary QR if requested, then download the Dataset as CSV, Excel, or JSON. For a specific joined group, add its ID in Only these group IDs.
Can I export Zalo contacts and profiles?
Yes. Choose 👤 Contacts & profiles to save the contacts and profile fields visible to the connected account. Fields remain empty when Zalo does not expose them.
Can I back up Zalo chats and messages?
Choose 💬 Conversation backup and set Messages from or a per-chat message limit. The Actor exports accessible direct and joined-group history; it does not recover deleted messages or mobile-only encrypted archives.
🛡️ Limits and completeness
Conversation history stops at the first configured boundary: message limit,
date limit, the real start returned by Zalo, a safe page ceiling, or 180
seconds. Each conversation record explains what happened:
| Status | Meaning |
|---|---|
COMPLETE_TO_ZALO_WEB_START | Zalo returned the real start available on Zalo Web |
PARTIAL_LIMIT | Your date or message limit was reached |
PARTIAL_ZALO_BOUNDARY | Zalo or a safety ceiling stopped the read first |
FAILED | No safe history result could be returned for that conversation |
Direct and joined-group conversations are bounded separately. History pages are read sequentially with a delay between requests.
🧯 If a run fails
- QR expired — start the Actor again and scan the new QR promptly. The old QR is intentionally temporary.
- Zalo asks for another browser check — approve the check in Zalo, enable 🔄 Refresh this saved login, and retry with a small preset.
- Saved login is no longer valid — enable 🔄 Refresh this saved login once to refresh that same account. Use a new saved account name for another Zalo account.
- Zalo page changed — retry once. If the same error returns, open an Actor issue with the run ID so the page model can be updated.
The run log uses plain error names such as QR_EXPIRED, ZALO_CHALLENGE, and
SELECTOR_DRIFT to make the next action clear.
🔒 Read-only and privacy-first
- No send-message, friend-request, group-add, or group-remove path.
- No proxy, CAPTCHA, rate-limit, or authentication bypass.
- Optional message text and attachment metadata can be disabled.
- Attachment metadata can include visible names, links, and thumbnails; files themselves are never downloaded.
- Account and session mismatches stop before the first Dataset write.
- Concurrent runs for the same saved account fail with
ACCOUNT_ALIAS_BUSY.
⚠️ Boundaries
The Actor exports only data visible to the connected account. It does not discover hidden profiles, unjoined groups, invisible members, deleted messages, phone-number databases, or mobile-only encrypted archives.
zca-js is an unofficial dependency. Zalo can change private behavior,
invalidate sessions, challenge the account, or rate-limit access. Start with a
non-critical account and conservative limits. Apply an appropriate retention
policy to exported membership lists and message content.
🇻🇳 Hướng dẫn xuất dữ liệu Zalo
Kết nối tài khoản Zalo của bạn bằng một mã QR tạm thời để xuất dữ liệu mà tài khoản có thể xem. Actor chỉ đọc dữ liệu: không gửi tin nhắn, kết bạn hoặc thay đổi thành viên nhóm.
| Bạn muốn… | Chọn chế độ | Kết quả tải xuống |
|---|---|---|
| Sao lưu tin nhắn Zalo có thể truy cập | 💬 Conversation backup | Tin nhắn và thông tin tóm tắt cuộc trò chuyện |
| Xuất thành viên nhóm Zalo đã tham gia | 👥 Group roster | Nhóm, thành viên hiển thị và hồ sơ liên kết |
| Xuất danh bạ Zalo và hồ sơ hiển thị | 👤 Contacts & profiles | Danh bạ và các dòng hồ sơ |
| Xuất dữ liệu Zalo mà tài khoản có thể xem | 📦 Complete visible-account snapshot | Danh bạ, hồ sơ, nhóm, thành viên, cuộc trò chuyện và tin nhắn |
🚀 Bắt đầu nhanh
- Chọn Export preset phù hợp với kết quả bạn cần.
- Bấm Start.
- Trong lần chạy đầu tiên, mở ① First run: scan this Zalo QR trong tab Output và xác nhận bằng ứng dụng Zalo trên điện thoại.
- Mở Exported records để tải CSV, Excel hoặc JSON.
🔐 Mã QR chỉ dùng tạm thời. Các lần chạy sau sẽ tự động kết nối lại bằng phiên đăng nhập đã được mã hóa.
⚠️ Actor chỉ trả về dữ liệu hiển thị cho tài khoản đã kết nối. Actor không khôi phục tin nhắn đã xóa, nhóm chưa tham gia, thành viên bị ẩn hoặc dữ liệu chỉ có trên ứng dụng di động.