Asia Social Listening – HK, TW & SG Forum Brand Monitor
Pricing
from $50.00 / 1,000 deduplicated mentions
Asia Social Listening – HK, TW & SG Forum Brand Monitor
Monitor brand mentions across Asia's forums in one Actor: LIHKG (Hong Kong), PTT (Taiwan), HardwareZone (Singapore) and Telegram. Enter a keyword — it searches, deduplicates and scores sentiment, with competitor share-of-voice. Priced per deduplicated mention. For SG/HK/TW social listening.
Pricing
from $50.00 / 1,000 deduplicated mentions
Rating
0.0
(0)
Developer
Chad
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Asia Social Listening | LIHKG, PTT, HardwareZone & Telegram Brand Mention Aggregator
Give it one brand keyword and it scrapes related discussion across four platforms in a single run — Hong Kong's LIHKG, Taiwan's PTT, Singapore's HardwareZone, and Telegram — with automatic cross-platform deduplication, lightweight sentiment analysis, and competitor share-of-voice comparison. It hits each platform's public endpoints directly (it does not call our other actors as sub-actors, so you're never billed twice through a child actor's own metering), and outputs one flat, structured mention list.
What this is (and isn't)
- This is a meta-actor: it uses lightweight HTTP (
got-scraping) to hit each platform's public endpoints directly, reusing (via copy, not import) the parsing logic from our own LIHKG / PTT / HardwareZone / Telegram scrapers. It does not invoke a separately-billed child actor. - LIHKG runs a true, site-wide search. PTT, HardwareZone, and Telegram do keyword/title filtering within a target list you supply (boards / forums / channels) — not a site-wide search. Filter-based platforms can't surface discussion outside the list you give them; see Notes below.
- Threads (Asia · true search) is planned for v1.1 — it needs a browser (no public JSON endpoint), and the $0.05/mention price point can absorb that cost, but v1 ships with these four pure-HTTP platforms first.
Output Fields (MentionRow)
| Field | Type | Description |
|---|---|---|
| mention_id | string | {platform}:{original ID}, stable across runs — used by deltaMode to diff new vs. seen |
| platforms | array | Which source it came from: lihkg / ptt / hardwarezone / telegram (all on by default) |
| brand_matched | string | The brand term matched (the primary brandKeyword, or one of the competitorBrands) |
| is_competitor | boolean | Whether this is a competitor mention (false = the primary brand itself) |
| matched_alias | string | null | The alias term matched (from searchAliases); null if matched on the primary term |
| text | string | null | Post title / body / message text |
| author | string | null | Author / poster |
| url | string | null | Link to the original post |
| created_at | string | null | Post time (ISO 8601; native precision varies by platform) |
| engagement_likes | number | null | Like count (most platforms don't expose this — reported honestly as null) |
| engagement_replies | number | null | Reply/comment count |
| engagement_views | number | null | View count |
| sentiment | string | null | positive / neutral / negative; null when sentiment analysis is off |
| sentiment_score | number | null | -1 (negative) to 1 (positive); null when sentiment analysis is off |
| is_duplicate | boolean | Whether this is a duplicate mention (same post, or a cross-platform repost); only false ones are billed |
| duplicate_of | string | null | Points to the first mention_id it duplicates, otherwise null |
| source_query | string | The query/filter term actually matched (primary term or alias) |
| scraped_at | string | Scrape timestamp (ISO 8601) |
Platform Capabilities
| Platform | Keyword Capability | Needs a Target List? |
|---|---|---|
| LIHKG (Hong Kong) | 🟢 True, site-wide search | No |
| PTT (Taiwan) | 🟡 Title filter within given boards | Yes (pttBoards, defaults to Gossiping / Stock) |
| HardwareZone (Singapore) | 🟡 Title filter within given forums | Yes (hwzForums, defaults to 16 / EDMW) |
| Telegram | 🟡 Text filter within given channels | Yes (telegramChannels; leaving it empty skips Telegram with a warning) |
Input Fields
| Field | Type | Default | Description |
|---|---|---|---|
| brandKeyword | string | — | The brand/keyword to monitor (required) |
| competitorBrands | array | [] | Competitor brands — each gets its own pass, letting you compare share of voice in the output |
| searchAliases | array | [] | Extra search terms for the primary brand (English name/abbreviation/common misspellings) — primary brand only |
| platforms | array | all four | Which platforms to monitor, see "Platform Capabilities" above |
| pttBoards | array | ["Gossiping","Stock"] | Applies when platforms includes ptt |
| hwzForums | array | ["16"] | Applies when platforms includes hardwarezone |
| telegramChannels | array | [] | Required when platforms includes telegram, otherwise skipped with a warning |
| lookbackDays | integer | 7 | Only scrape content from the last N days, range 1-90 |
| maxMentionsPerPlatform | integer | 100 | Max mentions per platform per brand (after merging aliases), range 1-1000 |
| sentimentAnalysis | boolean | true | Whether to run sentiment analysis (lightweight keyword wordlist, not AI) |
| deduplication | boolean | true | Whether to dedupe within and across platforms |
| deltaMode | boolean | false | Whether to return only mentions new since the last run |
| proxyConfiguration | proxy | Apify datacenter proxy | On by default, to avoid rate limiting from sharing egress IPs with other runs |
Input Examples
Single brand, LIHKG and PTT only
{"brandKeyword": "誠品","platforms": ["lihkg", "ptt"],"lookbackDays": 30,"maxMentionsPerPlatform": 40}
Brand vs. competitor, with PTT/HardwareZone target lists
{"brandKeyword": "麥當勞","competitorBrands": ["肯德基"],"platforms": ["lihkg", "ptt", "hardwarezone"],"pttBoards": ["Gossiping"],"hwzForums": ["16"],"lookbackDays": 30,"maxMentionsPerPlatform": 30}
Scheduled Brand Monitoring
lookbackDays paired with deltaMode is designed for Apify Schedule:
- First run:
deltaMode: false(or omit it) to get a full historical baseline. - Subsequent scheduled runs (e.g. daily/weekly): turn
deltaModeon, and setlookbackDaysa bit longer than your schedule interval as a buffer (e.g. daily runs withlookbackDays: 3). Each run then returns only mentions not seen before (tracked via a brand-specific named KV store,SEEN-{hash of brand}, recording seenmention_ids across runs) — so a missed run won't drop data, and you won't see the same old mentions twice. - Mentions already seen but filtered out this run by deltaMode still count toward
skipped_deltain the run summary, so you can confirm the schedule is actually working (the number won't just sit at 0). - Every run also writes a
SUMMARYrecord to the KV store (counts per platform, sentiment breakdown, share-of-voice comparison) — handy for feeding a dashboard or pulling out for trend charts.
Notes
- Sentiment analysis is a lightweight, rule-based keyword wordlist (10 positive/negative terms each in Traditional Chinese and English), not an AI/LLM model. Score = (positive hits − negative hits) / (positive + negative + 1), with a ±0.15 threshold splitting positive/neutral/negative. Good for a quick read on general sentiment, not a substitute for precise sentiment judgment.
- Only public content is scraped — no account or login required. PTT's 18+ boards are handled automatically via the over18 cookie; every other platform here is a fully public page.
- True search vs. filter-based platforms: LIHKG runs an actual site-wide search, so in principle it can surface any matching discussion anywhere on the site. PTT/HardwareZone/Telegram only filter by title/text keyword within the boards/forums/channels you list — anything outside that list, or an unconfigured channel, is invisible to this actor. If your brand is discussed elsewhere, add that board/channel to the list yourself.
- Threads is planned for v1.1: Threads search is browser-rendered with no public JSON endpoint, so it needs a browser. This actor's v1 sticks to pure HTTP across the four platforms above. The $0.05/mention price point can actually absorb Threads' browser compute cost — v1.1 will add it via a separate browser adapter.
- searchAliases applies to the primary brand only: competitor brands are always searched/filtered using just their own brand term, never the primary brand's alias list.
- Deduplication rules: within a platform, dedup is by original post ID (a post counts once); across platforms, it's by a hash of normalized text (URLs/punctuation/emoji/whitespace stripped, lowercased) to catch reposts/duplicate content across platforms — the first one found is kept as canonical, and later ones are flagged
is_duplicate: true. Only non-duplicate mentions are billed. - maxMentionsPerPlatform is a per-platform, per-brand cap: if the primary brand has searchAliases set, the cap applies after merging and deduping the primary term with its aliases — it's not a separate cap per alias.
- If HardwareZone / PTT / LIHKG redesigns or adds anti-scraping measures down the line, that platform returns 0 rows with a warning instead of failing the whole run — the other platforms keep collecting data as normal.
FAQ
Q: Why are some fields (engagement_likes, etc.) always null?
A: Not every platform exposes like counts publicly. A null there isn't a broken field — that platform's public page simply doesn't carry that information.
Q: Why did I get far fewer mentions than expected?
A: The most common cause is that PTT/HardwareZone/Telegram filter within your target list, not a site-wide search — check that pttBoards/hwzForums/telegramChannels actually cover where your brand is likely to be discussed. It could also be lookbackDays set too short, or deltaMode being on with most mentions already seen in a prior run.
Q: Why do is_duplicate posts still show up in the dataset?
A: So you can see the full raw data and the duplicate relationship (you can trace duplicate_of back to the original mention). Duplicates are still pushed to the dataset — they're just not billed.
Q: Can I get only competitor mentions, without the primary brand?
A: Not currently — brandKeyword always runs. If you only want to compare competitorBrands against each other, add multiple competitors and just ignore rows where brand_matched equals your brandKeyword.
Disclaimer
This tool is for academic research and lawful business analysis only. Users must comply with the terms of service of each platform (LIHKG, PTT, HardwareZone, Telegram) and applicable laws. Do not use this tool to invade others' privacy, spread false information, or engage in any other unlawful activity. Sentiment analysis results are produced by a lightweight, rule-based algorithm, are for reference only, and do not constitute professional advice. The author accepts no responsibility for any misuse.
social listening, brand monitoring, LIHKG, PTT, HardwareZone, Telegram, sentiment analysis, share of voice, Asia social media monitoring