# TikTok Shop Reviewer Lead List - Buyers, Profiles & Emails (`seemuapps/tiktok-shop-reviewer-lead-list`) Actor

Turn TikTok Shop product reviews into a lead list of real buyers: username, profile link, rating, review text, plus followers, bio and email.

- **URL**: https://apify.com/seemuapps/tiktok-shop-reviewer-lead-list.md
- **Developed by:** [Seemu Scraping](https://apify.com/seemuapps) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 reviewers

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 Reviewer Lead List - Buyers, Profiles & Emails

Turn any TikTok Shop product's reviews into a lead list of real, proven buyers. Paste your competitors' product URLs and get one row per reviewer with their TikTok username, profile link, the products they bought and reviewed, their star rating and review text. Switch on profile stats to add follower counts, bio, verified badge, link in bio, websites and any email address in the bio. No login and no TikTok account needed.

### What you get

One row per unique reviewer:

- **Who they are**: TikTok username, display name, profile URL, user ID, avatar and country
- **What they bought**: the product(s) they reviewed, with product ID, title and URL. Someone who reviewed several of your input products appears once, with every review listed
- **What they said**: star rating, review text, review date, variant bought and verified-purchase flag, plus their review count and average rating across your products
- **Profile stats and contact info** (optional): followers, following, likes, video count, bio, verified badge, private-account flag, TikTok Shop seller and business account flags, link in bio, websites and emails found in the bio

Export to JSON, CSV, Excel or Google Sheets from the **Dataset** tab, or pull results through the Apify API.

### Use cases

- **Competitor customer lists**: find the people already buying products like yours on TikTok Shop
- **Win unhappy buyers**: filter a competitor's 1-3 star reviews to find customers looking for something better
- **Creator and affiliate outreach**: spot reviewers with real followings who could promote your product
- **Lookalike audiences and market research**: learn who buys in your niche and what they care about
- **Lead generation for DTC brands**: build outreach lists of verified buyers in a product category

### How to use

1. Paste one or more **Product URLs** (any `tiktok.com/shop/pdp/...` link, or just the numeric product ID), one per line
2. Set **Max reviewers per product** (default 100; set 0 for as many as possible)
3. Optionally set **Minimum star rating** / **Maximum star rating**, e.g. max 2 to find unhappy buyers
4. Turn on **Add profile stats and contact info** if you want followers, bio, links and emails
5. Run the actor. Reviewer leads appear in the **Dataset** tab

#### Getting more reviewers in a later run

Each run saves where it stopped for every product. After the run finishes, open the **Key-value store** tab → copy the `NEXT_PAGE_ID` value → paste it into **Page ID** on your next run, keeping the same product list. Each product continues from where it stopped. If `NEXT_PAGE_ID` is `null`, you've scanned every review.

### Output example

```json
{
  "userId": "6880250903724409862",
  "username": "wondering_wuhllabee",
  "nickname": "Jæ",
  "profileUrl": "https://www.tiktok.com/@wondering_wuhllabee",
  "avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/...jpg",
  "country": "US",
  "productId": "1731578642912612516",
  "productTitle": "Cat nail clipper by potaroma adjustable sizes built in file safe for kittens cats",
  "productUrl": "https://www.tiktok.com/shop/pdp/1731578642912612516",
  "rating": 5,
  "reviewText": "These are the best nail clippers I've found for cats...",
  "reviewedAt": "2026-09-21T04:25:16.260Z",
  "isVerifiedPurchase": true,
  "reviewCount": 1,
  "averageRating": 5,
  "productIds": ["1731578642912612516"],
  "reviews": [{ "productId": "1731578642912612516", "rating": 5, "text": "...", "variant": null, "reviewedAt": "2026-09-21T04:25:16.260Z" }],
  "profileEnriched": true,
  "followers": 1698,
  "following": 412,
  "likes": 14000,
  "videos": 88,
  "bio": "Dog mom | collabs: hello@example.com",
  "verified": false,
  "isPrivate": false,
  "isTikTokShopSeller": false,
  "isBusinessAccount": false,
  "businessCategory": null,
  "bioLink": "https://linktr.ee/example",
  "websites": ["https://linktr.ee/example"],
  "emails": ["hello@example.com"],
  "email": "hello@example.com",
  "scrapedAt": "2026-10-19T07:47:10.038Z"
}
```

Without profile stats, the profile fields are `null` and `profileEnriched` is `false`. A run summary (reviewers found, reviews scanned and status per product) is saved as `OUTPUT` in the **Key-value store**.

### Pricing

Pay per result. You only pay for what's delivered:

| Event | When it's charged |
|---|---|
| **product-scanned** | Once per product whose reviews were opened, including products with no reviews or no reviews in your star range |
| **reviewer** | Once per reviewer row delivered to your dataset (no star filter) |
| **filtered-reviewer** | Once per reviewer row delivered when you set a star range. Finding matching reviewers means reading many more reviews, so it costs more than **reviewer** |
| **profile-enriched** | Once per reviewer whose profile stats were added (only when the option is on and the profile was found) |

Anonymous reviews, deleted accounts and reviewers outside your star range are never charged as reviewers.

### Good to know

- TikTok Shop lets buyers review anonymously. Those reviews (about 1 in 10) have no linked account, so they're skipped.
- Reviews come in TikTok Shop's own order (most relevant first), and most reviews are 4-5 stars. With a narrow star range on a highly rated product, the actor stops scanning a product early when very few reviews match, so you may get fewer reviewers than you asked for. Profile stats can likewise be skipped for some rows in a run that finds very few reviewers.
- Emails only appear when a reviewer put one in their bio. Most shoppers don't, so expect emails on a small share of rows.

# Actor input Schema

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

TikTok Shop product page URLs such as https://www.tiktok.com/shop/pdp/cat-nail-clipper/1731578642912612516, or just the numeric product ID. One per line (up to 200). Reviewers of several products are merged into one row.

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

The TikTok Shop marketplace the products are sold in. United States is the most complete; other regions may return fewer reviews.

## `maxReviewersPerProduct` (type: `integer`):

How many new unique reviewers to collect from each product. 0 = as many as possible (up to 10,000 per product per run; use Page ID to continue).

## `minStars` (type: `integer`):

Only include reviewers who gave at least this many stars (1-5). Use 4 to find happy buyers.

## `maxStars` (type: `integer`):

Only include reviewers who gave at most this many stars (1-5). Set to 2 to find unhappy buyers of a competitor's product.

## `enrichProfiles` (type: `boolean`):

Look up each reviewer's TikTok profile and add followers, following, likes, video count, bio, verified badge, link in bio, websites and any email address in the bio. Charged per profile found.

## `pageId` (type: `string`):

Paste NEXT_PAGE_ID from the previous run's Key-value store to continue each product where that run stopped. Keep the same Product URLs list.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"
  ],
  "region": "US",
  "maxReviewersPerProduct": 100,
  "minStars": 1,
  "maxStars": 5,
  "enrichProfiles": false
}
```

# Actor output Schema

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

One reviewer per record. Fields: userId, username, nickname, profileUrl, avatarUrl, productTitle, rating, reviewText, reviewedAt, reviews, followers, bio, emails, websites and more.

## `nextPageId` (type: `string`):

NEXT_PAGE_ID record in the default key-value store. Paste into Page ID on the next run to continue; null when every product's reviews were scanned.

## `summary` (type: `string`):

Reviewers found, reviews scanned and status 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 = {
    "productUrls": [
        "https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/tiktok-shop-reviewer-lead-list").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 = { "productUrls": ["https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"] }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/tiktok-shop-reviewer-lead-list").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 '{
  "productUrls": [
    "https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516"
  ]
}' |
apify call seemuapps/tiktok-shop-reviewer-lead-list --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seemuapps/tiktok-shop-reviewer-lead-list"
        }
    }
}
```

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/82Vc1dNn8dHMD47wq/builds/hIHcv0d5gMFbWOmYj/openapi.json
