1688 Scraper — Product & Supplier Search, MOQ & Landed Cost
Pricing
from $3.50 / 1,000 search result cards
1688 Scraper — Product & Supplier Search, MOQ & Landed Cost
Scrape any 1688 category from one English keyword: English titles, MOQ price ladders, landed cost, dropship scores, compliance hints. Or watch a shortlist of offers for price drops and stock changes — daily snapshots, alerts, weekly trend report. Failed runs are never charged.
Pricing
from $3.50 / 1,000 search result cards
Rating
0.0
(0)
Developer
Kyle Wang
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
10
Monthly active users
19 hours ago
Last modified
Categories
Share
Research ANY product category on 1688.com — Alibaba's domestic wholesale marketplace — and get sourcing-grade rows, not raw Chinese HTML.
Type one English keyword ("led strip lights", "yoga mat", "phone case"), and get back research-ready products: machine-translated English titles, MOQ price ladders, supplier trust signals, a 0–100 dropship score, an estimated landed cost in USD, and compliance hints for your target market. Every row carries a scrapedAt timestamp so freshness is verifiable.
No Chinese needed. No 1688 account. Failed or zero-result runs cost $0; a successful run bills a $0.01 base fee plus per-event fees. Fail-not-billed.
New — Price Monitoring Mode: paste a shortlist of 1688 offer IDs (watchlistOfferIds), attach a Schedule (e.g. daily), and get a per-offer history curve, day-over-day / 7-day-low change metrics and price-drop / stock-tight alerts — without ever re-searching. See Price Monitoring Mode below.
Keywords: 1688, 1688 scraper, wholesale, dropshipping, product research, supplier search, landed cost, MOQ, China sourcing
🎯 What you can do with it
- Product selection — scan a category at factory prices before you commit to a supplier
- Price comparison — sort by price or sales and read the full quantity-break ladder per product
- Dropshipping evaluation — every product scored 0–100 on dropship-readiness (MOQ, 48h pickup, one-piece dropship support)
- Margin math — estimated landed cost (product + shipping + duty + fees) and suggested retail with margin % for US / EU / UK
- Compliance screening — required certs and risk level per target market (FDA / CE / Prop 65 / FCC hints)
📈 Price Monitoring Mode
Already know which 1688 offers you care about? Stop re-searching — watch their prices over time. Fill watchlistOfferIds (up to 200 offer IDs) and the Actor switches from search mode to monitoring mode: each run snapshots every watched offer at card level, appends it to your private history, and returns one snapshotItem row per delivered offer with its curve, change metrics and alert status.
Three steps:
- Fill the watchlist — paste the numeric offer IDs (from a product URL, e.g.
994632611553) intowatchlistOfferIds. Optionally set alert thresholds (alertOnPriceDropPct,alertOnStockTightPct) and awebhookUrl. - Attach a Schedule — the Actor never self-schedules; bind a Schedule (e.g.
0 8 * * *for 08:00 daily) so history accumulates. One run per day = one point on the curve. - Read the results — each successfully persisted offer produces one atomically billed
snapshotItemrow withsnapshotAt,current{price, moq, bookedCount, supplier},history{days, min, max, last7dLow},changes{vsPrevDayPct, vs7dLowPct, stockTightPct}, andalertHit. SetincludeTrendReport=truefor atrendReportroll-up.
What it costs (monitoring mode):
| Event | Price | When it's charged |
|---|---|---|
snapshot-item | $0.015 | Per offer successfully snapshotted and written to history |
trend-report | $0.25 | Once per run when includeTrendReport=true delivers a report |
alert | $0.00 | Never billed (price-drop / stock-tight alerts are a free retention hook) |
run-base-fee | $0.01 | Once per run that bills at least one event |
A daily run watching 10 offers costs 10 × $0.015 + $0.01 = $0.16 (no trend report). If the history store is unreachable, the run marks errorCode: KV_UNAVAILABLE, withholds successful snapshot payloads, and charges $0.00—no result is pushed for free. Truncated IDs (over 200) and invalid IDs are reported per-item and never billed.
Your history is private. Snapshots live in an owner-side named Key-Value store (price-snapshots) keyed by your Apify user id, so two users watching the same offer never see each other's curves. The Actor reaches it with a scoped, secret-injected API token — never a hard-coded credential.
Ready-made monitoring templates (one click):
- Track my 1688 shortlist prices daily — a 3-offer watchlist wired for a daily Schedule
- Weekly price-drop radar — a weekly drop / stock-tightening sweep with the trend report on
Monitor quick-start input:
{"watchlistOfferIds": ["994632611553", "951309417091", "700000000001"],"historyDays": 30,"alertOnPriceDropPct": 5,"alertOnStockTightPct": 20,"includeTrendReport": true}
⚡ Three points that matter
- Decision-grade enrichment, not raw dumps — landed cost, dropship score and compliance hints come attached to each product row. You stop paying for data you still have to research by hand.
- Honest billing —
search-item(and monitoringsnapshot-item/trend-report) uses the SDK's atomicActor.pushData(rows, eventName)path: budget-limit first, push the accepted prefix, then charge it.detail-itemandrun-base-feesettle only after the product rows are pushed; the pre-work billing plan reserves those events so they should settle in full, while any partial/zero/error is exposed asbillingInvariantViolationpluserrorBucketsin SUMMARY. - A budget cap you control — the effective ceiling is
min(input maxTotalChargeUsd, Apify platform cap). Current subscription-tier prices are read at runtime, detail/base costs are reserved before work, and the ledger uses the SDK's actualChargeResultcounts.
This is not presented as a distributed transaction across all events: the SDK atomically couples each result-row event to its dataset push, while detail-item and run-base-fee are separate post-push settlements protected by the pre-reserved budget and explicit invariant reporting.
⚡ One-click examples
Skip the input form — these public tasks run proven configurations in one click:
- 1688 Wholesale Search by Keyword — the starter run: one English keyword → factory prices in English
- 1688 Supplier Lookup — Factory & Trust Signals — best-selling offers first, with supplier trust signals on every row
- 1688 MOQ & Price Range Scan — filter a category to your CNY budget band and read the MOQ ladders
- 1688 Landed Cost Sourcing — US — duty, shipping and margin estimates for the US market
- 1688 Dropship-Ready Product Research — readiness scores for one-piece-shipping candidates
- 1688 Price Monitor for My Shortlist — daily price curves and drop/stock alerts for offers you already track
- Product Selection — 40 enriched products — the standard research batch (~$0.33)
- Price Comparison — sorted by price — cheapest first for instant comparison
- Price Ladder Deep Scan — MOQ price-break ladders across a whole niche
- Supplier Vetting Report — detail-enriched rows for supplier shortlisting
- MOQ Ladder Comparison — side-by-side MOQ and unit-price comparison
🔑 What keywords can you use? Any category.
This is not a vertical scraper — one input accepts any English product keyword. English keywords are sent to 1688.com as typed and 1688's own search matches them: common product terms like the ones below return relevant results, very niche English terms can return fewer. Pet-supply keywords are additionally mapped to Chinese search terms (500+ built-in mappings). Examples:
| Keyword | Typical use |
|---|---|
led strip lights | Consumer electronics price scan |
phone case | High-volume accessory sourcing |
yoga mat | Sports & fitness selection |
stainless steel water bottle | Home & outdoor comparison |
car phone holder | Auto accessories research |
plush toy | Gifts & toys compliance screening |
Anything sold on 1688.com is in scope — the plainer and more common the English product name, the better the match.
📄 Sample output
Actual row from a live run (keyword: "led strip lights"):
{"offerId": "994632611553","titleCn": "24V/220V户外防水灯带COB水下IP68灌胶无光斑柔性线性灯硅胶泳池","titleEn": "24V/220V Outdoor Waterproof LED Strip COB Underwater IP68 Flexible Linear Light","price": { "min": 4.7, "max": 93.94, "currency": "CNY", "unit": "piece" },"moq": 1,"salesTotal": 867,"supplierName": "Zhongshan Qinghe Lighting Co., Ltd.","isSuperFactory": true,"detailUrl": "https://detail.1688.com/offer/994632611553.html","skuDetails": [ "…quantity-break price ladder…" ],"estLandedCostUsd": {"totalLandedCostUSD": 2.77,"suggestedRetailPriceUSD": 8.31,"estimatedMarginPercent": 66.7},"dropshipReadyScore": 65,"dropshipGrade": "C+","compliance": { "targetMarket": "US", "suggestedCertifications": ["…"], "riskFlags": ["…"] },"scrapedAt": "2026-08-28T10:57:59.797Z"}
Plus 30 more fields per row: SKU details, attributes, shipping & stock, supplier repeat rate, factory-inspection flags, product images and description images.
Translation honesty rule: titleEn only ever carries an English title. Titles are translated via a free translation API chain (translationMethod="api") with an offline dictionary fallback (translationMethod="dictionary"). When neither can produce clean English for a title, titleEn is left empty rather than shipping a Chinese/English mix — the original Chinese is always preserved in titleCn.
🆚 How it compares
| This Actor | Other 1688 wholesale scrapers | Typical 1688 scrapers | |
|---|---|---|---|
| Startup / run fee | None — a $0.01 base fee applies only to successful runs | Often a per-run fee — billed even when nothing is delivered | Often yes |
| Failed / zero-result runs | $0.00 — never billed | Usually billed at least the startup fee | Usually billed |
| Enrichment trio (landed cost + dropship score + compliance) | Included | Not offered | Not offered |
Budget cap (maxTotalChargeUsd) | Pre-work cap + SDK atomic push/charge + factual ledger | Not offered | Not offered |
| English titles | Machine-translated | Chinese only | Chinese only |
| Freshness proof | scrapedAt on every row | — | — |
| Pricing | $0.005/search-item + $0.003/detail-item + $0.01 base (successful runs only) | Per-item + startup + extras | Per-row tables |
🛡️ Trust at a glance
| What we commit to | How it works here |
|---|---|
| Pay only for delivered results | Zero-result runs cost $0.00 — billed per row actually delivered; successful runs add a single $0.01 base fee, nothing else |
| No hidden usage fees | Pure pay-per-event pricing; proxy and platform compute costs are included, never passed through |
| Honest degradation | Every run's SUMMARY discloses exactly what happened — partial deliveries always come with a named reason |
| Audit-ready billing ledger | SUMMARY reports current-tier prices, effective cap, affordable rows, raw ChargeResult outcomes, factual charged counts, withheld rows and platform-count reconciliation |
| MCP / agentic-payment ready | Input, dataset, key-value-store and output schemas are all declared — machines can validate the contract before calling |
| Issues answered fast | Open an Issue instead of guessing — our response time is public on the developer profile |
| Loved it? Leave a review | If this saved you sourcing hours, a quick review helps other buyers find it — and we read every one |
💰 Pricing (pay-per-event, no subscription)
| Event | Price | When it's charged |
|---|---|---|
search-item | $0.005 | Per delivered product card |
detail-item | $0.003 | Per delivered card with full detail enrichment |
snapshot-item | $0.015 | Per offer successfully snapshotted in Price Monitoring Mode |
trend-report | $0.25 | Once per monitoring run when includeTrendReport=true |
run-base-fee | $0.01 | Once per successful run (charged once per successful run, only when at least one row was delivered) |
| Startup fee | $0.00 | Never |
There is no minimum charge. Small orders bill strictly per event (a 1-card run costs $0.015). The platform price list's minimalMaxTotalChargeUsd ($0.04) is a budget-PROTECTION parameter for the platform, not a minimum spend.
The "from $3.50 / 1,000" price shown on the Store page is the GOLD subscription-tier rate; on the FREE tier you pay $5 per 1,000 items (the list prices above).
Volume subscribers get the standard Apify platform tier discounts. At runtime the Actor reads those current tier prices plus Apify's platform cap, applies min(input cap, platform cap), reserves run-base-fee, and limits work and delivery to affordable rows. maxTotalChargeUsd: 0 means zero paid rows; the Console schema accepts 0 explicitly.
Failed or zero-result runs cost $0. A successful run bills a $0.01 base fee plus per-event fees ($0.005/search-item, $0.003/detail-item, $0.015/snapshot-item, $0.25/trend-report).
Worked examples (FREE tier):
| Run shape | Math | Total |
|---|---|---|
| 1-item trial (card only) | 1 × $0.005 + $0.01 base | $0.015 |
| 10 cards (card only) | 10 × $0.005 + $0.01 base | $0.06 |
| 40 fully enriched products | 40 × $0.005 + 40 × $0.003 + $0.01 base | $0.33 |
Best value at 20+ items — per-item fees amortize the $0.01 run fee. If includeDetails=true is requested with maxItems < 20, the Actor automatically switches to card-only before any proxy/browser starts; SUMMARY.deliveryShape.reason is DETAILS_MIN_20_AUTO_CARD_ONLY.
❓ FAQ
Do I need a 1688 account or any Chinese? No account, no Chinese. Type an English keyword and it is searched on 1688.com as typed (pet-supply terms are also mapped to Chinese); titles come back machine-translated to English (titleCn keeps the original).
How do I search 1688 by keyword in English? Put your term in keyword (e.g. phone case, yoga mat) and run — you get research-ready product cards with prices, MOQ ladders and supplier signals, no URL hunting.
Can I find suppliers / factories, not just products? Yes — every row carries supplier trust signals (name, super-factory flag, repeat-purchase rate, inspection flags) so you can shortlist suppliers, and sort=sales surfaces the highest-volume offers first.
How is this different from an Alibaba.com scraper? 1688.com is Alibaba's domestic wholesale marketplace — factory-direct prices well below Alibaba.com's export listings. This Actor turns that Chinese-only data into English, decision-ready rows (landed cost + dropship score + compliance).
What batch size is best value? 20+ items — per-item fees amortize the flat $0.01 run fee. Below 20, an includeDetails=true request is automatically delivered card-only; request includeDetails=false directly if that is already your intent.
What does the dropship score mean? A 0–100 readiness grade built from MOQ, 48h-pickup support and one-piece dropship availability — a fast filter for which offers are actually dropship-friendly.
How is landed cost calculated? Product price + estimated shipping + duty + fees for your targetMarket (US/EU/UK), returned with a suggested retail price and margin %. It's an estimate to compare offers, not a customs quote.
What happens on a failed or zero-result run? It costs $0.00. A run with no delivery because the search channel is blocked or unavailable ends as FAILED, with RISK_CONTROL_ZERO or INFRA_ERROR in SUMMARY; a genuine NO_MATCH remains a clean zero-result run. A successful run adds a single $0.01 base fee plus per-event fees, and every run writes a SUMMARY ledger (charged vs intended) you can audit.
Can I monitor prices over time? Yes — fill watchlistOfferIds, attach a Schedule, and the Actor switches to Price Monitoring Mode (history curve + drop/stock alerts). See Price Monitoring Mode above.
🧭 Part of the 1688 sourcing toolkit
- 🖼️ 1688 Image Search Scraper — have a product photo instead of a keyword? Reverse-image-search 1688 and get the same sourcing-grade rows.
- 🎵 TikTok Shop Scraper — spot a product going viral on TikTok Shop, then bring the keyword here to find the 1688 factory behind it.
🤖 For AI agents / MCP
All four schemas are published: input schema, dataset schema, key-value-store schema and Actor output schema. SUMMARY separates NO_MATCH, RISK_CONTROL_ZERO and infrastructure/billing buckets instead of treating every zero-result run as success. It also exposes deliveryShape{requested,effective,actual,reason}, tokenPath (raw warm acceptance versus later business success), billingPlan, factual chargedCount, and costGuard.freeRows: 0. Apify schemas cannot issue dynamic cross-field warnings, so the maxItems/includeDetails auto-downgrade rule is documented statically in both field descriptions.
- Complete output schema — every delivered field (English titles, MOQ price ladders, supplier trust signals, dropship scores, landed cost, compliance) is typed and documented, so tool-calling loops can parse results without guesswork.
- API-first — one English keyword in; one POST to
run-sync-get-dataset-itemsreturns the final dataset in a single call. No Chinese required, no browser session, login or captcha step. - Agentic payments ready — the effective cap is the lower of input and platform limits; work is pre-capped, detail/base costs are reserved, and search rows use the SDK's atomic push/charge path. The factual
ChargeResult.chargedCountcontrols the delivered prefix, while settlement anomalies are machine-readable inbillingInvariantViolationanderrorBuckets.
🔧 Input configuration
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | string | ✅ | — | English keyword, searched on 1688.com as typed; pet-supply terms are also mapped to Chinese search terms |
offerIds | string[] | — | — | Direct-fetch path: fetch these numeric IDs, bypassing keyword search. A detail request below 20 items auto-downgrades to card-only before browser/proxy work. includeDetails=false also delivers card rows through the mtop-primary transport. Price Monitoring is separate. |
maxItems | integer | — | 40 | 1–200. A requested detail batch below 20 is automatically card-only; see SUMMARY.deliveryShape. |
includeDetails | boolean | — | true | Requests enrichment. With maxItems < 20, effective mode is automatically card-only. false requests card-only directly. |
targetMarket | enum | — | US | US / EU / UK — drives landed-cost duty and compliance rules |
sort | enum | — | relevant | relevant / sales (most sold first) / price (low to high) — the delivered dataset arrives in that order |
priceMin / priceMax | number | — | — | Approximate price range filter in CNY, anchored to the card's min (bulk/MOQ) price: passed to 1688's search and re-checked at delivery — cards whose min price is outside the range are dropped and never charged. Note: a card's price.max (one-piece / top-of-ladder price) may still exceed priceMax, since 1688 prices by quantity breaks |
maxTotalChargeUsd | number | — | — | Additional hard billing ceiling. Effective cap is the lower of this and Apify's platform cap; 0 means no paid rows. |
watchlistOfferIds | string[] | — | — | Price Monitoring Mode: up to 200 offer IDs to watch. Filling this switches the run from search to monitoring (takes priority over keyword). $0.015 per snapshotted offer per run. Any watchlist size works (1–200) — the DETAILS_MIN_20 minimum does not apply to monitoring mode |
historyDays | integer | — | 30 | Monitoring curve window in days (1–400) |
alertOnPriceDropPct | number | — | — | Fire a free priceDrop alert when price fell ≥ this % vs the previous snapshot |
alertOnStockTightPct | number | — | — | Fire a free stockTight alert when the bookable amount shrank ≥ this % vs the previous snapshot |
webhookUrl | string | — | — | POST the alert payload here when an alert fires (non-fatal, time-bounded) |
includeTrendReport | boolean | — | false | Also deliver a weekly trendReport roll-up ($0.25) |
proxyConfiguration | object | — | Residential (CN) | Defaults to Apify residential proxies; override only if you know why |
Quick start input:
{"keyword": "phone case","maxItems": 30,"includeDetails": true,"targetMarket": "US","sort": "relevant"}
Typical default run: 30 fully-enriched products ≈ $0.25, finished in under 5 minutes.
Reviews
Found a bug or have a wishlist? Open an Issue — a fixed bug helps you more than a one-star rating, and we answer fast.
If this run saved you sourcing hours, a quick review on the Store page helps other buyers find it — 30 seconds, hugely appreciated.