Piotr VassevPiotr Vassev

How to scrape 1688 products and build a supplier shortlist

If you're sourcing a product on 1688, the useful first result is a short list of comparable offers with prices and supplier links. The 1688.com Listings Scraper collects those offers from keyword searches or known offer IDs. I maintain the Actor on Apify, where you can run it in your browser and download the results.

Start with a small search. Add detail pages once you've checked that the results match what you want to buy. This guide uses phone cases as the example and shows where the pricing data needs a closer look.

1688 wholesale product data illustration

What to collect first

Start with listing-only output. Turn on includeDetails when you need information from individual offer pages.

OutputWhat you get
Listing rowsOffer ID, title, starting price, location, and listing URL. Use these to check search relevance.
Detail rowsAdditional price entries, MOQ, attributes, supplier information, logistics, and images. Use these to review selected offers.

Fields depend on what the source page supplies. A listing with a low starting price may represent a different variant or order quantity from the product you're considering. Keep the offer URL so you can check the context.

You need an Apify account and either a keyword or an offer ID. No personal 1688 session field is required by the current input schema. Leave Proxy configuration at its default for the first run. The current build handles proxy fallbacks; older advice to force mainland China residential proxies on every request no longer describes the default setup.

Result fees as of September 6, 2026: $1 per 1,000 listing rows, or $4 per 1,000 detail rows. A 20-row listing sample has $0.02 in listing-event fees. The Actor also lists a $0.00005 start event per GB of allocated memory, with a one-event minimum. Check the current pricing and your run's charge breakdown before scaling up.

Run a small phone-case search

1. Enter one keyword

Open the 1688 scraper and select Try for free. Sign in to Apify if needed. In the Input form, set Search keywords to 手机壳, the Chinese term for phone case.

Chinese keywords are a useful starting point on this marketplace. Check the first results before adding more terms; the language of a query is no guarantee that the offers match your intended product.

2. Set a limit and keep detail pages off

Set Max items to 20, Max search pages per keyword to 1, and leave Include detail pages off. In the JSON input editor, the same setup is:

{
  "keywords": ["手机壳"],
  "maxItems": 20,
  "maxPagesPerKeyword": 1,
  "includeDetails": false
}

maxItems caps output across the run. The page setting controls how far each keyword search goes, so either limit can stop collection. The current schema describes pages of up to 50 offers; a page can return fewer. Don't use maxItems: 0 for a trial, because zero removes that cap.

3. Inspect and export the output

Click Start, wait for the run to finish, and open its output dataset. Read several titles and follow a few url values. Do they lead to phone cases, or did the search return accessories or offers for a model you don't need?

Choose Export → CSV for a spreadsheet. Keep offerId, title, priceFrom, location, and url for the initial shortlist. Import the file as UTF-8 if Chinese characters don't display correctly.

Example output is shown below. Your search will return a different set of offers.

Example 1688 product dataset

Look more closely at a few offers

Once you find relevant products, copy their offerId values into a second run. Clear the search keywords and turn on detail pages. This avoids running another broad search just to investigate known offers.

For example, this input requests the offer used in the published sample. It's a historical example, so check that the offer is still available or substitute an ID from your own search.

{
  "keywords": [],
  "offerIds": ["782846321577"],
  "maxItems": 1,
  "includeDetails": true
}

Here is an abbreviated detail record from the published sample, dated May 12, 2026:

{
  "offerId": "782846321577",
  "priceFrom": 12.8,
  "priceTo": 27,
  "minOrderQuantity": 1,
  "tierPrices": [
    { "price": 12.8, "beginAmount": 1 },
    { "price": 27, "beginAmount": 1 }
  ],
  "sellerCompany": "广州市威卡诺塑料制品有限公司",
  "location": "广东广州",
  "url": "https://m.1688.com/offer/782846321577.html",
  "scrapedAt": "2026-05-12T11:00:00.000Z"
}

Notice that both price entries start at quantity 1. This example does not establish a volume discount. The different prices need to be checked against the offer page, including its variants and order terms. Don't turn every tierPrices array into a quantity-discount curve just because of the field name.

The same caution applies to logistics. A unitWeight of zero in an output record should not become free shipping in your cost calculation. Treat it as something to verify with the supplier.

Turn the export into a sourcing shortlist

Use the first CSV to select offers, then join the detail export back to it on offerId. In a spreadsheet, you can use a lookup on that column. Keep the original source fields and add your own review columns:

Review columnWhat to record
Exact product matchModel, material, size, and variant you actually need
Price at your quantityThe applicable quote or price tier, checked against the offer
Order requirementMOQ and any variant-specific minimum
SupplierCompany name and offer/store link for follow-up
Costs still missingDomestic freight, international shipping, taxes, and inspection

For a concrete first pass, keep offers for the same phone model and case material, remove duplicate offerId values, then compare the prices that apply to your intended order size. Set aside offers with unclear quantities rather than ranking them as the cheapest.

What you have now is a shortlist to investigate. Listing data alone doesn't verify that a seller is the manufacturer or establish the quality of the goods.

If you also collect Alibaba listings or AliExpress listings, match the actual product and order terms before comparing prices. A matching keyword is not enough to establish that two offers are the same SKU.

Common snags

No useful matches: narrow or change the keyword and run one page again. Review titles and images before paying for detail enrichment.

An empty or failed run: check the log for blocked requests and confirm that the keyword or offer still works on 1688. The Actor retries through alternative proxy pools, but source restrictions can still prevent collection. Avoid repeatedly increasing the limits on a failing input.

Fewer results than expected: both the item cap and the per-keyword page cap apply. The current schema documents a source ceiling of 2,000 results per keyword, even though the page-limit input accepts larger values. A larger setting doesn't guarantee more source results.

Missing supplier fields: check that detail mode was enabled and the detail request succeeded. Keep unknown values blank in the shortlist rather than treating them as zero or as proof that the supplier lacks that attribute.

Nested data is awkward in CSV: use JSON for tierPrices, attributes, and logistics. Flatten the fields you need deliberately; don't discard quantity thresholds when extracting prices.

For repeat checks, save known offer IDs in an Apify task and schedule it. Keep dated snapshots keyed by offerId to calculate changes. The Node.js example covers API access if you want to pull results into your own code.

Questions before you run

Should I use Chinese or English keywords?

The Actor accepts both. Try a specific Chinese product term first, inspect the results, and adjust it to your product. Translating a keyword does not guarantee that the offers are comparable.

Can I scrape a product I already know?

Yes. Put its offer ID in offerIds and clear keywords to skip search. Turn on includeDetails when you need the detail-page fields, and set maxItems to the number of offers you intend to collect.

Does the lowest scraped price include shipping?

Do not assume it does. Check the variant, order quantity, and delivery terms on the offer page. Build shipping and other landed costs into your own comparison.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn