Skip to content

PRO100CHOK/tiktok-shop-product-scraper-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TikTok Shop Product Scraper — Python Example

Scrape TikTok Shop products, reviews, stores, categories, and creator storefronts in Python. Bulk-extract best-sellers, prices, ratings, sales, and verified-buyer reviews from TikTok Shop US.

Apify Actor Python 3.10+ License: MIT

Working Python project that turns the TikTok Shop Scraper Apify actor into a programmable data feed for product research, dropshipping, affiliate marketing, and competitive intelligence on the fastest-growing live commerce platform in the US. Six scrape modes, JSON output, $2 per 1,000 records.

What this does

TikTok Shop's official Partner API is invite-only and gated to authorized retailers, sellers, and creators — not researchers. Most third-party scrapers get blocked within hours because TikTok aggressively fingerprints datacenter IPs. This project uses an Apify actor that runs server-side on residential US proxies, handles TikTok's bot detection, paginates the search / category / store / creator surfaces, fetches reviews via TikTok's internal review API, and returns clean JSON records to your Python script.

Use cases

  • Dropshipping product discovery — pull the top 100 best-selling products in a niche to surface trending items before they saturate.
  • Affiliate marketer research — see exactly which products an influencer is currently promoting on their TikTok Shop storefront.
  • Brand monitoring — track price changes, sales velocity, and new SKUs from your competitors' TikTok Shops.
  • Verified-buyer review mining — scrape only verified-purchase reviews of a product for honest sentiment data, filtered by star rating and media presence.
  • Category benchmarking — extract average price, rating distribution, and units-sold leaders for an entire TikTok Shop category.
  • Sales velocity tracking — schedule daily snapshots of the same product list and chart soldCount deltas over time.

Requirements

  • Python 3.10+
  • A free Apify account
  • No TikTok Shop seller account or Partner API key required

Quick start

git clone https://github.com/pro100chok/tiktok-shop-product-scraper-python.git
cd tiktok-shop-product-scraper-python
pip install -r requirements.txt
cp .env.example .env
# paste your APIFY_API_TOKEN
python main.py

main.py pulls the top 50 best-selling skincare products on TikTok Shop US and saves them to output.json + a clean output.csv sorted by sales velocity. Edit KEYWORD to scrape any niche — fitness gear, phone accessories, pet supplies, home decor, whatever your wedge is.

Six scrape modes

scrapeType switches between these surfaces of TikTok Shop:

scrapeType What goes in What comes out
search searchKeywords Product listings matching the keyword, with sort + filter.
product productUrls Full product details — variants, images, seller, description, embedded reviews.
reviews reviewProductUrls One dataset item per review with rating, text, media, verified flag, date.
category categoryUrls Products inside a /c/category-slug/ID page.
store storeUrls All products in a specific seller's storefront.
creator creatorUsernames Products currently promoted on a creator's TikTok Shop affiliate page.

How it works

The actor uses residential US IPs to access TikTok Shop's public-facing pages and JSON endpoints. For each scrapeType, it builds the right request payload, paginates through the result set, parses each record into a flat schema, and pushes it to the run's dataset. Your Python script reads the dataset via the official apify-client SDK.

Each scrape mode produces a different record shape — products have prices/ratings/sold counts, reviews have rating/text/buyer info, creators have a list of promoted products with affiliate metadata. See examples/ for working samples of each mode.

Example: top sellers for a keyword

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_API_TOKEN"])

run = client.actor("pro100chok/tiktok-shop-scraper-usage").call(run_input={
    "scrapeType": "search",
    "searchKeywords": ["smart watch"],
    "sortBy": "best_sellers",
    "maxItems": 50,
    "region": "us",
})

for it in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"${it['price']:>6}  {it.get('soldCount', 0):>6,} sold   {it['title'][:60]}")

Example output (product record)

{
  "title": "Honlink 5X Vitamin C Skincare Set with Hyaluronic Acid & Niacinamide",
  "price": 14.99,
  "originalPrice": 39.99,
  "rating": 4.7,
  "reviewCount": 12834,
  "soldCount": 84200,
  "seller": {
    "name": "Honlink Beauty",
    "rating": 4.8,
    "shopId": "1731753318135730868"
  },
  "url": "https://www.tiktok.com/shop/pdp/honlink-5x-vitamin-c-skincare-set/1731753318135730868",
  "images": ["https://p16-oec-...jpg", "..."],
  "variants": [
    { "name": "Set of 5", "price": 14.99, "stock": 1240 }
  ]
}

Input parameters

Parameter Type Used by Description
scrapeType string all One of search, product, reviews, category, store, creator.
searchKeywords string[] search One keyword per line (e.g. wireless earbuds).
sortBy string search relevance, best_sellers, price_asc, price_desc.
productUrls string[] product TikTok Shop product URLs.
reviewProductUrls string[] reviews Product URLs to fetch reviews for.
maxReviews integer reviews / product (if includeReviews) Cap on reviews per product.
reviewsSortBy string reviews recommended or recent.
reviewsFilterType string reviews all, verified, or with_media.
reviewsStarRating integer reviews 0 for all, or 15 to filter by exact rating.
categoryUrls string[] category TikTok Shop category URLs.
storeUrls string[] store Specific seller storefront URLs.
creatorUsernames string[] creator TikTok usernames (without @) for affiliate storefronts.
maxItems integer most modes Cap on products per query (0 = unlimited).
region string all TikTok Shop region. Currently us.
proxyConfiguration object all Residential US proxy required — TikTok blocks datacenter IPs.

More examples

File Demonstrates
examples/01_basic_usage.py Minimal search in 12 lines.
examples/02_product_reviews.py Sentiment summary from 100 verified-buyer reviews.
examples/03_creator_storefront.py Enumerate an influencer's promoted products.
examples/04_export_to_csv.py Category scrape with price-tier bucketing.
examples/05_export_to_google_sheets.py Daily best-seller snapshot to a shared Sheet.

FAQ

How much does this cost? The actor is charged per dataset item — products and reviews each count as one item. Apify's free $5/month covers a few thousand products / reviews per month.

Is the data the same as what I'd see on the TikTok Shop website? Yes. The actor uses the same public endpoints that power tiktok.com/shop — prices, ratings, sold counts, reviews match the live UI.

Why not the official TikTok Shop Partner API? That API is invite-only and limited to authorized sellers / creators / agencies. Independent researchers, dropshippers, and affiliate marketers can't use it. This scraper is the practical alternative.

Do you have a flat-rate monthly plan? Yes — the TikTok Shop Scraper rental plan at $20/month gives unlimited usage with the same code. If you only need a few thousand records per month, the pay-per-event variant linked at the top of this README is cheaper.

Can I scrape reviews from a specific star rating only? Yes. Set reviewsStarRating: 1 (or 2/3/4/5) to filter to a single rating. Useful for mining negative reviews to find unmet customer needs.

Does it work outside the US? Currently TikTok Shop US is the most reliable region — TikTok rolled out the US storefront broadly in 2025 and most product/review surfaces are stable. UK and SEA regions are partially supported; check the actor's notes.

How often does TikTok Shop block scrapers? Frequently — that's why residential US proxies are required by default. The Apify-hosted residential pool rotates IPs per request, which keeps the block rate well under 1% in practice.

Can I include reviews inline with each product? Yes. Use scrapeType: "product" and set includeReviews: true + maxReviews: N — each product record will have an embedded reviews array.

Related actors

See all my actors at apify.com/pro100chok.

License

MIT — see LICENSE.


Built on top of the TikTok Shop Scraper Apify actor.