
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape public 1688.com wholesale search results and product details, including tiered prices, supplier factory stats, and shipping. No login required.
Pull public wholesale products and supplier data from 1688.com. Search by keyword in English or Chinese, or open products by numeric offer ID, and get tiered CNY prices, minimum order quantities, specs, gallery images, shipping terms, and the supplier's factory profile. No 1688 account or login needed.
| Field | Type | What it does |
|---|---|---|
keywords | array | Product keywords in English or Chinese. Each is searched on its own. |
offerIds | array | Numeric offer IDs from product URLs. Keywords and filters are ignored when set. |
maxResults | integer | Max products per keyword. Default 10, no maximum. |
sortBy | select | relevance, bestSelling, priceAsc, priceDesc. |
priceMin, priceMax | integer | Unit price bounds in yuan. 0 means no bound. |
minOrderQuantity | integer | Keep suppliers whose minimum order is at most this. |
merchantType | select | any, superFactory, verifiedMerchant. |
province, city | string | Chinese names, such as 广东 and 深圳市. |
includeSkuDetails | boolean | Add each color and model with price and stock. Makes rows much larger. |
includeDescriptionHtml | boolean | Add the raw description HTML. |
includeSupplierIntelligence | boolean | Add package size per variant, the sales headline, compliance notes, and badges. |
proxyConfiguration | object | Datacenter proxy in China by default. |
{
"keywords": ["wireless earbuds"],
"maxResults": 10,
"sortBy": "relevance"
}
To open products you already know, use the number in the URL (https://detail.1688.com/offer/927875250705.html uses 927875250705):
{
"offerIds": ["927875250705"]
}
One dataset row per product.
| Field | Description |
|---|---|
offerId, title, detailUrl | Product id, title, and link. |
price | Min and max unit price and currency (CNY). |
quantityPrices | Quantity tiers with price per tier. |
minOrderQuantity, stock, unit | Minimum order, stock, and unit. |
soldDisplay, saledCount | Sales figures shown on the page. |
images, videoUrl, descriptionImages | Media. |
specs | Product attributes such as material and process. |
shipping | Delivery promise, post fee, and protections. |
categoryPath, province, city | Category and location. |
supplier | Company, seller type, factory stats, certifications, address, and shop link. |
{
"offerId": "927875250705",
"title": "跨境适用苹果18promax手机壳磁吸16防摔磨砂iphone17pm保护壳批发",
"detailUrl": "https://detail.1688.com/offer/927875250705.html",
"price": { "min": 7.04, "max": 7.5, "currency": "CNY" },
"quantityPrices": [
{ "quantityRange": "50~499个", "quantityMin": 50, "quantityMax": 499, "price": 7.5 },
{ "quantityRange": "500~2999个", "quantityMin": 500, "quantityMax": 2999, "price": 7.32 },
{ "quantityRange": "≥3000个", "quantityMin": 3000, "quantityMax": null, "price": 7.04 }
],
"minOrderQuantity": 50,
"soldDisplay": "已售10万+件",
"province": "广东",
"city": "佛山",
"specs": [
{ "name": "材质", "value": "优质TPU" },
{ "name": "工艺", "value": "注塑" }
],
"shipping": { "deliveryDays": 30, "logisticsText": "承诺30天发货", "postFee": 8 },
"supplier": {
"companyName": "佛山市南海区三丰手机配件有限公司",
"sellerType": "super_factory",
"stats": { "factoryArea": 20380, "employees": 484 }
}
}
The example is trimmed. Real rows also include images, the full spec list, supplier details, and description images.
$0.002 per product saved, which is $2.00 per 1,000 products, plus platform usage for compute and proxy traffic. Offer IDs that are invalid or cannot be opened are not charged and produce no row.
Worked example: a 10-product search costs $0.02 in product fees plus about $0.002 of platform usage. Proxy traffic is light, about 0.04 GB per 1,000 products (about $0.04 on the default China datacenter proxy at $1 per GB; $0.08 if pages are retried over residential at $2 per GB), so 1,000 products cost about $2.00 in fees plus roughly $0.15 of compute and proxy.
Is it legal to scrape 1688? The actor reads public search results and product pages without logging in. You are responsible for how you use the data and for following local law and 1688's terms.
Do I need an account or my own proxy? No. A China datacenter proxy is configured by default. Pages 1688 refuses there are retried through a China residential proxy.
Does English search work? Yes. Chinese keywords usually return more listings because 1688 is a domestic marketplace.
Why are some fields empty?
Some listings hide factory stats, video, or description text, so those fields are null. An offer that could not be opened this run is listed in the run's OUTPUT record under failedInputs so you can retry that ID.
What if I paste an invalid offer ID?
It is skipped without a charge and listed with the reason in the run's OUTPUT record under failedInputs, so a workflow can match every input.
Can I schedule it or use the API? Yes, through schedules in the console or the API.
OUTPUT record (failedInputs).Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsarrayOptionalSearch keywords
Product keywords in English or Chinese. Each keyword is searched on its own, and Max results applies to each one. Ignored when Offer IDs are set. Chinese keywords usually match more listings.
offerIdsarrayOptionaldefault []Offer IDs
Numeric 1688 offer IDs, the number in a product URL such as offer/735353578254. When this list is set, keywords and filters are ignored.
maxResultsintegerOptionaldefault 10Max results
Maximum products to save for each keyword. No upper limit: the search runs until this many products are saved or 1688 has no more matches. Ignored when Offer IDs are set.
Filters apply to keyword search only. They are ignored when Offer IDs are set.
sortByenumOptionaldefault "relevance"Sort order
How keyword search results are ordered.
priceMinintegerOptionaldefault 0Minimum price (CNY)
Keep products whose unit price is at least this many yuan. Leave empty or 0 for no minimum.
priceMaxintegerOptionaldefault 0Maximum price (CNY)
Keep products whose unit price is at most this many yuan. Leave empty or 0 for no maximum.
minOrderQuantityintegerOptionaldefault 0Minimum order quantity
Keep suppliers whose minimum order is at most this quantity. Leave empty or 0 for no limit.
merchantTypeenumOptionaldefault "any"Merchant type
Filter by supplier verification. Super Factory is a verified manufacturer. Verified Merchant is a checked seller.
provincestringOptionalSupplier province
Chinese province name, for example 广东 or 浙江.
citystringOptionalSupplier city
Chinese city name, for example 深圳市 or 义乌市.
These options add extra fields. They are off by default.
includeSkuDetailsbooleanOptionaldefault falseInclude SKU variants
Add each color and model with its price and stock. This makes each product much larger.
includeDescriptionHtmlbooleanOptionaldefault falseInclude description HTML
Add the raw description HTML. Description image URLs are always included.
includeSupplierIntelligencebooleanOptionaldefault falseInclude supplier intelligence
Add package size per variant, the sales headline, compliance notes, and product badges when the listing has them.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to open 1688 pages. Datacenter addresses in China are the default. Pages 1688 refuses on the chosen group are retried once through the other group (China residential or China datacenter).
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| offerId | string | null | 1688 offer ID |
| title | string | null | Product title |
| detailUrl | string | null | Product page URL |
| price | object | null | Minimum and maximum unit price in CNY |
| quantityPrices | array | null | Wholesale price tiers |
| province | string | null | Supplier province |
| city | string | null | Supplier city |
| minOrderQuantity | integer | null | Minimum order quantity |
| saledCount | integer | null | Units sold |
| saledCountStr | string | null | Sales headline |
| categoryName | string | null | Leaf category |
| categoryPath | string | null | Category path |
| supplier | object | null | Factory and company profile |
| images | array | null | Gallery image URLs |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One wholesale product saved to the dataset. | $0.002 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/1688-wholesale-scraper').call({
"keywords": [
"wireless earbuds"
],
"offerIds": [],
"maxResults": 10,
"sortBy": "relevance",
"priceMin": 0,
"priceMax": 0,
"minOrderQuantity": 0,
"merchantType": "any",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
],
"scrapelyProxyCountry": "CN"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/1688-wholesale-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/1688-wholesale-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Cheapest wholesale offers from Guangdong suppliers, sorted by price.
Full product record with every SKU variant and its price.
Product offers plus supplier profile and trust details.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.