Skip to main content
Thirdwatchthirdwatch
E-commerce & products

Scrape TikTok Shop France Products for Research (2026 Guide)

Extract TikTok Shop France product data for market research. Prices, ratings, seller names, sold counts, and categories. Step-by-step Python API guide.

May 26, 2026 · 5 min read · 1,219 words
See the scraper →

Thirdwatch's TikTok Shop France Scraper extracts structured product data from TikTok Shop's French marketplace — prices in EUR, seller names, ratings, review counts, and units sold. Built for market researchers studying social commerce adoption in France, academics analyzing creator-driven retail, competitive intelligence teams benchmarking product categories, and anyone who needs structured TikTok Shop data without manual copy-paste.

Why scrape TikTok Shop France for research

TikTok Shop launched in France in 2024 and has grown into one of the most active social commerce channels in Western Europe. According to Statista's 2025 social commerce report, social commerce revenue in France is projected to exceed 8 billion EUR by 2027, with TikTok Shop capturing a rapidly growing share among 18-34 year-old consumers. For researchers, this marketplace is a live laboratory for studying how algorithmic content discovery shapes purchasing behavior.

The research use cases are concrete. A consumer-behavior researcher at a business school needs 5,000 product records across beauty, fashion, and electronics to study price elasticity on social platforms. A competitive intelligence analyst at a cosmetics brand wants weekly snapshots of every skincare product on TikTok Shop France to track new entrants and pricing shifts. A policy researcher studying platform economics needs seller-level data to measure market concentration. A PhD candidate analyzing review authenticity needs rating distributions and sold counts at scale. All of these reduce to the same structured workflow: pass search queries, collect product records with prices and social proof metrics, analyze in pandas or R.

How does this compare to the alternatives?

Approach Records per hour Reliability Setup time Maintenance
Manual browsing and copy-paste 20-50 Error-prone None Ongoing labor
Browser extension recorders 100-300 Breaks on UI changes 30 minutes Weekly fixes
Custom scraper (Playwright/Puppeteer) 500-2,000 Requires anti-bot engineering Days to weeks Constant
Thirdwatch TikTok Shop France Scraper Thousands per run Production-tested 5 minutes Thirdwatch handles changes

Browser extensions and manual methods work for one-off snapshots of 50 products. For reproducible research datasets at 1,000+ records, a maintained scraper API is the practical choice. The TikTok Shop France Scraper actor page handles TikTok's anti-bot protections and returns clean JSON — researchers focus on analysis, not scraping infrastructure.

How to scrape TikTok Shop France products in 5 steps

Step 1: How do I get an Apify API token?

Create a free account at apify.com (no credit card required for the free tier). Navigate to Settings, then Integrations, and copy your personal API token. Store it as an environment variable:

export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"

Step 2: How do I install the Apify Python client?

pip install apify-client

The apify-client library handles authentication, run management, and dataset retrieval in a single interface.

Step 3: How do I collect products across multiple categories?

Pass an array of French search terms covering your research categories. The actor searches TikTok Shop France for each query and returns structured product records.

from apify_client import ApifyClient
import json

client = ApifyClient("apify_api_xxxxxxxxxxxxxxxx")

run = client.actor("thirdwatch/tiktok-shop-france-scraper").call(
    run_input={
        "queries": [
            "soin visage",
            "coque telephone",
            "accessoire cuisine",
            "vetement femme",
            "maquillage",
        ],
        "maxResults": 200,
    }
)

items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(f"Collected {len(items)} products across 5 categories")

with open("tiktok_shop_france_raw.json", "w") as f:
    json.dump(items, f, ensure_ascii=False, indent=2)

Five queries at 200 max results gives you up to 1,000 product records per run — enough for most research designs.

Step 4: How do I structure the data for analysis?

Load the raw JSON into a pandas DataFrame and derive research-relevant columns.

import pandas as pd

df = pd.DataFrame(items)

# Discount depth as a research variable
df["discount_pct"] = (
    (df["original_price"] - df["price"]) / df["original_price"] * 100
).clip(lower=0).round(1)

# Social proof intensity
df["reviews_per_sale"] = (
    df["review_count"] / df["sold_count"].clip(lower=1)
).round(3)

# Category-level summary statistics
summary = df.groupby("source_query").agg(
    n_products=("product_id", "count"),
    median_price=("price", "median"),
    mean_rating=("rating", "mean"),
    median_sold=("sold_count", "median"),
    mean_discount=("discount_pct", "mean"),
).round(2)

print(summary)

Step 5: How do I build a longitudinal research dataset?

Schedule the actor on Apify's scheduler to run weekly. Append a timestamp column to each snapshot for time-series analysis.

from datetime import datetime

df["snapshot_date"] = datetime.utcnow().strftime("%Y-%m-%d")
df.to_csv(
    "tiktok_shop_france_longitudinal.csv",
    mode="a",
    header=not pathlib.Path("tiktok_shop_france_longitudinal.csv").exists(),
    index=False,
)

After 12 weekly snapshots, you have a panel dataset suitable for studying price dynamics, seller entry/exit, and seasonal demand patterns.

Sample output

Each product record contains the fields needed for structured research. Two representative records:

[
  {
    "product_id": "1729384756012345",
    "product_name": "Serum Vitamine C Visage - Anti-Taches Eclat",
    "seller_name": "BeauteLab Paris",
    "price": 12.99,
    "original_price": 24.99,
    "currency": "EUR",
    "rating": 4.7,
    "review_count": 1842,
    "sold_count": 8923,
    "category": "Soin Visage",
    "image_url": "https://p16-oec-va.ibyteimg.com/tos-maliva-i-xxxx/serum-vitc.jpg",
    "url": "https://www.tiktok.com/view/product/1729384756012345",
    "source_query": "soin visage",
    "marketplace": "TikTok Shop France"
  },
  {
    "product_id": "1729384756098765",
    "product_name": "Coque iPhone 15 Pro Silicone Souple Antichoc",
    "seller_name": "TechCase FR",
    "price": 6.49,
    "original_price": 14.99,
    "currency": "EUR",
    "rating": 4.3,
    "review_count": 567,
    "sold_count": 3210,
    "category": "Accessoires Telephone",
    "image_url": "https://p16-oec-va.ibyteimg.com/tos-maliva-i-xxxx/coque-iphone.jpg",
    "url": "https://www.tiktok.com/view/product/1729384756098765",
    "source_query": "coque telephone",
    "marketplace": "TikTok Shop France"
  }
]

sold_count and review_count together give you the review rate (reviews per sale), which is a useful proxy for product satisfaction and review solicitation intensity. original_price and price give you discount depth — a key variable in social commerce pricing research.

Common pitfalls

Three issues arise when building research datasets from TikTok Shop France. Query language matters — TikTok Shop France returns French-language product listings, so English search terms yield sparse or irrelevant results; always use French queries ("soin visage" not "face serum") for representative category coverage. Sold count is cumulative, not periodicsold_count reflects all-time units sold, not sales in a specific window; to estimate weekly sales velocity, you need two snapshots and the delta between them, which is why longitudinal collection matters for research. Seller name inconsistency — some sellers operate under slightly different names across product listings (e.g., "BeauteLab" vs "BeauteLab Paris"); normalize seller names with fuzzy matching before computing seller-level market share metrics.

A fourth subtlety specific to social commerce research: TikTok Shop product visibility is heavily influenced by creator promotion. A product with 8,000 sold units may have gotten 7,500 of those from a single viral video, not from organic search demand. If your research question is about organic marketplace dynamics, consider filtering out products with extreme sold-count spikes that coincide with known viral creator campaigns. Cross-reference with TikTok video data using our TikTok Scraper to identify creator-driven sales.

A fifth consideration for longitudinal research: price anchoring patterns. Many TikTok Shop France sellers display inflated original_price values to create the appearance of deep discounts. The ratio of price to original_price across your dataset reveals whether anchor pricing is a category-wide norm or isolated to specific seller segments. In the beauty category, discount depths of 40-60% are typical; in electronics accessories, 50-70% is common. Tracking these ratios over time shows whether price anchoring is intensifying as the marketplace matures — a finding relevant to both consumer-behavior research and regulatory analysis of misleading pricing practices under French consumer protection law.

Related use cases

Frequently asked questions

What product fields does the scraper return?

Each record includes product_id, product_name, seller_name, price, original_price, currency (EUR), rating, review_count, sold_count, category, image_url, url, source_query, and marketplace. These fields cover the core dimensions researchers need: product identity, pricing, social proof, and seller attribution.

Can I filter results by category or price range?

The actor accepts search queries, so you can narrow results by passing category-specific terms like 'soin visage' or 'accessoire telephone'. Post-collection filtering on price, rating, or sold_count in pandas or SQL gives you precise slices. The maxResults parameter controls volume per run.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.