mcpField
D
discovering-tiktok-shop-sellers-by-niche

discovering-tiktok-shop-sellers-by-niche

github.com/apidojo-ioMarketing & growth1803 installsUpdated 24w ago
Repository

About discovering-tiktok-shop-sellers-by-niche

A skill for mapping TikTok Shop sellers in a product niche using scraped posts. It extracts sellers and products, then ranks sales signals to highlight competition and potential gaps.

Key features

  1. 01Search TikTok posts by keywords or URLs
  2. 02Filter posts for shop signals
  3. 03Extract seller and product details
  4. 04Rank sellers by sales signals
  5. 05Identify niche competition and gaps

Use cases

  1. 01Map sellers in a product category
  2. 02Compare creator and brand activity
  3. 03Spot underserved sub-niches
  4. 04Find products promoted by multiple creators

MCP support

Optionally uses the Apify MCP server to run the apidojo~tiktok-scraper actor.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill discovering-tiktok-shop-sellers-by-niche

After installing, type/discovering-tiktok-shop-sellers-by-nichein Claude Code to confirm it loaded.

Details

From the project README

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

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]TikTok URLs — user profiles, hashtags, music pages, search, locations
keywordsarrayOptional[]Search keywords/terms to find posts
sortTypestringOptionalRELEVANCESort order for keyword results: RELEVANCE, MOST_LIKED, DATE_POSTED
locationstringOptional—ISO 3166-1 alpha-2 country code for regional filtering (e.g. US, GB)
maxItemsnumberOptionalUnlimitedMaximum posts to return across the run
includeSearchKeywordsbooleanOptionalfalseAdd the matched search keyword field to each post
customMapFunctionstringOptional—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):

# 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:

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.

Comments

Markdown supported