# Discovering Tiktok Shop Sellers By Niche

> Discovers TikTok Shop sellers and product listings in a specific niche using apidojo's TikTok scraper on Apify. Triggers when the user asks to: find TikTok Shop sellers in a product category, discover what products are selling on TikTok Shop, identify top-selling items in a niche on TikTok, find competitors selling on TikTok Shop, research TikTok Shop product opportunities, discover trending products with affiliate links on TikTok, or build a database of TikTok Shop merchants. Returns seller handle, product name, price, estimated sales signals, and niche category. Ideal for e-commerce sellers, product researchers, affiliate marketers, and TikTok Shop entrants.

- Skill: `apidojo-io/discovering-tiktok-shop-sellers-by-niche` (Agent Skill)
- Install (CLI): `npx skillmds@latest add apidojo-io/discovering-tiktok-shop-sellers-by-niche`
- Raw SKILL.md: https://api.skillmd.com/api/skills/apidojo-io/discovering-tiktok-shop-sellers-by-niche/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- License: Apache-2.0
- Author: apidojo-io (https://skillmd.com/u/apidojo-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/apidojo-io/discovering-tiktok-shop-sellers-by-niche

---


# Discovering TikTok Shop Sellers by Niche

Maps the TikTok Shop seller landscape in a product category. Identifies which products are being heavily promoted, which creators drive the most sales content, and where product gaps exist.

## Prerequisites

- `APIFY_TOKEN` environment variable set
- Optional: Apify MCP server installed

## Inputs

| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `startUrls` | array | Optional | `[]` | TikTok URLs — user profiles, hashtags, music pages, search, locations |
| `keywords` | array | Optional | `[]` | Search keywords/terms to find posts |
| `sortType` | string | Optional | `RELEVANCE` | Sort order for keyword results: `RELEVANCE`, `MOST_LIKED`, `DATE_POSTED` |
| `location` | string | Optional | — | ISO 3166-1 alpha-2 country code for regional filtering (e.g. `US`, `GB`) |
| `maxItems` | number | Optional | Unlimited | Maximum posts to return across the run |
| `includeSearchKeywords` | boolean | Optional | `false` | Add the matched search keyword field to each post |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |

## Workflow

```
Progress:
- [ ] Step 1: Search niche hashtags with TikTok Shop signals
- [ ] Step 2: Filter posts with shop product links
- [ ] Step 3: Extract seller profiles and products
- [ ] Step 4: Rank by sales signal strength
- [ ] Step 5: Deliver seller/product map
```

### Step 1: Search Hashtags

```
TikTok Shop hashtags: #tiktokshop[niche], #[niche]shop, #[niche]deals, #tiktokmademebuyit,
                      #[niche]affiliate, #[niche]haul
```


**Recommended — run_actor.js (handles waiting, output, and file saving automatically):**
```bash
# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json
```
> `APIFY_TOKEN` must be set in environment or `.env` file.

**If Apify MCP is available:**
```
Tool: apify:run-actor
Actor: "apidojo~tiktok-scraper"
Input:
{
  "keywords": ["#tiktokshop", "#[niche]shop", "#tiktokmademebuyit"],
  "maxItems": 300
}
```

**REST API fallback:**
```bash
curl -X POST   "https://api.apify.com/v2/acts/apidojo~tiktok-scraper/runs?token=$APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{
    "keywords": ["#tiktokshop", "#kitchentools", "#tiktokmademebuyit"],
    "maxItems": 300
  }'
```

### Step 2: Score Seller Strength

```
sales_signal = (playCount / 10000) * 0.35
             + (diggCount / 1000) * 0.25
             + (commentCount / 100) * 0.15
             + (shareCount / 500) * 0.15
             + (hasShopLink ? 1 : 0) * 0.10
```
Normalize to [0, 1]. Sellers with multiple high-signal posts get `multi_post_bonus = 0.15`.

### Step 3: Classify Seller Type

```
seller_type:
  BRAND = account.verified OR followerCount > 50K AND bio contains brand name
  CREATOR_AFFILIATE = individual account, earns commission per sale
  DROPSHIPPER = posts multiple unrelated products with generic descriptions
```

### Step 4: Edge Cases

- **Non-Shop posts in results**: Drop posts where caption has no shop signal AND no product link
- **Same product from many creators**: De-duplicate by product name; count unique promoters as a "sales momentum" signal
- **Saturated niche** (> 50 active sellers): Flag as HIGH_COMPETITION; present gap analysis (underserved sub-niches)
- **Views inflated by one viral post**: Use median views across seller's last 10 posts as the signal, not max

## Output Format

```
# TikTok Shop Seller Map: [NICHE]
Posts scanned: [N] | Unique sellers: [N] | Brands: [N] | Creator-affiliates: [N] | Date: [DATE]

## Top Sellers by Sales Signal
| Seller | Type | Product(s) | Avg Views/Post | Shop Posts | Signal Score |
|--------|------|-----------|----------------|-----------|-------------|
| @[handle] | Creator | [product] | [N] | [N] | [0.XX] |

## Top Products (by Promotion Frequency)
| Product Name | # Sellers Promoting | Avg Post Views | Price Range |
|-------------|--------------------|--------------------|-------------|
| [product] | [N] | [N] | $[X]-$[X] |

## Market Saturation
Competition level: [LOW / MEDIUM / HIGH] ([N] active sellers)
Potential gap: [sub-niche or product type with < 3 sellers]
```

## Troubleshooting

**Hashtag returns non-shop content**: Combine niche hashtag with `#tiktokshop` in the same search to anchor on shop-linked posts.
**Can't determine product price**: TikTok Shop prices aren't always in the video — note URL pattern includes product ID which can be cross-referenced manually.
**All results from one mega-creator**: Add `max_posts_per_creator = 5` to surface diverse sellers.


