TikTok Shop Seller Scraper avatar

TikTok Shop Seller Scraper

Pricing

from $4.50 / 1,000 seller results

Go to Apify Store
TikTok Shop Seller Scraper

TikTok Shop Seller Scraper

Scrape TikTok Shop sellers from store URLs, product URLs, or keyword searches. Get seller names, IDs, store links, ratings, followers, product counts, sample products, price ranges, and a transparent benchmark score. Clean CSV/JSON for ecommerce competitor research.

Pricing

from $4.50 / 1,000 seller results

Rating

0.0

(0)

Developer

Delowar Munna

Delowar Munna

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

Share

TikTok Shop Seller Scraper

Scrape TikTok Shop sellers from keyword searches, store URLs, or product URLs. Each seller becomes one clean, flat, deduplicated, CSV-ready row with a transparent, non-AI benchmark score. You don't need a TikTok login, cookies, or a proxy.

Most TikTok Shop actors are product-first. This one is seller-first: it groups products under the stores that sell them, merges duplicates, and adds a benchmark score. It's built for competitor mapping and seller discovery rather than raw product dumps.


⚡ Need a real-time API?

This Actor also powers the TikTok Shop API on RapidAPI. GET /seller returns a TikTok Shop seller's profile and stats as JSON in a single HTTP request, with a free Basic plan and no Apify account needed.

Use the API for on-demand lookups inside your app. Use this Actor for bulk runs, schedules, datasets and integrations.

✨ What it does

  • Three input modes, combinable in one run:
    • Keywords: searches TikTok Shop products and collects the sellers behind them. Several products from one seller become one seller row.
    • Seller / store URLs or IDs: looks up a specific store and samples its catalogue.
    • Product URLs or IDs: returns the seller behind each product.
  • Seller profile (on by default): the store's rating, review count, total sold, follower count, listed-product count, logo, official store link and category.
  • Deduplicates sellers across all three modes (by seller ID, then URL, then name).
  • Benchmark score (0–100) from the metrics TikTok shows: rating, sold count, reviews, product count, verification, sample products and price range.
  • Sample products: up to 5 product names and URLs, plus a sample price range, per seller. These come from products already fetched, so they cost no extra lookups.
  • Filters: minimum rating, sold count and product count. Filtered sellers aren't saved and aren't charged.
  • Flat, stable CSV/JSON output. If some lookups are refused, the actor still returns the sellers it found.

Run it with the defaults

Click Start without changing anything and the actor searches portable blender in the US marketplace. It returns up to 10 sellers with their profiles and sample products. Leaving every input empty runs that same sample search.


📥 Input

FieldTypeDefaultDescription
keywordsarray[]Product search keywords used to discover sellers (max 50). The form is prefilled with portable blender.
sellerUrlsarray[]Store URLs (https://shop.tiktok.com/us/store/<name>/<seller-id>) or bare numeric seller IDs.
productUrlsarray[]Product URLs (/view/product/<id> or /<region>/pdp/<slug>/<id>) or bare numeric product IDs.
regionstring"US"Marketplace: US, MY, TH, VN, PH, SG.
maxResultsinteger10Cap on saved unique seller rows across the whole run (1–5000).
maxProductsPerKeywordinteger30Search results scanned per keyword (1–500). One search page is about 30 products.
includeSellerProfilebooleantrueAdd rating, followers, product count, official store link and category (one lookup per seller).
includeSampleProductsbooleantrueAdd up to 5 sample products and a sample price range per seller.
minSellerRatingnumber0Drop sellers rated below this (0–5).
minSellerSoldCountinteger0Drop sellers with a total sold count below this.
minProductCountinteger0Drop sellers with fewer listed products than this.
strictFiltersbooleanfalseIf on, a seller missing a filtered field fails that filter.
deduplicatebooleantrueMerge the same seller found by different inputs into one row.

Seller URLs must contain the numeric seller ID. Handle-only links such as shop.tiktok.com/@store-name don't include one, so the actor skips them and logs why. You can paste the seller_id from any output row back in as an input.

Example: map the sellers behind two product searches

This is the input behind the sample output and screenshot below. It returned 20 unique sellers: 14 for portable blender and 6 for wireless earbuds.

{
"keywords": ["portable blender", "wireless earbuds"],
"region": "US",
"maxResults": 20,
"maxProductsPerKeyword": 15,
"includeSellerProfile": true,
"includeSampleProducts": true
}

Example: top-rated sellers only

{
"keywords": ["portable blender", "wireless earbuds"],
"region": "US",
"maxResults": 50,
"maxProductsPerKeyword": 90,
"minSellerRating": 4.5
}

Example: benchmark specific stores and the sellers of specific products

{
"sellerUrls": ["https://shop.tiktok.com/us/store/jbl/7494161853719414088"],
"productUrls": [
"https://shop.tiktok.com/us/pdp/ultimate-portable-juicer-blender-usb-rechargeable-smart-display-leak-proof-design-compact-500ml-size/1732167577605869836"
],
"region": "US"
}

Example: fastest seller list without profiles

{
"keywords": ["led strip lights"],
"region": "MY",
"maxResults": 100,
"maxProductsPerKeyword": 300,
"includeSellerProfile": false
}

📤 Output

One flat row per unique seller (26 fields):

FieldTypeDescription
seller_idstringTikTok Shop seller/store ID.
seller_namestringStore display name.
seller_urlstringStore URL (TikTok's own link when the profile is fetched; tracking removed).
seller_regionstringMarketplace region.
seller_logo_urlstringStore logo URL (not downloaded).
seller_ratingnumberStore rating (profile).
seller_review_countintegerStore review count (profile).
seller_sold_countintegerStore-level total sold (profile).
seller_product_countintegerNumber of listed products (profile).
seller_follower_countintegerStore follower count (profile; null for stores that don't show it).
seller_badgesstringStore badges, comma-separated. Currently always empty (see Limitations).
seller_verifiedbooleanAn official/verified flag or badge was found. Currently always false.
top_categorystringMost common category across the seller's sampled products.
sample_product_namesstringUp to 5 product names joined with |.
sample_product_urlsstringUp to 5 product URLs joined with |.
sample_product_countintegerNumber of sampled products.
lowest_sample_pricenumberLowest sample price.
highest_sample_pricenumberHighest sample price.
currencystringCurrency of the sample prices.
benchmark_scoreinteger0–100 transparent score.
benchmark_labelstringScore label (see below).
reason_tagsstringComma-separated score reasons.
source_input_typestringseller_url, product_url, or keyword.
source_input_valuestringThe input that found the seller.
source_product_urlstringThe product that exposed the seller (product and keyword modes).
scraped_atstringISO UTC timestamp.

Metrics TikTok doesn't expose for a store come back as null, never as an invented 0. Joined list fields come back as "". The profile fields (rating, reviews, sold count, product count, followers, logo, category) need Include seller profile.

Overview

Overview table view

Example output

A real row from the example run above (logo URL shortened):

{
"seller_id": "7494161853719414088",
"seller_name": "JBL",
"seller_url": "https://shop.tiktok.com/us/store/jbl/7494161853719414088",
"seller_region": "US",
"seller_logo_url": "https://p16-oec-general-useast5.ttcdn-us.com/tos-useast5-i-omjb5zjo8w-tx/2eae32bc80744404a8809b3fdc7e5a50~tplv-fhlh96nyum-resize-webp:300:300.webp?…",
"seller_rating": 4.7,
"seller_review_count": 31953,
"seller_sold_count": 245162,
"seller_product_count": 78,
"seller_follower_count": 493349,
"seller_badges": "",
"seller_verified": false,
"top_category": "Headphones, Earphones & Accessories",
"sample_product_names": "JBL Vibe Buds 2, True Wireless Noise Cancelling Earbuds",
"sample_product_urls": "https://shop.tiktok.com/us/pdp/jbl-vibe-buds-2-true-wireless-noise-cancelling-earbuds-8mm-driver/1732027908924150088",
"sample_product_count": 1,
"lowest_sample_price": 77.94,
"highest_sample_price": 77.94,
"currency": "USD",
"benchmark_score": 75,
"benchmark_label": "established_seller",
"reason_tags": "high_rating, high_sales, many_reviews, price_range_available",
"source_input_type": "keyword",
"source_input_value": "wireless earbuds",
"source_product_url": "https://shop.tiktok.com/us/pdp/jbl-vibe-buds-2-true-wireless-noise-cancelling-earbuds-8mm-driver/1732027908924150088",
"scraped_at": "2026-11-02T11:58:16.865Z"
}

Keyword searches usually surface one or two products per seller, so sample_product_count is often 1 in keyword mode. Store URLs sample up to 5 products from the store's catalogue.


🏅 Benchmark score

Transparent and rule-based (no AI), scored 0–100:

  • Rating up to 25 · Sold count up to 25 · Reviews up to 15 · Product count up to 15
  • Verified +10 · 3 or more sample products +5 · sample price range +5

Labels: strong_seller (80–100) · established_seller (60–79) · emerging_seller (40–59) · small_or_limited_signal (1–39) · unknown (0).

reason_tags explains each score, e.g. high_rating, high_sales, many_reviews, large_catalog, verified_seller, price_range_available, limited_visible_data. A metric TikTok doesn't show adds no points; it is never guessed.


🔍 Filtering & deduplication

  • Filters run after the profile lookup. Filtered sellers are not saved and not charged.
  • Missing values pass filters by default, so sellers aren't lost when TikTok hides a metric. Set strictFilters: true to make missing values fail.
  • Dedup priority: seller_id, then normalized seller_url, then seller_name + region, then seller_name + input. Duplicates are merged: non-null values win, store-URL data is preferred, and samples are combined up to 5.
  • The run stops looking up and saving sellers as soon as maxResults is reached.
  • Lookup limit with filters: each run looks up at most 2 × maxResults + 20 seller profiles. With strict filters most sellers fail, and once that limit is reached the actor stops, so it can return fewer than maxResults sellers. The log says so, and RUN_SUMMARY.skipped_by_lookup_cap counts the sellers left unchecked. To get more matches, raise maxResults or loosen the filters. Without filters the limit never applies.

💰 Pricing

Pay-per-event, one event, seller-result: charged once per valid, unique seller row saved to the dataset. Duplicates, filtered-out sellers, invalid rows, refused lookups, sellers skipped by the lookup limit and failed inputs are never charged. A run that finds nothing costs nothing in events. See the Pricing tab for the live rate (this README deliberately doesn't quote figures). Your per-run spending limit is respected: the actor stops saving sellers before it would exceed it.


📊 Run summary

A RUN_SUMMARY record is written to the default key-value store with: inputs_total, seller_urls_total, product_urls_total, keywords_total, successful_inputs, failed_inputs, raw_results_found, seller_candidates_found, results_saved, duplicates_removed, filtered_out, charged_events, charge_failures, blocked_requests, retry_count, profile_lookups, skipped_by_lookup_cap, runtime_seconds, region, scraped_at.


⚠️ Limitations

  • Markets: US, MY, TH, VN, PH, SG. Other TikTok Shop markets (UK, ID and others) currently return no data from the source.
  • V1 doesn't crawl full seller catalogues, product reviews or media.
  • TikTok Shop's store data currently carries no badges and no official/verified flag, so seller_badges is empty and seller_verified is false even for brand stores. The benchmark's verified bonus therefore doesn't apply at the moment.
  • A few stores don't show a follower count, so seller_follower_count is null for them. With Include seller profile off, all profile fields are null and the rating, sold-count and product-count filters only drop sellers when strictFilters is on.
  • Keyword search returns the products TikTok ranks for that term, and that set varies between runs. A narrow keyword can surface fewer sellers than maxResults.
  • TikTok occasionally refuses individual lookups. The actor retries, then saves the seller with the data it already has (identity and sample products) and records the refusal in blocked_requests.

❓ FAQ

Do I need a TikTok login or a proxy? No. There are no cookies, sessions or proxy settings.

Can I combine keywords, store URLs and product URLs? Yes, in a single run. Store URLs are processed first (cleanest data), then product URLs, then keywords.

Why is a seller missing some metrics? TikTok Shop doesn't publish every store metric. Missing numbers are stored as null. Turn on Include seller profile to get rating, reviews, sold count, followers and product count.

Why was my store URL skipped? It had no numeric seller ID (for example a /@handle link). Open the store on TikTok Shop and copy a URL containing /store/<name>/<id>, or paste the seller ID itself.