# TikTok Shop Trend Tracker – Daily Sales & Growth (`sd8956/tiktok-shop-trend-tracker-daily-sales-growth`) Actor

TikTok Shop products with daily sales history: units per day, estimated daily GMV, 7/30-day growth and a rising-product flag.

- **URL**: https://apify.com/sd8956/tiktok-shop-trend-tracker-daily-sales-growth.md
- **Developed by:** [Santiago Duque](https://apify.com/sd8956) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 product with trend metrics

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

## TikTok Shop Trend Tracker – Daily Sales & Growth

Find what's **selling right now** on TikTok Shop. This Actor returns TikTok Shop products with their **daily sales history**: units sold per day, estimated daily GMV (revenue), 7- and 30-day growth, a **rising-product flag** and the product's rank in its category.

Most TikTok Shop scrapers give you a snapshot: a title, a price and a rounded "10K+ sold". This Actor tracks the **exact** sold count of every product every day, so it can tell you how fast each product is selling and whether it is speeding up.

### Who is it for

- **Dropshippers and sellers** looking for products to sell before they saturate.
- **Brands and agencies** watching competitors' products and shops.
- **Analysts** who need daily TikTok Shop sales estimates by category.

### What you get

| Field | Description |
|---|---|
| `productId`, `title`, `url` | The product on TikTok Shop. |
| `price`, `currency` | Current price. |
| `soldCount` | Exact units sold since the product was listed (TikTok shows it rounded, e.g. "22.1K sold"). |
| `unitsPerDay7d`, `unitsPerDay30d` | Average units sold per day over the last 7 / 30 days. |
| `gmvPerDay7d`, `gmvPerDay30d` | Estimated revenue per day (units × price, day by day). |
| `growth7dPct`, `growth30dPct` | Change in units per day vs. the previous 7 / 30 days, in %. |
| `isRising` | `true` when growth is ≥ 50% with ≥ 5 units/day, or a product we found recently already sells ≥ 20 units/day. |
| `categoryRank` | Position by units per day (7 days) among the products we track in the same category. |
| `historyDays` | Days of history behind the metrics. |
| `shopName`, `shopId`, `category`, `imageUrl` | Shop and catalog details (when available). |
| `scrapedAt` | When the row was produced. |

Real output from a run on 2026-11-04 (values verbatim, `imageUrl` omitted):

```json
{
  "productId": "1732307386021548810",
  "title": "[Biodance Official] Collagen | PDRN Jelly Serum Mist — Advanced Jelly-to-Mist Skincare Spray for Flawless Instant Glass Skin Glow, 24-Hour Moisture Lock, Pore Minimizing, Deep Hydration, and Accelerated Skin Barrier Recovery",
  "url": "https://shop.tiktok.com/us/pdp/collagen-peptides-jelly-serum-mist-hydrating-anti-aging/1732307386021548810",
  "price": 24.7,
  "currency": "USD",
  "soldCount": 40506,
  "unitsPerDay7d": 269.14285714285717,
  "gmvPerDay7d": 6647.828571428571,
  "growth7dPct": 160.58091286307058,
  "isRising": true,
  "categoryRank": 32,
  "historyDays": 14,
  "shopName": "Biodance Store US",
  "category": "beauty-personal-care",
  "scrapedAt": "2026-11-04T00:19:18.228Z"
}
```

Metrics are `null` until there is enough history: 7 days for the 7-day metrics, 14 days for 7-day growth, 30 / 60 days for the 30-day ones.

### How to use it

#### Discover products

Set **Mode** to `discover` and pick one or more **categories** and/or **keywords**.

- **Categories**: Beauty & Personal Care, Home Supplies, Kitchenware, Womenswear & Underwear, Health, Phones & Electronics.
- **Keywords**: match products whose title contains every word of the keyword, **among the products this Actor tracks** (it is not a live TikTok search).

Narrow the results with **Minimum units per day**, **Maximum price** and **Only rising products**. Results come sorted by units per day. **Max items** caps how many products you get (and pay for).

#### Track specific products or shops

Set **Mode** to `track` and paste TikTok Shop **product URLs** (`https://shop.tiktok.com/us/pdp/...`) or **shop URLs** (`https://shop.tiktok.com/us/store/...`). Tracked products join the daily crawl, so their history keeps growing even between your runs. The daily crawl follows a fixed number of products: the ones that sell the least may stop being followed. Their history is kept, and tracking them again resumes it.

### Pricing

Pay only for the products you get:

| Event | Price | When |
|---|---|---|
| Product with trend | $0.010 | The product has 14+ days of history (full 7-day metrics and growth). |
| Product without enough history | $0.002 | The product has less than 14 days of history. |

Products that fail to load or that your filters remove are never charged. The run stops cleanly when it reaches your spending limit.

### Limitations

- **United States** TikTok Shop only, for now.
- History starts the day each product entered our daily crawl, so a newly tracked product needs a few days before its metrics fill in.
- Shop URLs track the products on the first page of the shop.
- Category coverage comes from TikTok's own category listings, which show a rotating selection of products. It is not a complete catalog of TikTok Shop.
- Units per day are derived from TikTok's public cumulative "sold" counter, which excludes returns. GMV is an estimate (units × listed price).

### Data and compliance

The Actor collects **public product and shop information only**: titles, prices, sold counts, ratings, categories. It does not collect buyers' or users' personal data, and it does not store reviews. You are responsible for using the data in line with TikTok's terms and applicable laws.

**What your runs store.** The products your runs look up (the product and shop URLs you track, and the products the Actor loads live in discover mode) are saved as public product data in the shared product history this Actor keeps. That is how their daily history grows, and other users' runs can return them too. Your input settings, keywords and account details are not stored there.

### FAQ

**Why are some metrics `null`?** The product doesn't have enough days of history yet. See `historyDays`.

**Is `soldCount` exact?** Yes. TikTok Shop shows a rounded number on its pages; the Actor reads the exact counter.

**Can I get other countries?** Not yet. Mexico is next.

# Actor input Schema

## `mode` (type: `string`):

`discover` finds products by keywords or categories. `track` follows specific product or shop URLs.

## `market` (type: `string`):

TikTok Shop market.

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

Find products whose title contains every word of a keyword, among the products this Actor already tracks (discover mode).

## `categories` (type: `array`):

TikTok Shop categories to discover products in (discover mode).

## `urls` (type: `array`):

TikTok Shop product URLs, or shop URLs (the first page of the shop’s products is tracked) (track mode).

## `period` (type: `string`):

Window used to sort and filter by trend metrics.

## `minUnitsPerDay` (type: `integer`):

Only return products selling at least this many units per day in the selected period.

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

Only return products at or below this price (market currency).

## `onlyRising` (type: `boolean`):

Only return products flagged as rising.

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

Maximum number of products to return (and charge for).

## Actor input object example

```json
{
  "mode": "discover",
  "market": "US",
  "keywords": [
    "led lights"
  ],
  "period": "7d",
  "onlyRising": false,
  "maxItems": 100
}
```

# Actor output Schema

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

One item per delivered product with its trend metrics, sorted by units per day in the selected period. Products that fail to load or are removed by the input filters are never charged and never appear here.

# 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": [
        "led lights"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sd8956/tiktok-shop-trend-tracker-daily-sales-growth").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": ["led lights"] }

# Run the Actor and wait for it to finish
run = client.actor("sd8956/tiktok-shop-trend-tracker-daily-sales-growth").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": [
    "led lights"
  ]
}' |
apify call sd8956/tiktok-shop-trend-tracker-daily-sales-growth --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sd8956/tiktok-shop-trend-tracker-daily-sales-growth"
        }
    }
}
```

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/E8xIpAxfvGJf4iYbL/builds/GbsNXmEKy1dnywCoh/openapi.json
