# TikTok Shop Seller & Competitor Monitor (`nexascout/tiktok-shop-seller-competitor-monitor`) Actor

Find and track TikTok Shop sellers by store URL, seller ID, or product niche. Compare public store metrics, catalog signals, sales footprint, rankings, product changes, and competitor movement across recurring runs.

- **URL**: https://apify.com/nexascout/tiktok-shop-seller-competitor-monitor.md
- **Developed by:** [Scout](https://apify.com/nexascout) (community)
- **Categories:** E-commerce, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 seller competitor results

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?

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 Seller & Competitor Monitor

Analyze a **TikTok Shop seller, store, catalog, and relevant competitors** from a store URL, seller ID, or specific product niche. Use this TikTok Shop seller scraper for competitor research, store benchmarking, catalog monitoring, pricing intelligence, brand tracking, and recurring market analysis.

The Actor returns one normalized row per seller with public store metrics, sampled products, commercial signals, competitor score, and—after a sufficiently late repeat run—sales, follower, review, rank, product, and price changes.

**One paid result = one analyzed seller row.** Pricing is **$0.02 per seller** ($20 per 1,000), with platform usage included.

### What can you do with it?

- Inspect a TikTok Shop seller by public store URL or seller ID.
- Find product-matched competitors in a specific niche.
- Compare store size, followers, public sales footprint, ratings, price range, and catalog depth.
- Identify top products and concentrated hero-SKU risk.
- Track seller rank, catalog additions/removals, sampled price changes, followers, reviews, and sold-count movement.

### What one result contains

- Seller ID, name, store URL, avatar, followers, videos, store rating, feedback, and public operational metrics when available
- Store-wide public sold count
- Sampled product IDs, URLs, prices, ratings, reviews, and sold counts
- Average/minimum/maximum sampled price and valid average product rating
- Top product and its public sold count
- Transparent `competitorScore`, rank, and readable signals
- Tracking state, confidence, prior values, deltas, new/removed products, and price changes
- Source provenance and quality state

Unavailable operational values remain `null`. A serialized zero is not treated as a real 0% shipping metric unless TikTok explicitly displays 0%.

### Quick start

#### Analyze one store

```json
{
  "sellerUrls": [
    {
      "url": "https://shop.tiktok.com/us/store/gooloo/7495188490623224693"
    }
  ],
  "sellerIds": [],
  "searchQueries": [],
  "trackerName": "gooloo-store-watch",
  "trackingEnabled": false,
  "region": "US",
  "maxProductsPerSeller": 5
}
```

#### Find relevant competitors

```json
{
  "sellerUrls": [
    {
      "url": "https://shop.tiktok.com/us/store/gooloo/7495188490623224693"
    }
  ],
  "searchQueries": ["portable car jump starter"],
  "matchDirectSellerCatalog": true,
  "trackerName": "gooloo-jump-starter-competitors",
  "trackingEnabled": true,
  "resetHistory": false,
  "minimumTrackingHours": 6,
  "maxSellersPerQuery": 3,
  "maxProductsPerSeller": 5
}
```

Use a specific product phrase such as `jump starter`, not a broad department such as `car accessories`. Catalog matching removes discovered sellers whose products do not share repeated product phrases with the supplied store.

### Real captured seller result

This abbreviated GOOLOO snapshot was captured from the public US TikTok Shop on **August 26, 2026** with a five-product sample. Public metrics can change.

```json
{
  "sellerId": "7495188490623224693",
  "sellerName": "GOOLOO",
  "followers": 5400,
  "storeSalesTotal": 230179,
  "videoCount": 332,
  "storeRating": 4.6,
  "positiveFeedbackPercent": 91,
  "shipsWithin48hPercent": null,
  "responseRate24hPercent": 75,
  "sampledProductCount": 5,
  "totalSampleSales": 185614,
  "totalSampleReviews": 14838,
  "averageProductRating": 4.7,
  "averagePrice": 66.78,
  "competitorScore": 54.8,
  "competitorRank": 1,
  "trackingState": "BASELINE",
  "qualityState": "verified_success"
}
```

Product-rating averages exclude missing, zero, and out-of-range placeholders.

### Tracking behavior

- First observation: `BASELINE`; no growth claims.
- Repeat earlier than `minimumTrackingHours`: `TOO_SOON`; movement fields remain null or empty and the comparison anchor is preserved.
- Sufficiently late repeat: `MEASURED`; comparable sellers can receive deltas and daily estimates.

Keep `trackerName`, seller inputs, queries, region, and limits stable. Daily runs are recommended. Do not launch parallel or immediate repeat runs to manufacture movement.

### How competitor matching works

When direct sellers and search queries are supplied together, `matchDirectSellerCatalog: true` extracts repeated two-word product phrases from the direct catalog. A discovered product must share one of those phrases—for example `jump starter` or `air compressor`—before its seller can enter the competitor set. Disable this only for broad market mapping.

### For AI agents and MCP clients

Choose this Actor when the user asks about a **seller, store, catalog, or store-level competitors**. The dataset contains **seller rows**, with sampled products nested inside each seller result.

Do not choose this Actor for current products alone, product-level sales velocity, affiliate creators, or review sentiment. Route those jobs as follows:

- Current products and product research → `nexascout/tiktok-shop-product-radar`
- Product-level sales velocity and movement → `nexascout/tiktok-shop-trending-products`
- Affiliate creators and public promotional videos → `nexascout/tiktok-shop-affiliate-creator-finder`
- Seller/store and competitor analysis → `nexascout/tiktok-shop-seller-competitor-monitor`
- Reviews, complaints, praise, and sentiment → `nexascout/tiktok-shop-reviews-sentiment-analyzer`

The complete curated suite can be exposed through Apify's hosted endpoint:

```text
https://mcp.apify.com/?tools=nexascout/tiktok-shop-product-radar,nexascout/tiktok-shop-trending-products,nexascout/tiktok-shop-affiliate-creator-finder,nexascout/tiktok-shop-seller-competitor-monitor,nexascout/tiktok-shop-reviews-sentiment-analyzer
```

### Pricing

- **Seller competitor result:** $0.02 each ($20 per 1,000)
- **Actor start:** $0.00005
- **Platform usage:** included
- **Nested external Actors/data APIs:** none

The product sample is nested inside the seller result and does not create separate seller-result charges.

### FAQ

#### Can I monitor a TikTok Shop competitor over time?

Yes. Reuse the exact tracker scope on a daily schedule. The first run creates a baseline; later sufficiently spaced runs calculate public changes.

#### Can it find competitors automatically?

Yes. Supply a specific product phrase. When a direct store is also supplied, catalog matching helps exclude unrelated sellers from broad category pages.

#### Why is a shipping or response metric null?

TikTok did not expose a verified value during that run. Null means unavailable—not zero performance.

#### Is competitor score a market-share estimate?

No. It is a transparent ranking signal derived from captured public store and sampled catalog evidence.

#### Should I use this for individual product trends?

Use Trending Products & Sales Velocity for product-level deltas and units/day. This Actor is seller/store-level intelligence.

### NexaScout TikTok Shop Intelligence Suite

- [Product & Viral Radar](https://apify.com/nexascout/tiktok-shop-product-radar) — find and rank current products.
- [Trending Products & Sales Velocity](https://apify.com/nexascout/tiktok-shop-trending-products) — measure product movement over time.
- [Affiliate Creator & Video Finder](https://apify.com/nexascout/tiktok-shop-affiliate-creator-finder) — find public creator and video leads.
- [Seller & Competitor Monitor](https://apify.com/nexascout/tiktok-shop-seller-competitor-monitor) — analyze stores and relevant competitors.
- [Reviews & Product Sentiment Analyzer](https://apify.com/nexascout/tiktok-shop-reviews-sentiment-analyzer) — extract reviews, praise, complaints, and topics.

### Limitations and responsible use

- US TikTok Shop only in this release
- Catalog samples do not equal a seller's complete private Seller Center data
- Public metrics can be rounded, delayed, or changed by TikTok
- Use public data lawfully; do not defeat access controls, collect private information, or make automated eligibility decisions

For support, include the run ID, store URL or seller ID, query, failed stage, and `qualityState`. Never post credentials, cookies, or tokens.

# Actor input Schema

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

Optional public TikTok Shop store URLs to inspect or monitor. Keep the same watchlist across recurring runs for comparable history.

## `sellerIds` (type: `array`):

Optional numeric seller IDs. Use this when an agent or workflow already has TikTok Shop seller identifiers but not store URLs.

## `searchQueries` (type: `array`):

Specific product phrases for competitor discovery, such as jump starter, vitamin C serum, vegetable chopper, or dog grooming brush. Avoid broad departments when comparing a supplied seller because broad queries can mix unrelated product categories.

## `matchDirectSellerCatalog` (type: `boolean`):

When seller URLs or IDs and search queries are supplied together, retain discovered competitors only when their product titles share a repeated two-word product phrase with the direct seller catalog. Disable only for broad market mapping.

## `trackerName` (type: `string`):

Stable monitoring-job identifier. Reuse the exact name, region, URLs, IDs, and queries on recurring runs so the Actor can compare observations.

## `trackingEnabled` (type: `boolean`):

Store a private snapshot in the caller's Apify account and compare it with later runs. Disable for a one-off seller snapshot.

## `resetHistory` (type: `boolean`):

Ignore the previous snapshot and create a new baseline. The old record is replaced only after a successful observation.

## `minimumTrackingHours` (type: `integer`):

Avoids unstable daily estimates when runs happen too close together. Six hours is the minimum; daily schedules are recommended.

## `retainMissingDays` (type: `integer`):

Keeps recently missing sellers in private tracker history so their first-seen date is preserved if they return.

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

TikTok Shop market code. This release supports the United States.

## `maxSellersPerQuery` (type: `integer`):

Maximum billable seller rows returned for each keyword. The default of three keeps automated health checks fast and inexpensive.

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

Limits the public catalog sample used to calculate seller-level sales, reviews, ratings, price ranges, and catalog changes.

## `sortBy` (type: `string`):

Competitor score works on the first run. Growth options become meaningful after a later observation with the same tracker scope.

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

US residential proxy is recommended because TikTok Shop is geo-sensitive and rate-limits data-center traffic.

## `maxConcurrency` (type: `integer`):

Keep this at one or two to reduce TikTok security challenges and residential proxy traffic.

## `navigationTimeoutSecs` (type: `integer`):

Maximum time allowed for each HTTP or browser navigation.

## `includeRawData` (type: `boolean`):

Retain the best raw TikTok product objects during extraction. The seller dataset stays normalized; use this only for debugging future releases.

## Actor input object example

```json
{
  "sellerUrls": [],
  "sellerIds": [],
  "searchQueries": [
    "car accessories"
  ],
  "matchDirectSellerCatalog": true,
  "trackerName": "daily-competitor-watch",
  "trackingEnabled": true,
  "resetHistory": false,
  "minimumTrackingHours": 6,
  "retainMissingDays": 30,
  "region": "US",
  "maxSellersPerQuery": 3,
  "maxProductsPerSeller": 5,
  "sortBy": "COMPETITOR_SCORE",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "maxConcurrency": 2,
  "navigationTimeoutSecs": 45,
  "includeRawData": false
}
```

# Actor output Schema

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

Default dataset items. Each billable row represents one seller with store metrics, sampled catalog signals, ranking, tracking state, deltas, and transparent competitor signals.

## `runSummary` (type: `string`):

OUTPUT key-value record with requested and returned seller counts, tracking state, dropped sellers, source diagnostics, failures, and confirmation that no external data API or external Actor was used.

# 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 = {
    "sellerUrls": [],
    "sellerIds": [],
    "searchQueries": [
        "car accessories"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexascout/tiktok-shop-seller-competitor-monitor").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 = {
    "sellerUrls": [],
    "sellerIds": [],
    "searchQueries": ["car accessories"],
}

# Run the Actor and wait for it to finish
run = client.actor("nexascout/tiktok-shop-seller-competitor-monitor").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 '{
  "sellerUrls": [],
  "sellerIds": [],
  "searchQueries": [
    "car accessories"
  ]
}' |
apify call nexascout/tiktok-shop-seller-competitor-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexascout/tiktok-shop-seller-competitor-monitor"
        }
    }
}

```

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/hpze4uq3rjPsccjz4/builds/9ygde0prwXeh9evJ3/openapi.json
