HKTVmall Scraper – HK E-commerce Products, Prices & Stock
Pricing
from $2.00 / 1,000 search results
HKTVmall Scraper – HK E-commerce Products, Prices & Stock
Scrape HKTVmall (Hong Kong's largest online store) product listings without an API or login: SKU, name, brand, price, rating, stock and category. Bulk-paste keywords; export structured JSON/CSV/Excel. Ideal for e-commerce price monitoring and product research.
Pricing
from $2.00 / 1,000 search results
Rating
0.0
(0)
Developer
Chad
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
HKTVmall Scraper | HK Online Shopping Products, Prices, Stock & Ratings (No API, No Login)
One Actor to scrape HKTVmall (Hong Kong's largest online shopping platform) keyword-search product listings: price, original price / discount, stock status, rating, review count and category. It reads the Algolia product search index behind HKTVmall's storefront search — no login, no API token — and handles hundreds of bulk-pasted keywords at once. Everything goes through public JSON endpoints with no browser: fast and low-cost.
Who it's for: Hong Kong e-commerce price monitoring / comparison, tracking price and stock changes for specific products, market research reports, cross-border e-commerce data analysis, academic datasets, and engineers building side projects.
What you get
Every product returns the fields below (missing values are always null — no field is dropped):
| Field | Description | Example |
|---|---|---|
product_code | HKTVmall product code (SKU, incl. variant) | H6771001_S_K01-C014180FC |
base_product | Base product code (without variant suffix) | H6771001K01-C014180FC |
name | Product name (Chinese, falls back to English) | [原箱] Espresso Barista 拿坡利鋁製咖啡粉囊 - 100粒裝 |
brand | Brand | KIMBO |
selling_price | Current price (HK$) | 450 |
selling_price_range | Price range (when variants differ) | 400-600 |
saved_price | Discount amount (HK$, first discount record) | 49 |
average_rating | Average rating (0-5) | 5 |
number_of_reviews | Review count | 1 |
in_stock | Whether it is in stock | true |
stock | Stock status code | inStock |
loyalty_point | Loyalty points earned on purchase | 0 |
number_of_variants | Number of variants (color / spec) | 1 |
main_category | Main category | 超級市場 |
sub_category | Sub-category (first level) | 飲品 即沖飲品 |
category_path | Full category path (levels joined by /) | 超級市場/飲品 即沖飲品/即飲咖啡 奶茶/咖啡 |
image | Main product image URL | https://cdn-media.hktvmall.com/.../xxx_300.jpg |
product_url | Product URL (see "Notes" disclaimer below) | https://www.hktvmall.com/hktv/zh/main/.../p/H6771001_... |
keyword | The search keyword that matched this row | coffee |
source_mode | Source mode, always search in v1.0 | search |
source_query | Query used when scraping (same as keyword) | coffee |
scraped_at | Scrape timestamp (ISO 8601) | 2026-07-04T05:23:28.617Z |
Modes (v1.0 has search only)
| Mode | What it does | Billing event | Price |
|---|---|---|---|
| 🔎 search | Keyword search → product listings (price, stock, rating, category) | search-listing (per row) | $0.002 |
Each Run also charges a one-time apify-actor-start fee of $0.005. All charges are billed only after data is successfully written to the dataset, and the Run log prints total_items / charged / skipped for reconciliation.
detail (full single-product data) and category (category browsing) are planned for v1.1; v1.0 ships only the validated search-listing mode.
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | enum | optional | search | v1.0 supports search only. |
keywords | string[] | one required (or bulkInput) | — | Search keywords; one concept per keyword works best. Up to 50 per run. |
bulkInput | string | optional | — | One per line (press Enter, no quotes or commas). Merged into keywords at runtime. Fastest is to paste a column from Google Sheets / Excel. |
maxItems | integer | optional | 50 | Max results per keyword (1-500). |
Examples
🔎 Basic keyword search
{"mode": "search","keywords": ["coffee"],"maxItems": 20}
📋 Bulk keywords (one per line)
{"mode": "search","bulkInput": "coffee\nshampoo\ndiapers","maxItems": 30}
🇭🇰 Chinese keywords (Cantonese / Traditional Chinese search)
{"mode": "search","keywords": ["洗髮"],"maxItems": 50}
Notes
- Public data only. No login and no HKTVmall account required; it never accesses anything behind authentication.
- No login / no API token. Fill in the input and run — no keys to configure. The Algolia key used for search is the public search-only key HKTVmall's front-end hands to every browser; it is re-extracted from the search page on every Run (never hard-coded), so key rotation does not break the scraper.
product_urldisclaimer: the vast majority of matches include HKTVmall's official product-page URL (100% in tested samples), but if a few results lack it the scraper falls back to a "search page keyed by product code" link rather than the product detail page. This affects only link precision, not the correctness of other fields.- Polite to the site. Per-domain concurrency is naturally limited (keywords are crawled sequentially), failures retry with exponential backoff up to 3 times, and it auto-stops after 5 pages with no new data — no idle burn.
- A product matching multiple keywords is emitted once per keyword with different
keyword/source_query(billed per query). - Per-review content (reviews) is planned for a later version; this version only exposes the aggregate
average_rating/number_of_reviewsinsearchmode.
FAQ
Q: Why are some fields null?
HKTVmall's own product data isn't complete for every item (some have no discount record or no reviews). Whenever the source value is missing, the scraper returns null honestly rather than fabricating data.
Q: How is billing calculated?
Each Run charges apify-actor-start once ($0.005); each product listing charges search-listing ($0.002). Both are billed only after data is written to the dataset, and the Run log prints the actual charged count.
Q: What if I get no data? Check for typos and try a more common keyword (both Chinese and English are supported). The scraper auto-stops after 5 pages with no new data and logs the reason — no idle burn.
Q: What is category_path?
It's HKTVmall's category hierarchy (main → sub, up to 4 levels), joined by /, skipping any missing levels.
Q: Do you support the product detail page (full single-product data)?
v1.0 ships search-listing only. If demand is proven, a detail mode is planned for v1.1.
Deploy
apify login # first time: paste your Apify token (never written to the repo)apify push # build and upload to Apify Store
After publishing, set the PPE event prices in Apify Console → Monetization:
apify-actor-start $0.005, search-listing $0.002.
Disclaimer
This scraper only collects publicly visible HKTVmall product search data, for research and personal use, not for any unauthorized commercial resale. Please ensure your use complies with HKTVmall's Terms of Service and your local laws. This Actor makes no guarantee about the accuracy, timeliness or completeness of the data — always refer to the live HKTVmall website for current prices and stock.
HKTVmall scraper, Hong Kong e-commerce, HK online shopping, product price monitor, stock tracker, HKTVmall API, Hong Kong retail data, price comparison Hong Kong