# Douyin Shop Product Scraper 抖音商城: Price, Sales, Commission (`memo23/douyin-product-scraper`) Actor

Search Douyin shop (抖音商城 / 精选联盟) products by keyword with no login: final price, monthly sales, 30-day daily sales, positive-review rate, affiliate commission rate and amount, promoting creators, shop and shop score. Filters by price, sales and commission. $5 per 1,000 products.

- **URL**: https://apify.com/memo23/douyin-product-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Douyin Shop Product Scraper 抖音商城: Price, Sales & Commission

Search **Douyin shop (抖音商城 / 精选联盟)** products by keyword and get each product's **final price, monthly sales, a 30-day daily sales trend, positive-review rate, affiliate commission, the number of creators promoting it, and its shop**. Filter by price, sales, commission, reviews and shop score; products you filter out are not charged. **$5 per 1,000 products.** No login, no cookies, no API key.

![How Douyin Shop Product Scraper works](https://api.apify.com/v2/key-value-stores/2JHfYdc6hw7pOTFFL/records/how-it-works-douyin-shop.png)

```json
{
  "keywords": ["蓝牙耳机", "蓝牙耳机 降噪", "宠物零食"],
  "minCommissionRate": 20
}
```

### Why Use This Actor?

- **Sales numbers, not just listings.** Monthly sales plus the last 30 days day by day, so you can see what is selling now and whether it is rising.
- **Affiliate data.** Commission rate, commission per sale and how many creators already promote the product: the numbers creators and MCNs use to pick products.
- **Filters that save money.** Price, monthly sales, commission, positive-review rate and shop score are applied before billing.
- **Fair billing.** Each product is billed once per run, even when several keywords find it.
- **$5 per 1,000 products.**

### Use Cases

- **Product research:** find what sells on Douyin in a category, at which price, and how fast.
- **Affiliate selection (选品):** shortlist products with high commission and strong sales for live streams and short videos.
- **Competitor monitoring:** track rivals' prices, sales and commission over time with a scheduled run.
- **Cross-border sourcing:** spot products trending in China before they reach other markets.
- **Market sizing:** sum monthly sales across the top products for a keyword.

### How It Works

1. Each keyword is searched on Douyin's product marketplace and its top 30 products are read.
2. Every product is read with its price, sales, sales trend, reviews, commission and shop.
3. Your filters are applied; products that do not match are dropped without charge.
4. Products found by more than one keyword are delivered once.

### Input Configuration

| Field | Type | Description |
|---|---|---|
| `keywords` | array | Products to search for; each gives its top 30 products. Chinese keywords match best (防晒霜, not sunscreen). |
| `maxResultsPerKeyword` | integer | 1-30. Default 30. |
| `maxItems` | integer | Cap for the whole run. Free-plan runs return up to 100. |
| `minPrice`, `maxPrice` | number | Final price range in yuan. |
| `minMonthlySales` | integer | Units sold in the last month. |
| `minCommissionRate` | number | Affiliate commission in percent, e.g. 20. |
| `minPositiveReviewRate` | number | Share of positive reviews in percent, e.g. 90. |
| `minShopScore` | number | Douyin shop score out of 100, e.g. 85. |

### Output Sample

A product for 蓝牙耳机 (2026-10-28; `salesTrend` holds 30 days, shortened here):

```json
{
  "productId": "3830609551770648837",
  "title": "【四个耳机】2026新款无线蓝牙耳机高颜值HIFI音质降噪舒适运动通用",
  "url": "https://haohuo.jinritemai.com/ecommerce/trade/detail/index.html?id=3830609551770648837",
  "imageUrl": "https://p3-aio.ecombdimg.com/obj/ecom-shop-material/png_m_dcc4ff67225cce8ea4b7d43094643aa2_sx_1216116_www1080-1080",
  "price": 29.9,
  "priceLabel": "到手价",
  "regularPrice": null,
  "currency": "CNY",
  "monthlySales": 68963,
  "monthlySalesScope": "listing",
  "last30DaysSales": 68880,
  "salesTrend": [
    { "date": "2026-10-25", "sales": 2855 },
    { "date": "2026-10-26", "sales": 2677 },
    { "date": "2026-10-27", "sales": 2418 }
  ],
  "positiveReviewRate": 92,
  "commissionRate": 10,
  "commissionPerSale": 2.99,
  "adCommissionRate": null,
  "promotingCreators": 1703,
  "shopId": "156027320",
  "shopName": "金环宇科技",
  "shopScore": 83,
  "category": "3C数码及配件",
  "subcategory": "影音设备及配件",
  "leafCategory": "耳机",
  "tags": ["流量扶持", "消费券", "运费险"],
  "rankingNote": "入选3C数码及配件热推榜",
  "searchKeyword": "蓝牙耳机",
  "position": 23
}
```

### Key Output Fields

| Field | Meaning |
|---|---|
| `price`, `priceLabel`, `regularPrice` | Final price in yuan (到手价) and, when shown, the price before discount |
| `monthlySales` | Units sold in the last month; `monthlySalesScope` is `same-item` when Douyin counts all listings of the same item (同款月销) |
| `salesTrend`, `last30DaysSales` | Units sold per day over the last 30 days, and their sum |
| `positiveReviewRate` | Share of positive reviews in percent (null with no reviews yet) |
| `commissionRate`, `commissionPerSale` | Affiliate commission in percent and in yuan per sale |
| `adCommissionRate` | Extra commission for promoting with ads (双佣金), when offered |
| `promotingCreators` | Creators already promoting the product |
| `shopName`, `shopScore` | The shop and its Douyin score out of 100 |
| `category`, `subcategory`, `leafCategory` | Douyin's category path |
| `tags`, `rankingNote` | Badges such as 包邮 or 运费险, and a ranking note such as 入选…热推榜 |
| `position` | Rank in the search for `searchKeyword` |

### FAQ

**Can I search in English?**
Douyin is a Chinese marketplace: "bluetooth earphones" found 3 products, 蓝牙耳机 a full 30. Use Chinese keywords; a translator gives good ones.

**Why 30 products per keyword?**
Douyin's product search serves the top 30 for a keyword reliably; deeper pages are not. For more products, add related keywords: 蓝牙耳机, 蓝牙耳机 降噪, 蓝牙耳机 运动 and 骨传导耳机 each bring their own top 30, and products found twice are delivered and billed once.

**Is the commission what a creator really earns?**
It is the rate the merchant offers on Douyin's affiliate marketplace (精选联盟) at the time of the run. Merchants change it often.

**How fresh is the data?**
It is read at run time. Schedule the actor to track prices and sales over time.

**Do I need a Douyin account or a Chinese IP?**
No.

### Pricing

| Event | When | Price |
|---|---|---|
| Actor start | Once per run (per GB of memory, 256 MB default) | $0.005 |
| Product | Each product delivered | $0.005 |

Example: 10 keywords × 30 products = $1.50 + $0.005. Products removed by your filters and duplicates are not charged.

### Support

Found a bug or need a field? Open an issue on the actor's Issues tab and include the run link.

### ⚠️ Disclaimer

This actor reads public product listings from Douyin's shop. It is not affiliated with or endorsed by Douyin or ByteDance. Product names and images belong to their sellers. You are responsible for using the data in line with Douyin's terms and the laws that apply to you.

### SEO Keywords

douyin shop scraper, douyin product scraper, 抖音商城, 抖音电商, 精选联盟, douyin product search, douyin sales data, douyin commission, douyin affiliate products, 抖音选品, china ecommerce product research, douyin price tracker

# Actor input Schema

## `keywords` (type: `array`):

Products to search for; each keyword returns its top 30 products. Chinese keywords match best, for example 防晒霜, 蓝牙耳机 or 宠物零食; English keywords find very few products. Use several related keywords for more products.

## `maxResultsPerKeyword` (type: `integer`):

Up to 30: Douyin's product search serves the top 30 products for a keyword reliably. Add more keywords (for example 蓝牙耳机 运动, 蓝牙耳机 降噪) for more products.

## `maxItems` (type: `integer`):

Cap on products for the whole run. Free-plan runs return up to 100.

## `minPrice` (type: `number`):

Only products whose final price (到手价) is at least this many yuan.

## `maxPrice` (type: `number`):

Only products whose final price is at most this many yuan.

## `minMonthlySales` (type: `integer`):

Only products that sold at least this many units in the last month.

## `minCommissionRate` (type: `number`):

Only products paying creators at least this affiliate commission, for example 20 for 20%.

## `minPositiveReviewRate` (type: `number`):

Only products with at least this share of positive reviews, for example 90. Products with no reviews yet are left out when this is set.

## `minShopScore` (type: `number`):

Only products from shops with at least this Douyin shop score (out of 100), for example 85. Shops without a score are left out when this is set.

## Actor input object example

```json
{
  "keywords": [
    "防晒霜",
    "蓝牙耳机"
  ],
  "maxResultsPerKeyword": 30,
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

One row per product.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "防晒霜"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/douyin-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": ["防晒霜"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/douyin-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "防晒霜"
  ]
}' |
apify call memo23/douyin-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/douyin-product-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/wqhdaCsM4efhiyoSa/builds/9G3EefX9Hj3nyXpJe/openapi.json
