# Tiktok Shop Analytics (`constant_quadruped/tiktok-shop-analytics`) Actor

Discover TikTok videos promoting Shop products. Returns product mentions (with prices, discount codes, brands, shop URLs from descriptions), video engagement, and creator profiles with affiliate-tier classification. For influencer outreach, trending discovery, dropshipping research.

- **URL**: https://apify.com/constant\_quadruped/tiktok-shop-analytics.md
- **Developed by:** [CQ](https://apify.com/constant_quadruped) (community)
- **Categories:** E-commerce, Social media
- **Stats:** 59 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Shop Analytics

> **Version 1.0.19 — honest scope update (2026-05-21).** This actor discovers
> TikTok videos that promote TikTok Shop products, extracts product mentions
> from those videos, and analyzes the creators behind them. See
> [Data quality notes](#data-quality-notes) below for what this actor does
> and does *not* return.

Discover what's trending on TikTok Shop by mining the videos that promote it,
the creators driving sales, and the hashtag ecosystem around viral products.

### What this actor does

The actor uses **TikTok video search and hashtag pages** as its entry point and
returns three kinds of data:

1. **`product_mention`** — TikTok videos that mention TikTok Shop products
   (descriptions, hashtags, shop-icon indicators, in-bio shop links).
   These tell you *which products are getting promoted right now*.
2. **`video`** — Engagement metadata for each promoting video
   (views, likes, comments, shares, creator follower count, etc.).
   Use these to spot viral moments.
3. **`creator` / `affiliate`** — Profiles of the creators promoting products,
   with affiliate-tier classification (mega / macro / mid-tier / micro / nano)
   and engagement-rate scoring.

Plus a per-run `run_summary` record so a single run is self-describing.

### What this actor does NOT do

- **It does not return TikTok Shop product catalog data directly.** TikTok Shop
  search URLs (`https://www.tiktok.com/shop/search?q=...`) return HTTP 404 to
  unauthenticated requests; the Shop frontend is a JS-rendered SPA that calls
  internal authenticated APIs we cannot access without a logged-in session.
  → If you need *direct* product catalog data (SKU, current price,
  inventory, seller ID) you will need a Shop API key or a logged-in proxy.
  Consider integrating RapidAPI's TikTok Shop endpoints via the
  `RAPIDAPI_KEY` env var in your run input.
- **It does not return inventory or sales counts.** Those fields exist in the
  output schema as `null` when running in the default video-discovery mode.

### Use cases this actor is good at

- **Trending discovery** — what's being promoted on TikTok right now
- **Influencer outreach** — find creators driving traffic to specific products
- **Hashtag ecosystem analysis** — #TikTokMadeMeBuyIt, #AmazonFinds, etc.
- **Cross-region trend comparison** — what's hot in US vs UK vs ID
- **Affiliate-tier mapping** — which mega/macro creators promote what

### Use cases this actor is *not* the right tool for

- **Direct product catalog scraping** — use a Shop API integration instead
- **Real-time price tracking** — the actor returns price *mentions*, not feeds
- **Inventory monitoring** — not supported

### Quick start

#### Find creators promoting viral skincare

```json
{
    "dataTypes": ["affiliates"],
    "hashtag": "#TikTokMadeMeBuyIt",
    "maxCreators": 30,
    "enableCreatorAnalysis": true
}
```

#### Find videos promoting kitchen products

```json
{
    "dataTypes": ["products"],
    "searchQuery": "kitchen gadgets",
    "region": "US",
    "maxProducts": 50
}
```

The result will be `product_mention` items (videos that promote products),
not raw product catalog rows.

#### Combined run

```json
{
    "dataTypes": ["products", "affiliates"],
    "searchQuery": "viral skincare",
    "hashtag": "#TikTokMadeMeBuyIt",
    "region": "US",
    "maxProducts": 50,
    "maxCreators": 30
}
```

### Output schema highlights

#### `product_mention` items

| Field | Description |
|-------|-------------|
| `dataType` | Always `"product_mention"` |
| `description` | Video description / caption |
| `hashtags` | Hashtags found in the video |
| `productKeywords` | Shop-related keywords detected (`["shop", "tiktokshop", ...]`) |
| `hasProductLink` | True if a product URL was found in the description |
| `hasShopMention` | True if the description mentions "shop", "store", etc. |
| `hasDiscountCode` | True if a discount code pattern was matched |
| `viralityScore` | Heuristic 0–100 based on engagement / hashtags |

#### `video` items

Full video engagement metadata: `likes`, `comments`, `shares`, `plays`,
`authorFollowers`, `engagementRate`, `music`, `createTime`.

#### `creator` / `affiliate` items

| Field | Description |
|-------|-------------|
| `username`, `displayName`, `followers` | Standard profile data |
| `engagementRate` | Likes / followers |
| `affiliateScore` | 0–100 affiliate-potential heuristic |
| `affiliateTier` | `mega` / `macro` / `mid-tier` / `micro` / `nano` |
| `contactEmail` | Extracted from bio if present |

#### Affiliate tiers

| Tier | Followers |
|------|-----------|
| Mega | 1M+ |
| Macro | 100K – 1M |
| Mid-tier | 10K – 100K |
| Micro | 1K – 10K |
| Nano | < 1K |

### Regions supported

US, UK, ID, TH, VN, MY, PH, SG (TikTok regional video search corpora).

### Data quality notes

A single run currently returns roughly **2–5 items per query** in the default
video-discovery mode. This is *by design* given the entry point — TikTok's
hashtag and search corpora surface a limited set of high-engagement videos.

If you need higher item counts:

1. Use multiple `hashtag` runs in parallel (e.g. one per category)
2. Provide explicit `productUrls` or `creatorUrls` to scrape directly
3. Increase `maxProducts` / `maxCreators` (but expect diminishing returns past 50)

### Tips for best results

1. **Use residential proxies** — TikTok blocks datacenter IPs aggressively
2. **Start small** — Test with 10–20 items before running larger jobs
3. **Combine data types** — `products + affiliates` gives the richest picture
4. **Try region rotation** — Some hashtags are bigger in ID/TH than US
5. **Focus on `viralityScore > 60`** for trending signal

### Pricing

This actor is **FREE** (uses your platform's compute units). Typical run:

- \~30–60 seconds for a single search
- \~0.01–0.05 compute units per run
- Playwright + stealth mode is the main compute cost

### Versioning

| Version | Notes |
|---------|-------|
| **1.0.19** | Honest scope update — README rewrite, documentation matches what the actor actually does. No code change to scraping logic. |
| 1.0.18 | Stable build (April 2026). Tagged latest. |
| 1.1.1 – 1.1.4 | Attempted feature builds; produced failed runs and were rolled back. |

### Legal notice

This actor scrapes publicly available data from TikTok. Users are responsible
for ensuring their use complies with TikTok's Terms of Service and applicable
laws. Data should be used for research and analysis purposes only.

***

Built by JCD

# Actor input Schema

## `dataTypes` (type: `array`):

Select which types of data to scrape: products (product listings), sellers (store profiles), affiliates (creators promoting products)

## `searchQuery` (type: `string`):

Search TikTok for products (e.g., 'viral skincare', 'kitchen gadgets'). Results include videos mentioning products with shop indicators.

## `categoryUrl` (type: `string`):

Direct URL to a TikTok Shop category page

## `productUrls` (type: `array`):

Specific TikTok Shop product URLs to scrape (e.g., https://www.tiktok.com/shop/product/...)

## `sellerUrls` (type: `array`):

TikTok Shop seller or store profile URLs

## `sellerName` (type: `string`):

Search for a seller by name

## `includeSellerProducts` (type: `boolean`):

Also scrape products from seller's shop

## `hashtag` (type: `string`):

Find creators using this hashtag (e.g., TikTokMadeMeBuyIt, AmazonFinds). The # symbol is optional.

## `creatorUrls` (type: `array`):

Specific TikTok creator profile URLs to analyze (e.g., https://www.tiktok.com/@username)

## `region` (type: `string`):

TikTok Shop region (affects search results and availability)

## `maxProducts` (type: `integer`):

Maximum number of products/product mentions to collect

## `maxCreators` (type: `integer`):

Maximum number of creators to analyze

## `maxProductsPerSeller` (type: `integer`):

Maximum products to collect from each seller's shop

## `enableTrendingAnalysis` (type: `boolean`):

Calculate trending scores and identify viral products based on engagement metrics

## `enableCreatorAnalysis` (type: `boolean`):

Calculate affiliate scores and tier classifications (mega/macro/micro/nano) for creators

## `useShopApi` (type: `boolean`):

Use enhanced scraping with stealth mode for better results. Recommended.

## `proxyConfiguration` (type: `object`):

Proxy settings. TikTok has strong anti-bot measures - residential proxies are strongly recommended for best results.

## Actor input object example

```json
{
  "dataTypes": [
    "products"
  ],
  "searchQuery": "viral products",
  "includeSellerProducts": true,
  "hashtag": "TikTokMadeMeBuyIt",
  "region": "US",
  "maxProducts": 50,
  "maxCreators": 20,
  "maxProductsPerSeller": 20,
  "enableTrendingAnalysis": true,
  "enableCreatorAnalysis": true,
  "useShopApi": true
}
```

# Actor output Schema

## `products` (type: `string`):

Product listings with pricing, ratings, sales counts, and trending scores

## `sellers` (type: `string`):

Seller profiles with follower counts, verification status, and product catalogs

## `creators` (type: `string`):

Creator profiles with engagement rates, affiliate scores, and tier classifications

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("constant_quadruped/tiktok-shop-analytics").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("constant_quadruped/tiktok-shop-analytics").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call constant_quadruped/tiktok-shop-analytics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=constant_quadruped/tiktok-shop-analytics",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1Aus5E9kBIQaMztsS/builds/HEYBRgcJGKGQkU4gL/openapi.json
