SMZDM Scraper - 什么值得买 Deals & Search
Pricing
from $10.00 / 1,000 deal scrapeds
SMZDM Scraper - 什么值得买 Deals & Search
Scrape SMZDM (什么值得买): deal feed with prices, malls, brands, historical-low tags and votes, plus keyword search with built-in JS-challenge bypass. Filters for mall, price, category and price drops.
Pricing
from $10.00 / 1,000 deal scrapeds
Rating
0.0
(0)
Developer
Long Li
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
SMZDM Deals Scraper - 什么值得买 好价
Scrapes SMZDM (什么值得买, "What's Worth Buying") - China's largest shopping-deal community - straight from its public homepage deal feed API:
- 💰 Deal feed - latest deals with prices, malls (京东/天猫/拼多多/...), brands, category trees
- 🔍 Keyword search - query any keyword on SMZDM search (好价 channel); the built-in headless browser clears the site's JS challenge automatically, with residential-proxy retry on the Apify platform
- 🏷️ Deal intelligence - highlight tags (历史低价, 20天新低, 京东自营), worthy/unworthy votes, sold-out/expired flags
- 🎯 Server-side filtering - malls, price range, categories, price-drop tags and min votes, all matched before anything is saved
- 🛒 Buy links - every purchase entrance incl. coupon links, resolved target domains
- 💬 Comments - per-deal comments with authors, reply chains, IP locations and photos (detail mode)
- 🔁 Monitoring mode - remembers seen deals across runs, outputs only new ones (perfect for schedules)
Input
| Field | Default | Description |
|---|---|---|
startUrls | [] | Specific deal URLs for full detail + comments. When set, search and the feed are skipped. |
searchKeywords | [] | Keywords to search on SMZDM (好价 channel). Search pages need a headless browser (JS challenge) - the actor handles this automatically. When set, the feed is skipped. |
searchMaxPages | 3 | Result pages per keyword (~20 deals/page). |
maxItems | 100 | Max deals from the homepage feed (20 per page). |
malls | [] | Keep only deals from these malls. Substring match: 天猫 covers 天猫精选/天猫超市/天猫国际官方直营. Observed: 京东 (90%), 京东全球购, 天猫精选, 天猫超市, 天猫国际官方直营, 拼多多, 唯品会. |
categories | [] | Keep only deals in these categories (substring match on any tree level). Observed: 食品生鲜 (52%), 日用百货, 服饰鞋包, 电脑数码, 运动户外, 家居家装, ... |
minPrice / maxPrice | 0 | Numeric price bounds in CNY; 0 = unbounded. Setting a bound also drops unpriced posts (~9% of the feed is news). |
onlyPriceDrops | false | Keep only deals tagged 历史低价 or any N天新低 variant (~21% of the feed). |
requireTags | [] | Keep only deals carrying at least one of these tags (substring). Frequent: 拼单 (29%), 京东自营 (28%), 每日白菜 (19%), 低于常卖价 (17%), 手慢无. |
minWorthy | 0 | Min 值得 upvotes. Votes accumulate over hours - best for backfill runs, not fresh monitoring. |
minFavorite | 0 | Min 收藏 favorites. Favorites track purchase intent (~3.5x stronger than votes); also grows over hours. |
dedupeByTitle | false | Skip same-product reposts (~5% of the feed is evergreen deals re-published under new ids; marketing prefixes like 今日必买/值友专享 are stripped before comparing). Remembers titles across runs in monitoring mode. |
includeDetail | false | Also open each deal page for exact price, breadcrumb categories, author and top comments. |
maxCommentsPerDeal | 30 | Comment cap per deal in detail mode (0 disables). |
mallFilter | "" | Legacy single-mall exact filter; prefer malls. |
skipSeenItems | false | Only output deals not seen in previous runs (incremental monitoring). |
maxConcurrency | 2 | Parallel requests for detail pages. |
proxyConfig | - | Optional proxy. If SMZDM's WAF blocks the run, residential proxy kicks in automatically. |
All filters combine with AND; multiple values inside one list are OR. They apply to feed mode
(startUrls mode ignores them). Feed percentages come from a 674-deal sample of the live feed.
Output
Dataset items of two types (itemType field):
deal - dealId, title, url, price, priceText, mall, mallUrl, brand,
topCategory, categories[], tags[], imageUrl, buyUrl, buyDomain, buyOptions[],
worthyCount, unworthyCount, commentCount, favoriteCount, reporter, authorId,
authorName, summary, isSoldOut, isTimeout, publishedTimeText, source
comment (detail mode) - commentId, dealId, dealUrl, text, images[], authorName,
authorId, authorUrl, replyTo, createdAt, createdAtText, authorLocation
Example:
{"itemType": "deal","dealId": "183861924","title": "今日必买:金典 伊利金典纯牛奶250ml*24盒整箱7月产","price": 31.67,"mall": "京东","categories": ["食品生鲜", "水饮冲调", "奶类制品", "常温牛奶"],"tags": ["手慢无", "历史低价", "价格低于618"],"worthyCount": 42,"publishedTimeText": "23:18"}
How it works
The actor talks directly to SMZDM's public feed endpoint (/homepage/json_more) which returns
fully structured JSON - no browser needed, so runs are fast and cheap. Search mode is the
exception: search.smzdm.com hides behind a JS challenge, so keyword searches run through a
shared headless Chromium that executes the challenge automatically (and retries through the
Apify residential proxy when the platform IP gets a captcha interstitial). Search result cards
carry the real publish timestamp (publishedAt), unlike feed items whose timesort is
request-anchored. Detail pages and comments are server-rendered HTML parsed with battle-tested
selectors. The site's WAF is handled by sending browser-like XHR headers and, when challenged,
retrying through the Apify residential proxy automatically.
Comment createdAt values are resolved from relative texts ("47分钟前") against scrape time and
are therefore approximate; createdAtText always carries the original.
Legal note
Scrapes publicly available data only, without login. Use responsibly and in line with SMZDM's terms of service.
Changelog
See CHANGELOG.md.