Tiktok Shop Product All Data Scraper [No Login Required] ✅ avatar

Tiktok Shop Product All Data Scraper [No Login Required] ✅

Pricing

from $25.00 / 1,000 results

Go to Apify Store
Tiktok Shop Product All Data Scraper [No Login Required] ✅

Tiktok Shop Product All Data Scraper [No Login Required] ✅

Fetches TikTok Shop product detail, reviews, sales trend, and seller data for a list of product IDs in a given region, and merges them into a single combined record per product.

Pricing

from $25.00 / 1,000 results

Rating

0.0

(0)

Developer

Datamagnet

Datamagnet

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

2 days ago

Last modified

Share

Tiktok Shop Product All Data Scraper

Get combined TikTok Shop product data — listing details, pricing, sales performance, customer reviews, price/sales trend history, and seller information — merged into a single structured JSON record per product ID. No browser automation, no TikTok login, no scraping fragile HTML: just a product ID and a region in, a clean dataset out.

Built for dropshippers, TikTok Shop sellers, market researchers, and e-commerce analysts who need reliable, structured TikTok Shop data at scale instead of manually opening dozens of product pages.

What this actor does

For every product ID you provide, the actor fetches and merges:

  • Product details — name, category, price range, SKUs/variants, specifications, description blocks, images, commission rate, and lifetime + rolling-window (1d/7d/15d/30d/60d/90d) sales, views, video, and livestream stats.
  • Sales & price trend history — a ~60-day time series of price and sales snapshots so you can see whether a product is trending up or down.
  • Customer reviews — the most recent reviews with rating, review text, reviewer country, and seller replies.
  • Seller/shop information — seller name, rating, total sales volume, GMV, product count, and linked creator/influencer profile when available.

Product IDs are processed in parallel (up to 5 concurrent lookups) for fast bulk runs, with automatic retries on transient upstream failures. If a specific product ID can't be found or a lookup fails, that record gets an error field instead — one bad ID never stops the rest of the batch.

Key features

  • Bulk lookup — pass any number of product IDs in one run, one dataset row per ID.
  • All-in-one record — product, reviews, trend history, and seller data merged, so you don't have to call multiple endpoints or actors yourself.
  • Price & sales trend history — spot rising or declining products without tracking them manually over time.
  • Review sentiment at a glance — recent ratings and review text per product, ready for sentiment analysis or QA.
  • Seller due-diligence data — check a seller's rating, sales volume, and product count before sourcing from or competing with them.
  • Resilient by design — automatic retries with backoff on upstream errors/rate limits, and per-product error isolation so partial failures don't sink the whole run.
  • Stable, predictable schema — every output record has the same field shape, with null/empty placeholders when the upstream source doesn't provide a value for that product, so downstream pipelines never break on a missing key.
  • Region-aware — works across TikTok Shop marketplaces (e.g. US, GB, FR) by simply passing the region code.

Use cases

Use caseHow this actor helps
Dropshipping product researchBulk-check price, sales volume, and trend direction for a shortlist of candidate products before committing to them.
Competitor / price monitoringRe-run the same product IDs on a schedule and diff min_price/max_price/spu_avg_price and sales counts over time.
Winning product discoveryUse product_trends_data to spot products with accelerating sales or rising video/livestream activity.
Supplier / seller vettingCheck seller_info (rating, sale_cnt, gmv_amt, total_product_cnt) before sourcing from a seller or partnering with them.
Customer sentiment analysisFeed review_items into an LLM or sentiment model to summarize what buyers like or complain about.
Catalog & feed enrichmentEnrich an existing product catalog or ad feed with live TikTok Shop pricing and stats via the Apify API.
Market/category researchAggregate stats across many product IDs in a category to benchmark pricing and demand.

How it works

  1. You submit a list of product_ids and a region.
  2. For each ID, the actor calls the upstream data provider in parallel for: product detail, recent reviews, and price/sales trend history.
  3. If the product has a seller ID, it also fetches seller details and, when linked, the seller's creator/influencer profile.
  4. All responses are merged into one record shaped like the example below and pushed to the dataset — one row per product ID, in any order (since requests run concurrently).
  5. Failed or not-found lookups get a short, safe error message instead of raw upstream error details.

Input

FieldTypeRequiredDescription
product_idsarray of stringsyesOne or more TikTok Shop product IDs to fetch data for. One output record is produced per ID.
regionstringyesThe TikTok Shop marketplace/region code the product belongs to, e.g. FR, US, GB.

Example input:

{
"product_ids": ["1729502416141458141", "1729482902684408566"],
"region": "FR"
}

Where to find a product ID: it's the long numeric ID in a TikTok Shop product URL (e.g. .../product/1729502416141458141).

Output

The actor produces one dataset item per requested product ID. Example output item (truncated):

{
"product_id": "1729502416141458141",
"product_name": "Pistolet de Massage Musculaire, Anti-Douleur Sportif Massage gun...",
"region": "FR",
"category_id": "601450",
"min_price": 28.51,
"max_price": 28.51,
"spu_avg_price": 31.17,
"skus": "[{\"sku_id\":\"1729502416141523677\",\"real_price\":{\"price_str\":\"24,58 €\",\"price_val\":\"24.58\",\"currency\":\"EUR\"},\"stock\":396}]",
"total_sale_cnt": 39,
"total_sale_gmv_amt": 942.74,
"total_views_cnt": 1493,
"product_rating": 4,
"review_count": 6,
"product_trends_data": [
{ "dt": "2026-05-08", "spu_avg_price": 32.15, "total_sale_cnt": 35, "total_sale_gmv_amt": 815.88 }
],
"review_items": [
{
"review": {
"rating": 5,
"display_text": "Yes just what I wanted",
"review_timestamp_fmt": "16 March 2025",
"review_country": "United States",
"reply_main_review": "Thank you for this review!"
},
"review_user": { "name": "E**t R**s" },
"digg_count": 0
}
],
"seller_info": {
"seller_id": "8647242393349951222",
"seller_name": "JOYOYO Beauty",
"seller_rating": 4.2,
"sale_cnt": 6235,
"gmv_amt": 43405.81,
"total_product_cnt": 34,
"region": { "id": "FR", "name": null, "key": null }
}
}

If a product ID can't be found or the upstream lookup fails, its record instead contains just product_id, region, and an error string describing what went wrong (e.g. "Product not found."), so failures for one product don't stop the rest of the batch.

A few things to know about the output shape

  • Several fields are JSON-encoded strings, not native arrays/objects: cover_url, desc_detail, sale_props, skus, and specification are passed through from the upstream source as stringified JSON. Parse them (JSON.parse() / json.loads()) before using their contents.
  • Placeholders are always present, even when unavailable. Fields the upstream source doesn't return for a given product/seller (for example seller_info.category, seller_info.influencer, reviewer avatar/country in some regions, or seller response-rate/positive-feedback-rate) are still present in the output as null or "", so downstream consumers can rely on a stable schema instead of checking for missing keys.
  • Currency follows the requested region's local marketplace currency (also visible per-SKU inside the skus field's real_price.currency).
  • influencer_list and video_list are reserved fields, always returned as empty arrays for schema stability.

Output field reference

Core product fields

FieldTypeDescription
product_idstringThe requested TikTok Shop product ID.
product_namestringProduct title.
regionstringRegion code the product was fetched for.
category_id / category_l2_id / category_l3_idstringCategory taxonomy IDs at 3 levels.
min_price / max_pricenumberPrice range across all SKUs, in the region's local currency.
spu_avg_pricenumberAverage sale price across recent transactions.
discountstringDiscount label, "-" if none.
free_shippingint (0/1)Whether free shipping is offered.
product_commission_ratenumberAffiliate/commission rate for the product.
skusstring (JSON)Variants with SKU ID, sale properties, price, and stock.
sale_propsstring (JSON)Variant option definitions (e.g. color, size).
specificationstring (JSON)Product spec sheet (name/value pairs).
desc_detailstring (JSON)Rich product description (text + image blocks).
cover_urlstring (JSON)Product cover images with display order.
seller_idstringID of the seller/shop for this product — used to fetch seller_info.
first_crawl_dtint (YYYYMMDD)Date the product was first indexed by the data source.

Lifetime & windowed performance metrics

The following metric families are each returned as a lifetime total plus rolling windows: 1d, 7d, 15d, 30d, 60d, 90d (e.g. total_sale_cnt, total_sale_7d_cnt, total_sale_30d_cnt, …).

Metric familyDescription
total_sale_*_cnt / total_sale_gmv_*_amtUnits sold and gross merchandise value.
total_views_*_cntProduct page views.
total_video_*_cnt / total_video_sale_*_cnt / total_video_sale_gmv_*_amtShort videos featuring the product, and sales attributed to video.
total_live_*_cnt / total_live_sale_*_cnt / total_live_sale_gmv_*_amtLivestreams featuring the product, and sales attributed to livestreams.
total_ifl_*_cnt / total_ifl_video_*_cnt / total_ifl_live_*_cntNumber of distinct creators/influencers promoting the product, overall and via video/livestream.

product_trends_data (array)

A time-series snapshot covering roughly the last 60 days, one entry approximately every few days.

FieldTypeDescription
dtstring (date)Snapshot date.
spu_avg_pricenumberAverage price on that date.
total_sale_cnt / total_sale_1d_cntintCumulative and that-day unit sales.
total_sale_gmv_amt / total_sale_gmv_1d_amtnumberCumulative and that-day GMV.
total_video_cnt / total_live_cnt / total_ifl_cntintVideo, livestream, and influencer counts as of that date.

Reviews & ratings

FieldTypeDescription
product_ratingnumberOverall product star rating.
review_countintNumber of reviews included in this run (most recent page, up to 20).
review_count_str / review_count_str_v2stringDisplay-formatted review count, e.g. "(6)".
top_textstringUI label from the source, e.g. "Pick authentic and helpful reviews for you".
review_items[]arrayIndividual reviews, see below.
review_card_ui_abobjectInternal UI/A-B-test metadata from the source; safe to ignore.

Each entry in review_items[]:

FieldTypeDescription
review.ratingintStar rating (1–5).
review.display_textstringReview text.
review.review_timestamp_fmtstringHuman-readable review date.
review.review_countrystringReviewer's country, when available.
review.reply_main_reviewstringSeller's reply to the review, if any.
review_user.namestringMasked reviewer name (e.g. "E**t R**s").
sku_id / sku_specificationstringWhich product variant was reviewed.
digg_countintNumber of likes on the review.
review_source_namestringe.g. "Verified purchase".

seller_info (object)

FieldTypeDescription
seller_id / seller_name / seller_linkstringSeller identity.
profile_urlstring or nullLink to the seller's TikTok creator profile, when linked to a TikTok account.
seller_ratingnumberSeller's overall rating.
imagesarray of stringsSeller/shop cover image(s).
regionobject{ id, name, key }name/key are placeholders (null) today.
influencerobject or nullLinked creator profile (user_id, unique_id, nick_name, profile_url, avatar_url, follower/video/like counts) when the seller is tied to a TikTok creator account; null otherwise.
sale_cnt / sale_30d_cntnumberLifetime and last-30-day units sold across the seller's catalog.
gmv_amt / gmv_30d_amtnumberLifetime and last-30-day gross merchandise value.
total_ifl_cntnumberInfluencers promoting this seller's products.
total_video_cnt / total_live_cntnumberVideos/livestreams featuring this seller's products.
total_product_cnt / seller_product_cntnumberProducts listed / indexed for this seller.
first_timeint (YYYYMMDD)Date the seller was first indexed.
categorynullPlaceholder — not returned by the upstream source.
review_count / followers_count / response_rate / positive_feedback_ratestringPlaceholders (empty string "") — not returned by the upstream source today.

Error records

If a lookup fails, the dataset item is just:

{
"product_id": "1729502416141458141",
"region": "FR",
"error": "Product not found."
}

Other possible error messages: "Failed to fetch product details from the upstream data provider.", "Upstream data provider rejected the request (authentication error).", "Upstream data provider rate limit reached; please retry later.", "Upstream data provider is temporarily unavailable; please retry later.", or "Failed to reach the upstream data provider; please retry later."

FAQ

What TikTok Shop regions/marketplaces are supported? Any region/country code supported by the underlying data source (e.g. US, GB, FR, DE). Pass the code that matches the product's TikTok Shop marketplace.

How many product IDs can I submit in one run? There's no hard limit in the input — submit as many as you need. They're processed with up to 5 concurrent lookups at a time to keep runs fast without overloading the data source.

How far back does the price/sales trend history go? Roughly the last 60 days.

How many reviews do I get per product? The most recent page of reviews available at run time (up to 20), not the full review history.

What happens if a product ID is invalid, removed, or the lookup fails? That record contains product_id, region, and an error field describing the issue — it won't stop or fail the rest of the batch.

Can I get just reviews or just seller data, without the full product record? No — this actor always returns the combined record. If you only need one piece (e.g. just reviews), simply read that field from the output and ignore the rest.

Is the price in USD or local currency? Prices reflect the local currency of the marketplace specified in region (also visible per-SKU in the skus field's real_price.currency).

Why are some fields null or empty? The upstream data source doesn't provide certain fields for every product or seller (e.g. seller response rate, some reviewer details). Those fields are still included as null/"" rather than omitted, so your integration's schema never breaks on a missing key.

Notes

  • Product IDs are batched in parallel (up to 5 concurrent lookups at a time) to keep runs fast without overloading the data source.
  • Reviews reflect the most recent page (up to 20) available for the product at run time, not full review history.
  • Trend data covers roughly the last 60 days.
  • Requests to the upstream data source are automatically retried on transient failures; persistent failures are reported per-product via the error field rather than failing the whole run.