Zalo Official Account Scraper — OA Profiles & QR Pages
Pricing
from $1.99 / 1,000 zalo oa results
Zalo Official Account Scraper — OA Profiles & QR Pages
Scrape public Zalo Official Account pages: OA ID, name, avatar, verified flag, category, address, working hours, and QR image. No login, no QR session. Export JSON via Python, Node.js, or MCP.
Pricing
from $1.99 / 1,000 zalo oa results
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Disclaimer: Independent tool for publicly accessible Zalo Official Account landing pages on zalo.me. Zalo and related marks are trademarks of VNG Corporation. Not affiliated with, sponsored by, or endorsed by Zalo or VNG. Does not log into Zalo, does not scan a QR session, and does not read private chats, contacts, or group members. For research, lead enrichment, and brand-monitoring of public OA pages only. Respect applicable terms of use and law.
Zalo scraper for public Official Accounts (OA) — a practical Zalo API alternative that needs no login and no QR code. Look up zalo.me/{oaId} or a custom OA slug and export OA ID, name, avatar, verified flag, category, address, working hours, and QR image URL as JSON, CSV, or Excel. Scrape Zalo OA pages with Python, Node.js, cURL, or Apify MCP / AI assistants.
This Actor reads the same public landing payload a logged-out browser sees. It is a Zalo OA scraper and a Zalo Official Account profile extractor, not a personal-chat exporter.
When to use this Actor
- You need a Zalo scraper / Zalo API alternative for Official Account profile fields
- You have
zalo.meOA URLs, numeric OA IDs, or custom OA slugs - You want verified status, category, address, hours, avatar, and QR in a dataset
- You scrape Zalo with Python, Node.js, or MCP and export JSON
When not to use this Actor
- Private chats, contacts, group members, or message history — those are not on public OA pages (and require a logged-in Zalo account)
- Personal
zalo.me/{phone}profiles — Zalo redirects those to login - Group invite links (
zalo.me/g/…) — not public on the web - OA posts, articles, shop SKUs, or follower lists — not exposed on the logged-out landing page
Key features
- Public OA landing pages — numeric IDs and custom slugs
- Stable OA ID plus name, description, avatar, QR image
- Verified flag, category (vi/en), tier, address, working hours
- Clear statuses —
public,login_required,not_found,invalid,error(a login redirect is not treated as a profile) - HTTP only — Chrome TLS via curl_cffi, 256–512 MB, no Playwright, no QR login
- MCP / AI ready — call from assistants via Apify MCP
Use cases
| Use case | What you get |
|---|---|
| Brand / OA directory | Canonical OA ID, name, verified flag, category |
| Store / branch cards | Public address + working hours when the OA publishes them |
| QR / deep-link ops | QR image URL + message argv for the public OA |
| CRM enrichment | Structured OA rows from a list of zalo.me links |
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Public zalo.me/… OA URLs |
oaIds | array | Numeric Official Account IDs |
slugs | array | Custom OA URL slugs |
oaText | string | Paste mixed IDs / slugs / URLs |
maxItems | integer | Dataset cap (default 100) |
concurrency | integer | Parallel fetches (default 5) |
proxyConfiguration | object | Optional Apify Proxy |
{"startUrls": [{ "url": "https://zalo.me/officialaccount" }],"oaIds": ["4462152339089565647"],"maxItems": 20,"proxyConfiguration": { "useApifyProxy": false }}
Output
| Field | Description |
|---|---|
status | public / login_required / not_found / invalid / error |
oaId | Numeric Official Account ID |
slug | Custom URL slug when present |
name | Public OA name |
description | Public bio |
avatarUrl | Avatar image |
qrCodeUrl | Public QR image |
isVerified | Verification flag |
category / categoryEn | OA category |
address / workingHours | Public location card |
canonicalUrl | https://zalo.me/{oaId} |
{"type": "oa","status": "public","oaId": "4462152339089565647","slug": "officialaccount","name": "Zalo Official Account","isVerified": true,"category": "VNG","address": "Z06 Duong so 13, Phuong Tan Thuan, Thanh pho Ho Chi Minh","workingHours": "08:00 - 18:00","canonicalUrl": "https://zalo.me/4462152339089565647"}
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/zalo-scraper').call({startUrls: [{ url: 'https://zalo.me/officialaccount' }],maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("crawloop/zalo-scraper").call(run_input={"startUrls": [{"url": "https://zalo.me/officialaccount"}],"maxItems": 10,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/crawloop~zalo-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://zalo.me/officialaccount"}],"maxItems":10}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.
Example prompts:
- "Run Zalo Official Account Scraper for https://zalo.me/officialaccount and return the OA ID, verified flag, and address as JSON"
- "Scrape these Zalo OA IDs with Zalo Official Account Scraper and summarize name, category, and working hours"
- "Look up custom Zalo OA slugs and list which ones are public vs login_required"
FAQ
Is this a Zalo chat exporter?
No. It only reads public Official Account landing pages. Chats, contacts, and group rosters need a logged-in Zalo account and are out of scope.
Why did I get login_required?
That URL is not a public OA page (personal profile, group invite, or unknown slug). Zalo sent the browser to the login wall.
Do I need a Zalo developer token?
No. This is a page scraper, not the official OA Open API.
Does it scrape OA posts?
Not in v1. The logged-out landing page exposes profile + QR fields, not the post feed.